[CMP-9273](https://youtrack.jetbrains.com/issue/CMP-9273) Using Kotlin
2.2.20 in user project cause build error
## Release Notes
### Fixes - Resources
- _(prerelease fix)_ Fixed compatibility with Kotlin 2.2.20 on Web
Update test projects for Gradle plugin to use direct dependencies
instead of aliases
Describe proposed changes and the issue being fixed
Fixes [CMP-9183](https://youtrack.jetbrains.com/issue/CMP-9183)
## Testing
Existing tests should continue to pass
## Release Notes
N/A
Fixes https://youtrack.jetbrains.com/issue/CMP-8873
## Testing
Tested manually. Swift export is experimental
## Release Notes
### Fixes - Resources
- Update iOS resource copying to an iOS app bundle to support Swift
Export libraries
Deprecate Gradle plugin dependency aliases and provide direct
replacement.
Fixes [CMP-7613](https://youtrack.jetbrains.com/issue/CMP-7613) Consider
deprecating aliases `compose.material3`, etc in favour of using Gradle
version catalog
## Testing
Run a sample app, open build.gradle.kts, apply all suggested
replacements.
## Release Notes
### Migration Notes - Multiple Platforms
- Dependency aliases in Gradle plugin (e.g. `compose.ui`) are now
deprecated. Use provided direct artifact coordinates and add them to the
version catalog.
Use Web Cache API for all resources
The Cache is reset on every app launch (page refresh).
The initial idea was to reset the Cache only when a new session starts,
but we risk to have an outdated resources state (it can be incompatible
with the app logic expectations and lead to crashes).
Fixes https://youtrack.jetbrains.com/issue/CMP-7996
## Testing
This should be tested by QA
## Release Notes
### Fixes - Resources
- Use Web Cache API for all resources to avoid repeated and redundant
HTTP requests
Partially addresses https://youtrack.jetbrains.com/issue/CMP-9075
But it doesn't ultimately fix the FOUC problem. In many cases font
preloading will be necessary to improve the UX.
Describe proposed changes and the issue being fixed
## Testing
- This should be tested by QA
## Release Notes
### Fixes - Resources
- Use the non-empty font as a default when awaiting for a asynchronous
request completion on web
The web demo stopped compiling after updating to 1.9.0 due to deprecated
API usages.
This PR uses ComposeViewport API and unifies the Js and Wasm main.kt
## Testing
N/A
## Release Notes
N/A
Handle a case when Int.Locale('...') is created without a region - then
use an empty string for region.
Fixes https://youtrack.jetbrains.com/issue/CMP-6930
## Testing
- Added a test
- This should be tested by QA
## Release Notes
### Fixes - Resources
- Fix a crash when calling `getString` and the Locale has no region
specified
Support for Compose Resources in native macOS executables.
- Added a new integration test `macosExecutableResources` to verify
resource copying for macOS executables.
- Updated `configureNativeApplication.kt` to pass Compose resource
directories from Kotlin Native binaries to the packaging task.
- Resources are now copied into the `.app/Contents/Resources` directory
for packaged macOS applications.
- Packaging tasks for macOS now depend on the corresponding resource
copying task.
## Testing
Executing tasks: [:compose:test-Gradle(9.0.0)-Agp(8.9.0), --tests,
org.jetbrains.compose.test.tests.integration.ResourcesTest.macosExectuableResources]
## Release Notes
### Fixes - Resources
- Fixed an issue where resources were not copied when packaging the
macOS native target, causing the application to crash when it attempted
to read those resources.
This PR is a supposed fix for
https://youtrack.jetbrains.com/issue/CMP-8990
Basically the problem is that `copyRecursively` does not guarantee
execution flag to be preserved
## Testing
`./gradlew checkComposeCases`
## Release Notes
N/A
It fixes Robolectric tests where a context is available through
InstrumentationRegistry
Fixes https://youtrack.jetbrains.com/issue/CMP-6612
## Release Notes
### Fixes - Resources
- Fix resource access in a Robolectric test environment.
Fixes https://youtrack.jetbrains.com/issue/CMP-6676
## Release Notes
### Features - Resources
- Add `setResourceReaderAndroidContext` to configure Android context in
cases when a provider initialization is not available.
I had a situation when the folder was empty, and the git log collected
commits from the parent repo compose-multiplatform instead of
compose-multiplatform-core
## Release Notes
N/A
- Remove windows skiko image (moved to skiko repo -
https://github.com/JetBrains/skiko/pull/1096)
- Combined into unified `linux-tests` image
- Preinstalled Android SDK allows removing this step from 4 build stages
- Ubuntu 22.04 -> 24.04
- Update JDK to 17 -> 21
- Update Google Chrome 121 -> 140, and use specifc pinned version
instead of "latest"
- Update Firefox 138 -> 142, and use specifc pinned version instead of
"latest"
Related fixes:
- CI change: https://jetbrains.team/p/ui/reviews/49
- Missing JDK 17 fix -
51a87ca55c
- Failing HTML tests on Chrome 140 - #5426
- Failing Compose Web test tests on Firefox 142 -
https://github.com/JetBrains/compose-multiplatform-core/pull/2398
## Release Notes
N/A