Releases: JetBrains/compose-multiplatform
1.7.0-alpha01
Changes since 1.6.11
Highlights
- Compose Multiplatform resources are stored in the android assets now. This fixes Android Studio Preview and cases such as a rendering resource files in WebViews or Media Players
- Shared Element Transitions
- Safe Args in Navigation Compose
Breaking changes
Android
Features
iOS
- Initial iOS floating cursor support
- Added
accessibilityEnabled: Boolean = true
argument toUIKitView
andUIKitViewController
preferredStatusBarStyle
,preferredStatysBarAnimation
andprefersStatusBarHidden
are added toComposeUIViewControllerDelegate
to allow status bar appearance modification
Desktop
- Add constructor with
RenderSettings
toComposePanel
. Added a classRenderSettings
withval isVsyncEnabled: Boolean?
. When set totrue
gives a hint to renderer implementation of the particularComposePanel
to reduce the latency between the input and visual changes in exchange for possible screen tearing - Add public
moveEnabled
andpositionPercentage
setters inSplitPaneState
Resources
- Speed resources web rendering up by the reading a cached value instantly
- If there is no resource with suitable density, use resource with the most suitable density, otherwise use default (similar to the Android logic)
- Add a customization for resources directories. Now it is possible to use e.g downloaded resources
Fixes
Multiple Platforms
- Fix "ComposePanel. Focus moves to child after focusing/unfocusing the main window"
- Don't show code completion for non-existenst API in
commonMain
that fails on Android withNoSuchMethodException
- Fix order of interop elements in some cases
- Fixed
Popup
jerking during ripple effect animation - Fix applying
ShaderBrush
to part ofAnnotatedString
- Fix text
brush
animation and optimized updating some visual text properties (applying time is reduced up to 40%) - Fix initial cursor position in the empty
TextField
with explicitly setTextAlignment
- Fix focus for editable
TextField
insideExposedDropdownMenuBox
iOS
- Pressing directional keys on a physical keyboard connected to iOS device doesn't cause a crash
- Dismissing popup or dialogue within a very short timespan after its creation doesn't cause a crash
- Fix missing invalidations during native view resize
- Fixed a memory spike when continuously resizing the
ComposeUIViewController
(such as when used in modal sheet presentation context with different detents) - visibility of selection handles in single-line textfields with LTR + RTL text in iOS
Desktop
- Fix possible
UninitializedPropertyAccessException
indesktopTest
- Fixed
ComposePanel.requestFocus()
, making it correctly assign focus to the first focusable child - When using
ComposePanel
inside a Swing application on macOS, VoiceOver will now correctly go into theComposePanel
when traversing accessible elements - When using
ComposePanel
inside a Swing application on Windows with NVDA turned on, focus will now correctly go into theComposePanel
when traversing with (ctrl)-shift-tab - Correctly save
WindowState
with unspecifiedsize
instead of crashing - Fix
IndexOutOfBoundsException
crash on Windows when traversing a11y elements
Web
- Process
keydown
andkeyup
keys for identified keys from virtual keyboard - Allow preloading the fallback fonts. This enables the usage of emojis and other unicode characters without manually composing the Text with AnnotatedString
- Make sure the web app distribution doesn't contain a duplicate
skiko.wasm
Resources
- Delete
contextClassLoader
usage on JVM targets - Create an empty resource dir with "podspec" task instead "podInstall"
- Fix resource accessors escaping. Now it is possible to use resources with names: "package", "is", "item_$xxx" etc
- Read exactly requested count of bytes from InputStream on jvm platforms
Gradle Plugin
- Make sure tryGetSkikoRuntimeIfNeeded is executed only during the task execution
- Delete outdated build services
Dependencies
-
Gradle Plugin
org.jetbrains.compose
, version1.7.0-alpha01
. Based on Jetpack Compose libraries: -
Lifecycle libraries
org.jetbrains.androidx.lifecycle:lifecycle-*:2.8.0
. Based on Jetpack Lifecycle 2.8.0 -
Navigation libraries
org.jetbrains.androidx.navigation:navigation-*:2.8.0-alpha08
. Based on Jetpack Navigation 2.8.0-beta03
1.7.0-dev1703
Merged Navigation 2.8.0-beta03
1.7.0-dev1698
Merged Material 3 1.3.0-beta03
1.7.0-dev1686
Merged Compose 1.7.0-beta03
1.6.20-dev1673
[resources] Read exactly requested count of bytes from InputStream on… … jvm platforms. (#4943) In some cases the skip and read methods may handle less bytes then expected. The PR fixes it by proper API on the JVM and manual check on the Android. Fixes https://github.com/JetBrains/compose-multiplatform/issues/4938 ## Testing I manually checked it on the project from the issue. ## Release Notes ### Fixes - Resources - Read exactly requested count of bytes from InputStream on jvm platforms.
1.6.20-dev1667
v1.6.20-dev1667 Add 1.6.11 to changelog (#4905)
1.6.20-dev1663
[gradle] Fix resource accessor name escaping. (#4901) Fixes https://github.com/JetBrains/compose-multiplatform/issues/4548 ## Testing Add compose resources with name such as "package", "is" or "item_$xxx" and check that app compiles and works fine. Accessors should be properly escaped ## Release Notes ### Fixes - Resources - Fix resource accessors escaping. Now it is possible to use resources with names: "package", "is", "item_$xxx" etc
1.6.11
Changes since 1.6.10
Fixes
Multiple Platforms
- Fix endless re-layout when layout is invalidated by measure, which includes measuring
TextField(singleLine=true)
withIntrinsicSize
- Fix container size for
Dialog
centering insideImageComposeScene
iOS
Desktop
- Fix
DropdownMenu
/Popup
positioning when a window is moved to a screen with a different density - Fix possible scrolling without animation on some mouse models
Web
Resources
Gradle Plugin
Dependencies
-
Gradle Plugin
org.jetbrains.compose
, version1.6.11
. Based on Jetpack Compose libraries: -
Lifecycle libraries
org.jetbrains.androidx.lifecycle:lifecycle-*:2.8.0
. Based on Jetpack Lifecycle 2.8.0 -
Navigation libraries
org.jetbrains.androidx.navigation:navigation-*:2.7.0-alpha07
. Based on Jetpack Navigation 2.7.7
1.6.20-dev1646
v1.6.20-dev1646 CfW: rely on exact configuration names to find the dependencies (#4828)
1.6.10
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)
Breaking changes
- Since Kotlin
2.0-RC2
, the additionalorg.jetbrains.kotlin.plugin.compose
Gradle plugin is required. See the migration guide
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
- Basic IME keyboard support
- Some experimental Compose Multiplatform Gradle plugin APIs for web app configuration were deprecated. Their usage is not required anymore.
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
- Delete the experimental mark from the stable resources library API
- Add functions to retrieve bytes from drawable or font resources
- To disable the Compose Resources publication and the multimodule support in cases of problems add
org.jetbrains.compose.resources.multimodule.disable=true
to the rootgradle.properties
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
- Fix Kotlin/Native can't use
T::class
in inline function of@Composable
- Fix missing recomposition after showing
Dialog
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
- Fixed appearing of text editing menu (#1269, #1293)
- Fix content rect calculation in
SelectionManager
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
- [Fix c...