Releases: JetBrains/compose-multiplatform
Releases · JetBrains/compose-multiplatform
1.6.10-beta02
Changes since 1.6.10-beta01
Known issues
lifecycle-runtime
breaks Compose UI compatibility with Java 11 on desktop, it requires Java 17 or above now. Expected to be fixed in1.6.10-rc01
navigation-compose:2.8.0-*
on Android brings Compose1.7.*
dependency and might cause compatibility issues with1.6.*
Features
Lifecycle
- Publish additional targets for non-compose modules
- Commonize
inline fun <reified VM> viewModel(..)
- Provide
ViewModelStoreOwner
by Compose view
Resources
- Delete the experimental mark from the stable resources library API
- Add functions to retrieve bytes from drawable or font resources
Navigation
Fixes
Multiple Platforms
- Fix Kotlin/Native can't use
T::class
in inline function of@Composable
- Fix missing recomposition after showing
Dialog
- (prerelease fix) Fix shadow behind dialogs in platform-layer mode
iOS
- Fixed appearing of text editing menu (#1269, #1293)
- Fix content rect calculation in
SelectionManager
- (prerelease fix) Fix crash on loading
UITextLoupeSession
on old iOS versions - (prerelease fix) Fix memory leaks (#1292, #1302)
Desktop
- Sync all AccessibilityControllers when an a11y query is received
- Fix crash when modifying Compose state from a non-UI thread
- Close
Popup
/Dialog
by clicking any mouse button outside - (prerelease fix) Fix
KeyEvent
binary compatibility
Web
- Fix
MouseEvent
toPointerButton
mapping - Correct virtual keyboard mode resolution
- (prerelease fix) Correct
Key.isTypedEvent
behavior
Navigation
- (prerelease fix) Fix overriding dependency visibility
- (prerelease fix) Fix finding graph without route
Dependencies
-
Gradle Plugin
org.jetbrains.compose
, version1.6.10-beta02
. Based on Jetpack Compose libraries: -
Lifecycle libraries
org.jetbrains.androidx.lifecycle:lifecycle-*:2.8.0-beta01
. Based on Jetpack Lifecycle 2.8.0-beta01 -
Navigation libraries
org.jetbrains.androidx.navigation:navigation-*:2.8.0-alpha02
. Based on Jetpack Navigation 2.8.0-alpha05
1.6.10-dev1599
[resources] Add functions to retrieve bytes from drawable or font res… …ources. (#4651) Implemented two new experimental functions: ```kotlin /** * Retrieves the byte array of the drawable resource. * * @param environment The resource environment, which can be obtained from [rememberResourceEnvironment] or [getSystemResourceEnvironment]. * @param resource The drawable resource. * @return The byte array representing the drawable resource. */ @ExperimentalResourceApi suspend fun getDrawableResourceBytes( environment: ResourceEnvironment, resource: DrawableResource ): ByteArray {...} /** * Retrieves the byte array of the font resource. * * @param environment The resource environment, which can be obtained from [rememberResourceEnvironment] or [getSystemResourceEnvironment]. * @param resource The font resource. * @return The byte array representing the font resource. */ @ExperimentalResourceApi suspend fun getFontResourceBytes( environment: ResourceEnvironment, resource: FontResource ): ByteArray {...} ``` fixes https://github.com/JetBrains/compose-multiplatform/issues/4360
1.6.10-dev1596
Update compose compiler version to 1.5.10.2 (#4652) version bump & test added for reified generic in composable functions Fixes #3147
1.6.10-dev1593
Update compose compiler version to 1.5.10.2 (#4652) version bump & test added for reified generic in composable functions Fixes #3147
1.6.10-dev1590
Delete the experimental mark from the stable resources library API (#… …4623) And remove internal testing methods
1.6.10-dev1584
Hot fix integration with cocoapods (#4628) Get the cocoapods extension from the kotlin instead project object and configure task dependency lazy
1.6.10-beta01
Changes since 1.6.2
Highlights
- Experimental multiplatform support of
Lifecycle
andViewModel
. See documentation for details - Experimental multiplatform support of Jetpack Navigation. See documentation for details or check out the nav_cupcake project which was converted from the Navigate between screens with Compose Android codelab
- Support multi-module projects and libraries publication with Compose resources (Kotlin
2.0.0-Beta05
or higher is required)
Known issues
⚠️ Crash at startup on pre-iOS 17 devices due to loadingUITextLoupeSession
lifecycle-runtime
breaks Compose UI compatibility with Java 11 on desktop, it requires Java 17 or above now.inline fun <reified VM> viewModel(...)
is not available from common due to compiler bug. Please usefun <VM> viewModel(KClass, ...)
overload instead- Compose Multiplatform doesn't provide default
ViewModelStoreOwner
yet. For usingViewModel
s outside ofNavHost
you need to provide custom store owner viaLocalViewModelStoreOwner
Features
Multiple Platforms
- Add font rasterization settings in paragraph style
- Localize internal strings in
ui
,material
andmaterial3
iOS
- Magnifier for iOS 17+
- Support software keyboard inset in
Dialog
- iOS a11y dialogues and popups integration
- OS logging integrated with
trace
- Support accessibility scroll
- Improve iOS a11y sync behavior
- Add throttle for text context menu updates
- Support a11y for interop views
- Support
HapticFeedback
on iOS - iOS support
LiveRegion
semantics in a11y
Desktop
- Add an
alwaysOnTop
flag toDialogWindow
- Basic support of
BasicTextField2
: #1227, #1264 full support and support for other platforms is planned for 1.7.0
Web
- Listen to browser clipboard events and bind them with Compose TextFieldSelectionManager and SelectionManager
- Introduce ComposeViewport function that renders content in parent container
- Introduce minimal virtual keyboard support
Resources
- Support three letters locales
- Add DSL to configure compose resources
- Support plural string resource
- Add option to disable compose resources generation
- XML resource optimizations
- Get resource files as URI
- Support source set's hierarchy for compose resources
- Support SVG drawables for non android platforms
Gradle Plugin
- Add possibility to modify the macOS minimum version
- Make desktop preview task fully configuration cache compliant
- Option to pack jars as uber JAR, support Proguard for uber JAR
Fixes
Multiple Platforms
- Fix
NaN
font metrics by initializing typeface forTextStyle
- Fix render order of interop views
- Reimplement SortedSet for JS/Native to improve performance
- Allow drawing outside of platform layers
- Prevent a few unnecessary re-compositions in
Popup
andDesktopMenu
- Propagate composition locals to layers in the (re)composition phase
- Move the effects and synthetic events dispatching to after the draw phase in the render loop
iOS
- Fix keyboard disappear on IME action
- Fix nested scroll when
Pager
involved in scrolling process - Fix a11y wrong bounds calculation
- Delay tap indication inside scroll
- Fix keyboard opening when scrolling begins within a
TextField
- Fix IME window insets and view offset when keyboard appears
- Fix animation frozen after app went background
Desktop
- Fix nested scrolling on mouse wheel
- Trigger fling callbacks on mouse wheel scroll (fixes
Pager
and lazy column/row spanning) - Fix
Pager
direction detection for mouse wheel - Fix missing clicks inside
SelectionContainer
- Fix clipping bounds of
SwingPanel
- Locale-aware date formatting for desktop
- Pass the id of the node whose layout changed to accessibility controllers
WINDOW
layer fixes: #1181, #1185, #1187, #1189- Fix crash when we resize
ComposePanel
after re-adding it to the hierarchy - Fix propagation of
LocalLocalization
- Re-show the tooltip on mouse-move following a click in TooltipArea
- Fix the direction of scrolling when pressing on the scrollbar track with
reverseLayout=true
- Fix crash and allow selection in
SelectionContainer
to start when drag starts below the bounds of the visible text - Fix a crash on Windows without
dcomp.dll
Web
- Implement actual
fun isCopyKeyEvent
- Fix metadata compilation
- Support
sendKey
test utility function on wasm target - Send correct window sized on resize
- Dispose all listened events alongside with the application being disposed
- Modify
buttonFlags
only onPress
andRelease
- Fix keyboard mappings
- Correct density rounding in
ComposeWindow::resize
Resources
- [Fix resource accessors compilation when there are huge number of resource...
1.6.10-dev1583
v1.6.10-dev1583 [resources] Support SVG drawables for non android platforms (#4605)
1.6.10-dev1580
Option to pack jars as uber JAR, support Proguard for uber JAR (#4136) ## Proposed changes 1. Added support to join JARs to the uber JAR with ProGuard, disabled by default: ``` compose.desktop { application { buildTypes.release.proguard { joinOutputJars.set(true) } } } ``` 2. All 'release' tasks now really depend on ProGuard, as stated in [tutorial](https://github.com/JetBrains/compose-multiplatform/tree/master/tutorials/Native_distributions_and_local_execution#minification--obfuscation). ## Testing - A new auto test - Manual: 1. Test on Windows/macOs/Linux 2. Test the new Gradle parameter `joinOutputJars`: ``` compose.desktop { application { buildTypes.release.proguard { joinOutputJars.set(true) } } } ``` `false` (by default) should generate multiple jars (except for `package*UberJarForCurrentOS`) `true` should generate a single jar in a result distribution 3. Test debug tasks: ``` run runDistributable createDistributable packageUberJarForCurrentOS ``` 4. Test release tasks: ``` runRelease runReleaseDistributable createReleaseDistributable packageReleaseUberJarForCurrentOS ``` The jars should be reduced in size (because Proguard is enabled in the release mode) This should be test by QA. ## Issues fixed Fixes https://github.com/JetBrains/compose-multiplatform/issues/4129 --------- Co-authored-by: Igor Demin <igordmn@users.noreply.github.com>
1.6.10-dev1578
v1.6.10-dev1578 Compose 1.6.2