Skip to content

0.12.0

Latest

Choose a tag to compare

@joffrey-bion joffrey-bion released this 25 Aug 00:01
· 106 commits to main since this release
Immutable release. Only release title and notes can be modified.

Full Changelog: v0.11.1...v0.12.0

See our release blog post (coming soon) for the highlights, and to learn about the tooling improvements.

Breaking changes

  • KTC-172 — Remove support for kotlin.languageFeatures
  • KTC-5221 — Update default JDK version to 25
  • KTC-5237 — Align Ktor dependency catalog with the published ktor-version-catalog
  • KTC-5368 — Update default Compose version to 1.11.1
  • KTC-5369 — Update default kotlinx.serialization version to 1.11.0
  • KTC-5370 — Update default KSP version to 2.3.9
  • KTC-5419 — Remove deprecated CLI options --root, --build-output, --shared-caches-root
  • KTC-5462 — Remove iosX64 from supported platforms of ios/app product type
  • KTC-5539 — Bump default Android minimum level to 24
  • KTC-5625 — Deprecate android.maxSdk
  • KTC-5632 — Update default Kotlin version to 2.4.10
  • KTC-5635 — Update default Ktor version to 3.5.2
  • KTC-5636 — Update default DataFrame version to 1.0.0-rc01
  • KTC-5637 — Update default JUnit Platform version to 6.1.3
  • KTC-5638 — Update default kotlinx.rpc version to 0.10.3
  • KTC-5639 — Update default KSP version to 2.3.11
  • KTC-5640 — Update default Spring Boot version to 4.1.0
  • KTC-5687 — Enforce a specific Xcode scheme for the xcode project
  • KTC-5702 — Remove macosX64 from the default platforms of the macos/app product type
  • KTC-5708 — Raise minimum JDK version to 17
  • KTC-5712 — Raise minimum Kotlin version to 2.2.20
  • KTC-5728 — Align the --modules option in publish with other --module options
  • KTC-5729 — Require transitivity flag for kotlin publish -m module

New features

  • KTC-719 — Support KMP libraries publication
  • KTC-721 — KMP metadata compilation
  • KTC-2139 — Support project-root-relative (//) paths
  • KTC-4474 — Allow depending on JVM libraries in JVM+Android "common" fragments (modules)
  • KTC-4511 — Kotlin incremental compilation for JVM targets
  • KTC-4881 — Support dataframe compiler plugin
  • KTC-5042 — Support dependency type = pom and scope != import
  • KTC-5270 — Maven packaging type support: Kotlin Toolchain ignores artifacts of libraries published with packaging type POM
  • KTC-5272 — Publish Gradle module metadata in addition to pom.xml
  • KTC-5437 — Commonize cinterop klibs
  • KTC-5452 — Support Android SDK 37
  • KTC-5475 — Compose Hot Reload support for standalone CLI with fs watcher
  • KTC-5483 — Allow controlling which checksums are published to Maven Central
  • KTC-5486 — MCP server for Compose Hot Reload
  • KTC-5569 — Add build task for wasm-js
  • KTC-5570 — Add run task for wasm-js/app
  • KTC-5572 — Implement support of transitive NPM dependencies
  • KTC-5585 — Support commonized cinterops as as an input of KMP metadata compilation
  • KTC-5608 — Tab completion for kotlin do command names
  • KTC-5610 — Tab completion for module names in the -m/--module option of various commands
  • KTC-5696 — Support configuring the Gradle distribution URL (mirror)
  • KTC-5699 — Allow customizing Android build tools version

Cosmetics

  • KTC-4233 — Use a widget to show test progress
  • KTC-5414 — DataFrame compiler plugin pollutes console logs
  • KTC-5604 — Rename XCodeProject target build phase and its shell script

Usability improvements

  • KTC-839 — Missing credentials file should not prevent the build from working
  • KTC-4491 — Compiler warnings are not replayed on cache hit
  • KTC-4691 — Make ./amper run ask interactively for the module to run when there are multiple
  • KTC-4846 — Report reference syntax/resolution diagnostics with precise ranges
  • KTC-5006 — Add diagnostic for JDK version compatibility with Kotlin version
  • KTC-5181 — Invalid version catalog key reference produces repeated duplicate error messages
  • KTC-5200 — Maven converter: add a flag to enable all compatibility plugins during conversion
  • KTC-5453 — Stop publishing unnecessary checksum files for .asc signatures to Maven Central
  • KTC-5457 — No compose resources library added if no resources present
  • KTC-5500 — Add PowerAssert runtime library implicitly when PowerAssert is enabled
  • KTC-5503 — Add incremental caching for publishing to Maven local
  • KTC-5504 — Cleaner logging for publishing to Maven local
  • KTC-5515 — Nicely formatted diagnostics reported by tasks
  • KTC-5552 — Deprecate the watchosArm32 platform
  • KTC-5596 — The run command redirects the app's output preventing interactive TUI
  • KTC-5623 — Allow defining minor versions of compile SDK
  • KTC-5626 — Make AndroidVersion an integer instead of an enum
  • KTC-5683 — Add wasm/app module to the Compose Multiplatform template
  • KTC-5700 — Add diagnostic for minimum supported JDK
  • KTC-5714 — Java incremental compilation shows Unsafe warning on JDK 24+
  • KTC-5720 — Kotlin compiler warning in JDK 24+ about native access by JansiLoader
  • KTC-5721 — Metadata compilation warning in JDK 24+ about Unsafe access by FastJarFileSystemKt

Fixed bugs

  • KTC-4398 — Room KSP iOS Build Failure
  • KTC-4751 — Gradle warning in Android-based example projects
  • KTC-5234 — Unable to publish iOS app: KotlinModules.framework being installed outside the app bundle during xcodebuild archive
  • KTC-5244JAVA_HOME warning logs Object array reference instead of actual path value
  • KTC-5261 — Android AAR dependency is passed directly to kotlinc classpath, causing unresolved references
  • KTC-5312 — amper init fails unclearly when an existing path has a different shape than the template expects
  • KTC-5395 — internal declarations inaccessible in native test source sets
  • KTC-5417 — Internal error when passing invalid compiler args with Kotlin 2.4.0
  • KTC-5423 — Task progress visually messes with stdin when running with kotlin run
  • KTC-5443 — Progress bar and/or terminal progress sporadically stays upon task failure
  • KTC-5445 — Wasm compiler warning with Kotlin 2.4.0+
  • KTC-5449 — Nested BOM-to-BOM dependency declared in Gradle metadata of external dependency is not used for resolving unspecified dependency version.
  • KTC-5461 — IDE sync runs cinterop for all declared platforms of linux/app, even when only host platform is needed
  • KTC-5463 — Downloading a dependency with a classifier fails
  • KTC-5464 — Android R class generation is incorrectly cached
  • KTC-5495 — Non-normalized --project-dir breaks module dependencies
  • KTC-5502jvm/lib module can't be added as a dependency to Android fragment
  • KTC-5531 — Respect settings.publishing.checksums for non-central repos
  • KTC-5554 — Module name can be . if --project-dir=. is used
  • KTC-5563 — Dependencies are not resolved in a multiplatform context if a library PSM descriptor contains variants with empty list of visible source sets
  • KTC-5583 — Support AARs without classes.jar and include libs/*.jar on the classpath
  • KTC-5593kotlin init --target-dir=<path> should create the target directory when it does not exist
  • KTC-5600 — compose-hot-reload-mcp-server: java.lang.NullPointerException: Cannot invoke "String.toLowerCase(java.util.Locale)" because "version" is null
  • KTC-5627 — The same dependency but with different classifier resolved from pom.xml is ignored
  • KTC-5628 — Path used in maven activation profile condiiton is not interpolated
  • KTC-5630 — System properties must be taken into account while substituting variables in pom.xml
  • KTC-5641 — Tests output contains ? symbols instead of some characters
  • KTC-5642 — Maven profile declared for unix family is not activated on macOS
  • KTC-5643 — Dependencies are not resolved for native android targets
  • KTC-5644 — Maven profile should be activated when all activation criteria has been satisfied
  • KTC-5649 — AAR maven test-dependencies never reach the Android test KSP classpath
  • KTC-5650 — Every per-platform POM of a published KMP library pins ONE platform's dependency variant
  • KTC-5652 — "Publish" on a source-less module crashes with an internal NoSuchElementException
  • KTC-5654 — Stray non-Kotlin files under src/ fail ./kotlin publish while build and test are green
  • KTC-5662 — NoSuchMethodError in delegated Gradle build
  • KTC-5680 — Invalid checksums and signatures are calculated for KLib artifacts
  • KTC-5693 — wasm-js/app: Compose resources are not packaged into the app output (MissingResourceException at runtime)
  • KTC-5709 — Disabling of default repositories doesn't work
  • KTC-5717 — Default index.html for Wasm Web app has cropped viewport
  • KTC-5723 — getLineAndColumnRangeInPsiFile: Read access is allowed from inside read-action only
  • KTC-5748 — // paths are treated as UNC paths on Windows

IDE Improvements

These changes are available in the Kotlin Toolchain plugin for IntelliJ IDEA 2026.2.1.

New features

  • KTC-576 — Suggest composeResources directory name when creating new directory
  • KTC-872 — Automatically regenerate composeResources accessors in the IDE
  • KTC-4449 — Multiplatform compose preview support in common fragment
  • KTC-5387 — Provide a check and quick fix for "Composable function call without Compose enabled"
  • KTC-5394 — Implement support for Android Compose preview
  • KTC-5413 — Support // paths in the IDE
  • KTC-5438 — Support commonized cinterop libs in IDE
  • KTC-5440 — Support Compose resources code insight
  • KTC-5530 — IDE support for Dataframe compiler plugin
  • KTC-5571 — Run gutter for main function of wasm-js/app
  • KTC-5581 — Show inlays with coordinates for catalog libraries

Cosmetics

  • KTC-4526 — "Add Amper module to project" should try to insert alphabetically
  • KTC-5467 — Support sub-element diagnostic ranges in IDE
  • KTC-5672 — Auto-generated run configurations are inconsistently named

Usability improvements

  • KTC-5360 — Quickfix for sorting the list of modules in project.yaml
  • KTC-5433 — Android preview doesn't work without adding few runtime dependencies as compile ones
  • KTC-5548 — Links inside diagnostics produced by the Kotlin compiler (>= 2.4.0) are not clickable in IDE
  • KTC-5584 — Documentation for catalog dependency using version.ref doesn't show the actual version
  • KTC-5609 — IDE: Support cinterop being visible in test sources
  • KTC-5616 — Kotlin source file with Android preview resets the caret to the top on project sync
  • KTC-5671 — Clear old auto-generated run configurations
  • KTC-5673 — Use created Xcode configuration when producing run configuration from ios/app module file
  • KTC-5679 — Create default run configurations for K/N and Wasm apps

Fixed bugs

  • KTC-955 — Old android run configuration stays after renaming a module
  • KTC-956 — java.lang.IllegalStateException: Maximum one AppleWorkspace can be created per project.
  • KTC-3892 — New Swift file doesn't get Kotlin-Swift interop automatically
  • KTC-4294 — Android R class is not detected by the IDE
  • KTC-4330 — No device selector for ios-app run configuration in compose-multiplatform project
  • KTC-4345 — IllegalStateException: interface BuildSystemFilePreviewServices is not available for AmperProjectSystem
  • KTC-4363 — ViewController() invocation is red in compose-multiplatform project
  • KTC-4798 — Add module dependency moves the comment to the newly added line
  • KTC-5083 — Navigation to the built-in plugin scheme properties does not work
  • KTC-5386 — "Composable function call without Compose plugin" is false positively reported in the Kotlin Toolchain projects
  • KTC-5388 — Exception when building Android projects
  • KTC-5405 — Provisioned JDK post rename
  • KTC-5431 — Same library commonized for different platforms might be incorrectly deduplicated
  • KTC-5441 — Support Compose Resources in Android Preview
  • KTC-5459 — Regression: Compose Hot Reload running composable from lib cause an error
  • KTC-5460 — Previews don't work if depend on another module
  • KTC-5496 — Layout Inspector: Go to declaration for Compose nodes doesn't work in Kotlin Toolchain Android projects
  • KTC-5509 — Cinterop libraries from plugins are not added to module dependencies
  • KTC-5517 — Android Live Edit fails with "Desugaring is not supported"
  • KTC-5520 — Android app run fails with "Unable to find Gradle tasks to build"
  • KTC-5522 — Desktop compose preview doesn't work
  • KTC-5526 — Preview in android source set fails to render when using compose resources
  • KTC-5551 — androidApp: no module is available in run configurations
  • KTC-5562 — Entity SdkEntity is already created in a different builder
  • KTC-5653 — Error on sync for project with Compose resources due to missing task for KTC 0.11.1
  • KTC-5655 — Update version fix doesn't work for shorthand objects
  • KTC-5689 — Live Edit doesn’t work if an application depends on a library with dependency of a different version
  • KTC-5701 — Support AARs with libs/*.jar in the IDE
  • KTC-5753 — Debugger incorrectly chooses the source in case of class clash
  • KTC-87949 — Spring run configuration does not pass environment variables to the app