Releases: JetBrains/compose-multiplatform
1.6.0-rc01
Changes since 1.6.0-beta02
Known issues and solutions
Could not find "org.jetbrains.compose.annotation-internal:annotation"
(or org.jetbrains.compose.collection-internal:collection), link
It happens because some library depends on 1.6.0-beta02
which isn't binary compatible with 1.6.0-rc01
.
To find this library, call ./gradlew shared:dependencies
(replace shared
by your main module). Downgrade this library or ask the library author to upgrade it to 1.6.0-rc01
.
Could not find androidx.annotation:annotation:...
(or org.jetbrains.compose.collection-internal:collection)
It happens because 1.6.0
depends on collection and annnotation libraries that are available only in the Google Maven repository.
To solve this, add google()
maven repository to build.gradle.kts
:
repositories {
...
google()
}
iOS/desktop/web
Fixes
- Fix "DropdownMenu performs onDismissRequest twice"
- Use a large rectangle for the picture bounds in RenderNodeLayer.drawLayer to prevent clipping
- Fix closing scene during scroll animation
- Fix "Using
painterResource(:DrawableResource)
outside desktop Window can produceUnsatisfiedLinkError
" - Fix "Rect::makeLTRB expected l <= r" crashes
- (prerelease fix) Commonize BasicTooltipBox
- (prerelease fix) Fix sharing composition locals with new platform layers
iOS
Fixes
- Fixed unexpected fling animation over scrolling content
- (prerelease fix) Fix "Wrong scroll behaviour of LazyColumn inside HorizontalPager"
- (prerelease fix) Fix scene size after sending the app to background or changing orientation with open modal
Desktop
Fixes
- Protect against
MouseInfo.getPointerInfo()
returning null inWindowDraggableArea
- Support Rtl in
SplitPane
- Fix a native crash on
makeGL
- (prerelease fix) Fix "Skiko RenderException" when creating
ComposePanel
Web
Fixes
- Add a
SystemThemeObserver
implementation for wasmJs - Fix keyboard events with meta key on wasm/js targets
- Added WASM to
components.uiToolingPreview
library - Fix "The cursor is invisible in compose web"
Gradle Plugin
Fixes
- (prerelease fix) Relocate a bundled
KotlinPoet
to the internal package
Resource library
Fixes
- (prerelease fix) Add a type name to the resource initializers
- (prerelease fix) Don't make resource IDs lowercased
- (prerelease fix) Clean code-gen directory if there was deleted a dependency on the res library
- (prerelease fix) Register all hierarchical compose resources in android compilation
- (prerelease fix) Fix fonts duplication in android app
Dependencies
This version of Compose Multiplatform is based on the next Jetpack Compose libraries:
1.6.0-dev1419
Fix Gradle MPP tests (android.useAndroidX) (#4287) It fails with: ``` Configuration `:jvmRuntimeClasspath` contains AndroidX dependencies, but the `android.useAndroidX` property is not enabled, which may cause runtime issues. :jvmRuntimeClasspath -> org.jetbrains.compose.desktop:desktop-jvm-linux-x64:0.0.0-dev1418 -> org.jetbrains.compose.desktop:desktop:0.0.0-dev1418 -> org.jetbrains.compose.desktop:desktop-jvm:0.0.0-dev1418 -> org.jetbrains.compose.material:material:0.0.0-dev1418 -> org.jetbrains.compose.material:material-desktop:0.0.0-dev1418 -> org.jetbrains.compose.annotation-internal:annotation:0.0.0-dev1418 -> androidx.annotation:annotation:1.7.1 :jvmRuntimeClasspath -> org.jetbrains.compose.desktop:desktop-jvm-linux-x64:0.0.0-dev1418 -> org.jetbrains.compose.desktop:desktop:0.0.0-dev1418 -> org.jetbrains.compose.desktop:desktop-jvm:0.0.0-dev1418 -> org.jetbrains.compose.material:material:0.0.0-dev1418 -> org.jetbrains.compose.material:material-desktop:0.0.0-dev1418 -> org.jetbrains.compose.annotation-internal:annotation:0.0.0-dev1418 -> androidx.annotation:annotation:1.7.1 -> androidx.annotation:annotation-jvm:1.7.1 :jvmRuntimeClasspath -> org.jetbrains.compose.desktop:desktop-jvm-linux-x64:0.0.0-dev1418 -> org.jetbrains.compose.desktop:desktop:0.0.0-dev1418 -> org.jetbrains.compose.desktop:desktop-jvm:0.0.0-dev1418 -> org.jetbrains.compose.foundation:foundation:0.0.0-dev1418 -> org.jetbrains.compose.foundation:foundation-desktop:0.0.0-dev1418 -> org.jetbrains.compose.collection-internal:collection:0.0.0-dev1418 -> androidx.collection:collection:1.4.0 :jvmRuntimeClasspath -> org.jetbrains.compose.desktop:desktop-jvm-linux-x64:0.0.0-dev1418 -> org.jetbrains.compose.desktop:desktop:0.0.0-dev1418 -> org.jetbrains.compose.desktop:desktop-jvm:0.0.0-dev1418 -> org.jetbrains.compose.foundation:foundation:0.0.0-dev1418 -> org.jetbrains.compose.foundation:foundation-desktop:0.0.0-dev1418 -> org.jetbrains.compose.collection-internal:collection:0.0.0-dev1418 -> androidx.collection:collection:1.4.0 -> androidx.collection:collection-jvm:1.4.0 ``` (https://teamcity.jetbrains.com/buildConfiguration/JetBrainsPublicProjects_Compose_Publish_2_All_2/4484004?hideTestsFromDependencies=false&hideProblemsFromDependencies=false&expandBuildTestsSection=true&expandBuildChangesSection=true&expandBuildDeploymentsSection=false&expandBuildProblemsSection=true) after we added annotation/collection to desktop target dependencies. It seems that Android plugin checks all JVM classpathes, including pure JVM (desktop) ones. And fails, if the project doesn't have this property. Adding this property, as the Android fails without it as well.
1.6.0-dev1409
build(kn-performance): use compose 1.5.10 to fix the build (#4173) Error: Compose Multiplatform 1.5.1 doesn't support Kotlin 1.9.20.
1.6.0-dev1405
Improve handling of special characters in string resources (#4220) Introduced a function to process and replace certain escaped symbols like '\n', '\t', and '\uXXXX' in the strings extracted from compose string resources.
1.6.0-beta02
Changes since 1.6.0-beta01
Highlights
- Basic accessibility support iOS
- Popups/Dialogs can now be displayed outside a ViewController over native components on iOS by default iOS
- Allow selecting
Text
inSelectionContainer
by double and triple tap iOS - Add support for text decoration line styles via PlatformTextStyle iOS, desktop, web
- Bugfixes in the resource library (see below for the details)
iOS/desktop/web
Fixes
- Fix "
TextLayoutResult#getLineForVerticalPosition
returns wrong value + slow performance" - Run all effects before sending synthetic events
- (prerelease bug) Fix the pointer icon in
SelectionContainer
iOS
Features
- Adjust overscroll effect params to match iOS animations
- Add ability to change opacity for compose view
Fixes
- Fix UIKitView z-order
- Fix missing case for loading
SystemFont
on iOS - Fix selection container crash
- Fix
WindowInfo.containerSize
withoutplatformLayers
flag - (prerelease fix) Fix "textfield with visual transformation crashes after single tap"
- (prerelease fix) Fix selection handles crossed
- (prerelease fix) Fix CMPViewControllerMisuse error
- (prerelease fix) Fix selection handles with platformLayers=true
- (prerelease fix) Fix interaction handling for interop views
Desktop
Fixes
Breaking changes and deprecated API
HTML library
Features
Gradle Plugin
Features
Resource library
Fixes
- (prerelease fix) Configure Android resources after AGP is applied and ignore hidden files in resources
- (prerelease fix) Generate Res class if there is no common composeResource dir
- (prerelease fix) Support Res class generation in JVM only compose projects
- (prerelease fix) Support Compose resources for iOS tests
- (prerelease fix) Fix sub-module gradle properties for res class generation
- (prerelease fix) Fix Native xml parser
- (prerelease fix) Generate initializer functions in the Res file to avoid the
MethodTooLargeException
- (prerelease fix) Improve handling of special characters in string resources
- (prerelease fix) Add a
ttf
font to the resources demo app
Dependencies
This version of Compose Multiplatform is based on the next Jetpack Compose libraries:
1.6.0-dev1397
Use "project.findProperty" instead of "providers.valueOrNull" to fix … …sub-module gradle properties for res class generation
1.5.12
Common
Features
Desktop
Fixes
Dependencies
This version of Compose Multiplatform is based on the next Jetpack Compose libraries:
1.6.0-dev1383
Mark all resources public API as experimental. (#4146) And all public but only for generated code API as @InternalResourceApi
1.6.0-dev1378
Mark all resources public API as experimental. (#4146) And all public but only for generated code API as @InternalResourceApi
1.6.0-beta01
Highlights
- Resource library improvements (an example project)
- Experimental support is available for tests in common code
- Compose for Web (Wasm) artifacts are available in Maven Central. Warning: Kotlin 1.9.21 has an issue with web target. Use Kotlin 1.9.22.
- iOS. Native-like caret behaviour by long/single taps in textfields(1, 2)
- Support
LineHeightStyle.Trim
- Desktop. Proper clipping of
SwingPanel
interop (under an experimental flag, see the link) - Popups/Dialogs can now be displayed outside the main window or panel over native components on iOS and desktop (under experimental flags, see the links)
- Add a way to use fonts installed on the system (desktop/web in this version, iOS in the next version, Android isn't supported)
Breaking changes
- Text with
lineHeight
set is trimmed by default - Text with
fontSize
set withoutlineHeight
insideMaterialTheme
has different line height - Resource library (
compose.components.resources
) changes- resources from
*Main\resources
should be moved to*Main\composeResources\drawable
,commonMain\composeResources\font
or*Main\composeResources\files
depending on the resource type painterResource("resource.xml")
should be replaced bypainterResource(Res.drawable.resource)
- resources from
Known issues
compose.components.resources
library doesn't work yet if you applykotlin("jvm")
Gradle plugin. For now, it only works withkotlin("multiplatform")
Common
Features
iOS/desktop/web
Features
Fixes
- Optimise
TextLayoutResult#getLineForOffset
- Fix "SwingPanel/UIKitView doesn't apply Modifier.offset if it's after Modifier.size"
- DatePicker. Fix empty row
- DatePicker. Fix selection of the current day
- Fix
LayoutCoordinates.localToWindow
coordinates conversion for non-full Compose components
Breaking changes and deprecated API
- Deprecate
public ComposeScene
in favour of@InternalComposeUiApi MultiLayerComposeScene
- Hide deprecated DropdownMenu overloads
iOS
Features
Fixes
Desktop
Features
- Support select till the end of the file / till the start of the file keyboard actions on Windows
- Add LinuxArm64 target to Compose runtime
- Add dedicated feature flags class for desktop
Fixes
- Fix blurry app icon in the system application switcher
- Insert a new line on
NumPadEnter
- Don't restart the drag gesture when the
onDrag(matcher=
changes - Fix "BasicTextField NPE-crash on JBR 17.0.9 on Linux when clicked"
- Fix "Resizing window on desktop sometimes triggers onClick handlers of Composables"
- Fix "
ComposePanel
doesn't calculate its preferredSize correctly when it's called before doLayout" - Fix input methods on JBR, disable input methods when we lose focus
- Fix "BasicTextField could not input any Chinese character when using JBR"
- Take into account
enabled
inscrollable
for mouse input - Fix NPE for getComponentAfter/Before in ComposePanel
- Transparency support for D3D (previously it supported via fallback on OpenGL)
Web
Features
Fixes
HTML library
Features
Gradle Plugin
Features
Fixes
Dependencies
This version of Compose Multiplatform is based on the next Jetpack Compose libraries: