·
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
iosX64from supported platforms ofios/appproduct 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
macosX64from the default platforms of themacos/appproduct type - KTC-5708 — Raise minimum JDK version to 17
- KTC-5712 — Raise minimum Kotlin version to 2.2.20
- KTC-5728 — Align the
--modulesoption inpublishwith other--moduleoptions - 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 docommand names - KTC-5610 — Tab completion for module names in the
-m/--moduleoption 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 runask 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
watchosArm32platform - KTC-5596 — The
runcommand redirects the app's output preventing interactive TUI - KTC-5623 — Allow defining minor versions of compile SDK
- KTC-5626 — Make
AndroidVersionan integer instead of an enum - KTC-5683 — Add
wasm/appmodule 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-5244 —
JAVA_HOMEwarning logsObjectarray 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-5502 —
jvm/libmodule 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-5593 —
kotlin 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
testsources - 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 declarationfor 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