{"id":13510,"name":"androidx.test.espresso:espresso-core","ecosystem":"maven","repository_url":null,"issues_count":624,"created_at":"2025-06-06T23:30:13.613Z","updated_at":"2025-06-06T23:30:13.613Z","purl":"pkg:maven/androidx.test.espresso:espresso-core","unique_repositories_count":386,"unique_repositories_count_past_30_days":13,"recent_issues":[{"uuid":"5440319369","node_id":"PR_kwDOUZA9f88AAAABDVjxQg","number":5,"state":"closed","title":"chore: bump the androidx group in /kaasu-android with 11 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-09-13T14:13:13.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-13T13:26:18.000Z","updated_at":"2026-09-13T14:13:15.000Z","time_to_close":2815,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore: bump","group_name":"androidx","update_count":11,"packages":[{"name":"androidx.core:core-ktx","old_version":"1.15.0","new_version":"1.19.0"},{"name":"androidx.navigation:navigation-compose","old_version":"2.8.5","new_version":"2.10.1"},{"name":"androidx.hilt:hilt-navigation-compose","old_version":"1.2.0","new_version":"1.4.0"},{"name":"androidx.room:room-runtime","old_version":"2.7.0","new_version":"2.8.5"},{"name":"androidx.room:room-ktx","old_version":"2.7.0","new_version":"2.8.5"},{"name":"androidx.room:room-compiler","old_version":"2.7.0","new_version":"2.8.5"},{"name":"androidx.fragment:fragment-ktx","old_version":"1.8.5","new_version":"1.9.0"},{"name":"androidx.hilt:hilt-work","old_version":"1.2.0","new_version":"1.4.0"},{"name":"androidx.hilt:hilt-compiler","old_version":"1.2.0","new_version":"1.4.0"},{"name":"androidx.test.ext:junit","old_version":"1.2.1","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.6.1","new_version":"3.7.0"}],"path":"/kaasu-android","ecosystem":"maven"},"body":"Bumps the androidx group in /kaasu-android with 11 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| androidx.core:core-ktx | `1.15.0` | `1.19.0` |\n| androidx.navigation:navigation-compose | `2.8.5` | `2.10.1` |\n| androidx.hilt:hilt-navigation-compose | `1.2.0` | `1.4.0` |\n| androidx.room:room-runtime | `2.7.0` | `2.8.5` |\n| androidx.room:room-ktx | `2.7.0` | `2.8.5` |\n| androidx.room:room-compiler | `2.7.0` | `2.8.5` |\n| androidx.fragment:fragment-ktx | `1.8.5` | `1.9.0` |\n| androidx.hilt:hilt-work | `1.2.0` | `1.4.0` |\n| androidx.hilt:hilt-compiler | `1.2.0` | `1.4.0` |\n| androidx.test.ext:junit | `1.2.1` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.6.1` | `3.7.0` |\n\nUpdates `androidx.core:core-ktx` from 1.15.0 to 1.19.0\n\nUpdates `androidx.navigation:navigation-compose` from 2.8.5 to 2.10.1\n\nUpdates `androidx.hilt:hilt-navigation-compose` from 1.2.0 to 1.4.0\n\nUpdates `androidx.room:room-runtime` from 2.7.0 to 2.8.5\n\nUpdates `androidx.room:room-ktx` from 2.7.0 to 2.8.5\n\nUpdates `androidx.room:room-compiler` from 2.7.0 to 2.8.5\n\nUpdates `androidx.room:room-ktx` from 2.7.0 to 2.8.5\n\nUpdates `androidx.room:room-compiler` from 2.7.0 to 2.8.5\n\nUpdates `androidx.fragment:fragment-ktx` from 1.8.5 to 1.9.0\n\nUpdates `androidx.hilt:hilt-work` from 1.2.0 to 1.4.0\n\nUpdates `androidx.hilt:hilt-compiler` from 1.2.0 to 1.4.0\n\nUpdates `androidx.hilt:hilt-compiler` from 1.2.0 to 1.4.0\n\nUpdates `androidx.test.ext:junit` from 1.2.1 to 1.3.0\n\nUpdates `androidx.test.espresso:espresso-core` from 3.6.1 to 3.7.0\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/abdulhakeem19/kaasu/pull/5","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/abdulhakeem19%2Fkaasu/issues/5","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/5/packages"},{"uuid":"5439146765","node_id":"PR_kwDORIzpkc8AAAABDUrjOg","number":308,"state":"open","title":"Android: Bump the android-dependencies group in /android with 20 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-13T08:49:34.000Z","updated_at":"2026-09-13T09:11:21.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Android: Bump","group_name":"android-dependencies","update_count":20,"packages":[{"name":"gradle-wrapper","old_version":"9.4.1","new_version":"9.7.1","repository_url":"https://github.com/gradle/gradle"},{"name":"com.google.code.gson:gson","old_version":"2.11.0","new_version":"2.14.0","repository_url":"https://github.com/google/gson"},{"name":"androidx.core:core-ktx","old_version":"1.13.1","new_version":"1.19.0"},{"name":"androidx.test.ext:junit","old_version":"1.2.1","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.6.1","new_version":"3.7.0"},{"name":"androidx.compose:compose-bom","old_version":"2026.02.01","new_version":"2026.09.00"},{"name":"androidx.navigation:navigation-compose","old_version":"2.8.4","new_version":"2.10.1"},{"name":"androidx.security:security-crypto","old_version":"1.1.0-alpha06","new_version":"1.1.0"},{"name":"com.squareup.okhttp3:okhttp","old_version":"4.12.0","new_version":"5.5.0","repository_url":"https://github.com/lysine-dev/okhttp"},{"name":"org.jetbrains.kotlinx:kotlinx-serialization-json","old_version":"1.7.3","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.serialization"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-android","old_version":"1.9.0","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-play-services","old_version":"1.9.0","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"com.google.android.gms:play-services-auth","old_version":"21.4.0","new_version":"22.0.0"},{"name":"com.patrykandpatrick.vico:compose-m3","old_version":"2.0.2","new_version":"3.3.1","repository_url":"https://github.com/patrykandpatrick/vico"},{"name":"androidx.core:core-splashscreen","old_version":"1.0.1","new_version":"1.2.0"},{"name":"androidx.browser:browser","old_version":"1.8.0","new_version":"1.10.0"},{"name":"com.google.ai.edge.litertlm:litertlm-android","old_version":"0.16.0","new_version":"0.17.0","repository_url":"https://github.com/google-ai-edge/LiteRT-LM"},{"name":"com.android.application","old_version":"9.2.0","new_version":"9.4.0"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.2.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.2.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"}],"path":"/android","ecosystem":"maven"},"body":"Bumps the android-dependencies group in /android with 20 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `9.4.1` | `9.7.1` |\n| [com.google.code.gson:gson](https://github.com/google/gson) | `2.11.0` | `2.14.0` |\n| androidx.core:core-ktx | `1.13.1` | `1.19.0` |\n| androidx.test.ext:junit | `1.2.1` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.6.1` | `3.7.0` |\n| androidx.compose:compose-bom | `2026.02.01` | `2026.09.00` |\n| androidx.navigation:navigation-compose | `2.8.4` | `2.10.1` |\n| androidx.security:security-crypto | `1.1.0-alpha06` | `1.1.0` |\n| [com.squareup.okhttp3:okhttp](https://github.com/lysine-dev/okhttp) | `4.12.0` | `5.5.0` |\n| [org.jetbrains.kotlinx:kotlinx-serialization-json](https://github.com/Kotlin/kotlinx.serialization) | `1.7.3` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-android](https://github.com/Kotlin/kotlinx.coroutines) | `1.9.0` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-play-services](https://github.com/Kotlin/kotlinx.coroutines) | `1.9.0` | `1.11.0` |\n| com.google.android.gms:play-services-auth | `21.4.0` | `22.0.0` |\n| [com.patrykandpatrick.vico:compose-m3](https://github.com/patrykandpatrick/vico) | `2.0.2` | `3.3.1` |\n| androidx.core:core-splashscreen | `1.0.1` | `1.2.0` |\n| androidx.browser:browser | `1.8.0` | `1.10.0` |\n| [com.google.ai.edge.litertlm:litertlm-android](https://github.com/google-ai-edge/LiteRT-LM) | `0.16.0` | `0.17.0` |\n| com.android.application | `9.2.0` | `9.4.0` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.2.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.2.10` | `2.4.20` |\n\nUpdates `gradle-wrapper` from 9.4.1 to 9.7.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gradle/gradle/releases\"\u003egradle-wrapper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.7.1\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.7.1.\u003c/p\u003e\n\u003cp\u003eThis is a patch release for 9.7.0. We recommend using 9.7.1 instead of 9.7.0.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of 9.7.0 release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIsolated Projects graduates to incubating\u003c/li\u003e\n\u003cli\u003eBroader Configuration Cache compatibility\u003c/li\u003e\n\u003cli\u003eResilient Sync helps you fix broken builds\u003c/li\u003e\n\u003cli\u003eMore source locations in problem reports\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gradle.org/9.7.1/release-notes.html\"\u003eRead the Release Notes\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe would like to thank the following community members for their contributions to this release of Gradle:\n\u003ca href=\"https://github.com/aSemy\"\u003eAdam\u003c/a\u003e,\n\u003ca href=\"https://github.com/Gautam-aman\"\u003eAman Gautam\u003c/a\u003e,\n\u003ca href=\"https://github.com/YukiCodepth\"\u003eAman Kumar\u003c/a\u003e,\n\u003ca href=\"https://github.com/adubrouski\"\u003eAnton Dubrouski\u003c/a\u003e,\n\u003ca href=\"https://github.com/liutikas\"\u003eAurimas\u003c/a\u003e,\n\u003ca href=\"https://github.com/gbhavya07\"\u003egbhavya07\u003c/a\u003e,\n\u003ca href=\"https://github.com/joshfriend\"\u003eJosh Friend\u003c/a\u003e,\n\u003ca href=\"https://github.com/nicklauslittle-gov\"\u003enicklauslittle-gov\u003c/a\u003e,\n\u003ca href=\"https://github.com/psoni674\"\u003ePragati\u003c/a\u003e,\n\u003ca href=\"https://github.com/Project516\"\u003eproject516\u003c/a\u003e,\n\u003ca href=\"https://github.com/Uomocapra\"\u003eQin Mi\u003c/a\u003e,\n\u003ca href=\"https://github.com/rkdfx\"\u003eRavi\u003c/a\u003e,\n\u003ca href=\"https://github.com/sk-reddy17\"\u003esk-reddy17\u003c/a\u003e,\n\u003ca href=\"https://github.com/Suvrat1629\"\u003eSuvrat Acharya\u003c/a\u003e,\n\u003ca href=\"https://github.com/ShreckYe\"\u003eYongshun Ye\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eUpgrade instructions\u003c/h2\u003e\n\u003cp\u003eSwitch your build to use Gradle 9.7.1 by updating your wrapper:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./gradlew :wrapper --gradle-version=9.7.1 \u0026amp;\u0026amp; ./gradlew :wrapper\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the Gradle \u003ca href=\"https://docs.gradle.org/9.7.1/userguide/upgrading_version_9.html\"\u003e9.x upgrade guide\u003c/a\u003e to learn about deprecations, breaking changes and other considerations when upgrading.\u003c/p\u003e\n\u003cp\u003eFor Java, Groovy, Kotlin and Android compatibility, see the \u003ca href=\"https://docs.gradle.org/9.7.1/userguide/compatibility.html\"\u003efull compatibility notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReporting problems\u003c/h2\u003e\n\u003cp\u003eIf you find a problem with this release, please file a bug on \u003ca href=\"https://github.com/gradle/gradle/issues\"\u003eGitHub Issues\u003c/a\u003e adhering to our issue guidelines.\nIf you're not sure you're encountering a bug, please use the \u003ca href=\"https://discuss.gradle.org/c/help-discuss\"\u003eforum\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe hope you will build happiness with Gradle, and we look forward to your feedback via \u003ca href=\"https://twitter.com/gradle\"\u003eTwitter\u003c/a\u003e or on \u003ca href=\"https://github.com/gradle\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e9.7.0\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.7.0.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/92f0512e7f06d84621afba191f75e265363890cf\"\u003e\u003ccode\u003e92f0512\u003c/code\u003e\u003c/a\u003e update fixed issues for 9.7.1 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38892\"\u003e#38892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/820ee75a99a179bbffa41bcedc6477b685fabb9f\"\u003e\u003ccode\u003e820ee75\u003c/code\u003e\u003c/a\u003e update fixed issues for 9.7.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/82c23f9bd2a89b4cc644e1f90a28a8668feb3dee\"\u003e\u003ccode\u003e82c23f9\u003c/code\u003e\u003c/a\u003e Fix annotation parameter ordering problem in KTS (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38878\"\u003e#38878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/ef11a7268fe8cc8d6ab849ec911aa11220180553\"\u003e\u003ccode\u003eef11a72\u003c/code\u003e\u003c/a\u003e Fix annotation parameter ordering issue\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/bb0d8a974a71b1003efea41e4046e98855cd5ff8\"\u003e\u003ccode\u003ebb0d8a9\u003c/code\u003e\u003c/a\u003e Make relevant tests polyglot (run for multiple DSLs)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/336e129d7f95c03486acafc97abf59734acfed48\"\u003e\u003ccode\u003e336e129\u003c/code\u003e\u003c/a\u003e Update signing configuration (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38874\"\u003e#38874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/4bdf0da2dad9884d089a6062a45ea7183e7d735d\"\u003e\u003ccode\u003e4bdf0da\u003c/code\u003e\u003c/a\u003e Update signing configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/cd9b92c1b82856248cf1dc58b50378238bec7b52\"\u003e\u003ccode\u003ecd9b92c\u003c/code\u003e\u003c/a\u003e List issues resolved in 9.7.1 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38839\"\u003e#38839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/5f4e381964897ad8d6b99e5a7c77f26dba3259fb\"\u003e\u003ccode\u003e5f4e381\u003c/code\u003e\u003c/a\u003e List issues resolved in 9.7.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/1e08ab551367aeb5fb48b26e72807e1d2b27c939\"\u003e\u003ccode\u003e1e08ab5\u003c/code\u003e\u003c/a\u003e Keep type-use annotations in extracted ABI classes (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38810\"\u003e#38810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gradle/gradle/compare/v9.4.1...v9.7.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.code.gson:gson` from 2.11.0 to 2.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/gson/releases\"\u003ecom.google.code.gson:gson's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eGson 2.14.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type adapters for \u003ccode\u003ejava.time\u003c/code\u003e classes by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2948\"\u003egoogle/gson#2948\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWhen the \u003ccode\u003ejava.time\u003c/code\u003e API is available, Gson automatically can read and write instances of classes like \u003ccode\u003eInstant\u003c/code\u003e and \u003ccode\u003eDuration\u003c/code\u003e. The format it uses essentially freezes the JSON representation that \u003ccode\u003eReflectiveTypeAdapterFactory\u003c/code\u003e established by default, based on the private fields of \u003ccode\u003ejava.time\u003c/code\u003e classes. That's not a great representation, but it is understandable. Changing it to anything else would break compatibility with systems that are expecting the current format.\u003c/p\u003e\n\u003cp\u003eWith this change, Gson no longer tries to access private fields of these classes using reflection. So it is no longer necessary to run with \u003ccode\u003e--add-opens\u003c/code\u003e for these classes on recent JDKs.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003ecom.google.gson.graph\u003c/code\u003e by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2990\"\u003egoogle/gson#2990\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis package was not part of any released artifact and depended on Gson internals in potentially problematic ways.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eValidate that strings being parsed as integers consist of ASCII characters by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2995\"\u003egoogle/gson#2995\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003ePreviously, strings could contain non-ASCII Unicode digits and still be parsed as integers. That's inconsistent with how JSON numbers are treated.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix duplicate key detection when first value is null by \u003ca href=\"https://github.com/andrewstellman\"\u003e\u003ccode\u003e@​andrewstellman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/3006\"\u003egoogle/gson#3006\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis could potentially break code that was relying on the incorrect behaviour. For example, this JSON string was previously accepted but will no longer be: \u003ccode\u003e{\u0026quot;foo\u0026quot;: null, \u0026quot;foo\u0026quot;: bar}\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003eSerializable\u003c/code\u003e from internal \u003ccode\u003eType\u003c/code\u003e implementation classes. by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/3011\"\u003egoogle/gson#3011\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe nested classes \u003ccode\u003eParameterizedTypeImpl\u003c/code\u003e, \u003ccode\u003eGenericArrayTypeImpl\u003c/code\u003e, and \u003ccode\u003eWildcardTypeImpl\u003c/code\u003e in \u003ccode\u003eGsonTypes\u003c/code\u003e are implementations of the corresponding types (without \u003ccode\u003eImpl\u003c/code\u003e) in \u003ccode\u003ejava.lang.reflect\u003c/code\u003e. For some reason, they were serializable, even though the \u003ccode\u003ejava.lang.reflect\u003c/code\u003e implementations are not. Having unnecessarily serializable classes could \u003cem\u003econceivably\u003c/em\u003e have been a security problem if they were part of a larger exploit using serialization. (We do not consider this a likely scenario and do not suggest that you need to update Gson just to get this change.)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eLegacyProtoTypeAdapterFactory\u003c/code\u003e. by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/3014\"\u003egoogle/gson#3014\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is not part of any released artifact, but may be of use when trying to fix code that is currently accessing the internals of protobuf classes via reflection.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake AppendableWriter do flush and close if delegation object supports by \u003ca href=\"https://github.com/MukjepScarlet\"\u003e\u003ccode\u003e@​MukjepScarlet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2925\"\u003egoogle/gson#2925\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther less visible changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd default capacity to EnumTypeAdapter maps by \u003ca href=\"https://github.com/MukjepScarlet\"\u003e\u003ccode\u003e@​MukjepScarlet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2959\"\u003egoogle/gson#2959\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: move derived adapters from Gson to TypeAdapters by \u003ca href=\"https://github.com/MukjepScarlet\"\u003e\u003ccode\u003e@​MukjepScarlet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2951\"\u003egoogle/gson#2951\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOptimize \u003ccode\u003enew Gson()\u003c/code\u003e by \u003ca href=\"https://github.com/MukjepScarlet\"\u003e\u003ccode\u003e@​MukjepScarlet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2864\"\u003egoogle/gson#2864\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ThirdGoddess\"\u003e\u003ccode\u003e@​ThirdGoddess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/google/gson/pull/2944\"\u003egoogle/gson#2944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lmj798\"\u003e\u003ccode\u003e@​lmj798\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/google/gson/pull/2988\"\u003egoogle/gson#2988\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Eng-YasminKotb\"\u003e\u003ccode\u003e@​Eng-YasminKotb\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/google/gson/pull/3005\"\u003egoogle/gson#3005\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/andrewstellman\"\u003e\u003ccode\u003e@​andrewstellman\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/google/gson/pull/3006\"\u003egoogle/gson#3006\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/gson/compare/gson-parent-2.13.2...gson-parent-2.14.0\"\u003ehttps://github.com/google/gson/compare/gson-parent-2.13.2...gson-parent-2.14.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eGson 2.13.2\u003c/h2\u003e\n\u003cp\u003eThe main changes in this release are just newer dependencies.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/3ff35d6269894901ab8006258395aafc4b9765cd\"\u003e\u003ccode\u003e3ff35d6\u003c/code\u003e\u003c/a\u003e [maven-release-plugin] prepare release gson-parent-2.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/a3024fde2a5c12b9a9a0b6b914ae4899aa574d81\"\u003e\u003ccode\u003ea3024fd\u003c/code\u003e\u003c/a\u003e Bump the maven group with 13 updates (\u003ca href=\"https://redirect.github.com/google/gson/issues/3002\"\u003e#3002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/5689ffe44952ca6ed44c595886b9043286311b23\"\u003e\u003ccode\u003e5689ffe\u003c/code\u003e\u003c/a\u003e Bump the github-actions group across 1 directory with 3 updates (\u003ca href=\"https://redirect.github.com/google/gson/issues/3018\"\u003e#3018\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/48db33cbf93af6b2f5b117dfdfd826de47f7229c\"\u003e\u003ccode\u003e48db33c\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eLegacyProtoTypeAdapterFactory\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/google/gson/issues/3014\"\u003e#3014\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/53d703ee76ca3e951fa4a727307c1f28dbcaf3aa\"\u003e\u003ccode\u003e53d703e\u003c/code\u003e\u003c/a\u003e Update outdated comment regarding serializable types (\u003ca href=\"https://redirect.github.com/google/gson/issues/3012\"\u003e#3012\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/0189b727761f31596d1a27b7c60b42478dc9f331\"\u003e\u003ccode\u003e0189b72\u003c/code\u003e\u003c/a\u003e Remove \u003ccode\u003eSerializable\u003c/code\u003e from internal \u003ccode\u003eType\u003c/code\u003e implementation classes. (\u003ca href=\"https://redirect.github.com/google/gson/issues/3011\"\u003e#3011\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/f4d371d29c04066dbe7fdb31f642831f9c7f40cd\"\u003e\u003ccode\u003ef4d371d\u003c/code\u003e\u003c/a\u003e Fix duplicate key detection when first value is null (\u003ca href=\"https://redirect.github.com/google/gson/issues/3006\"\u003e#3006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/27d9ba1eeeeb156540cf5397504a4f9f256e911f\"\u003e\u003ccode\u003e27d9ba1\u003c/code\u003e\u003c/a\u003e Fix typo in README (JPMS dependencies section) (\u003ca href=\"https://redirect.github.com/google/gson/issues/3005\"\u003e#3005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/1fa9b7a0a994b006b3be00e2df9de778e71e6807\"\u003e\u003ccode\u003e1fa9b7a\u003c/code\u003e\u003c/a\u003e Validate that strings being parsed as integers consist of ASCII characters (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/b7d59549188867deb42e46073fb38735a5beda1c\"\u003e\u003ccode\u003eb7d5954\u003c/code\u003e\u003c/a\u003e Add iterator fail-fast tests for LinkedTreeMap.clear() (\u003ca href=\"https://redirect.github.com/google/gson/issues/2992\"\u003e#2992\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/gson/compare/gson-parent-2.11.0...gson-parent-2.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.core:core-ktx` from 1.13.1 to 1.19.0\n\nUpdates `androidx.test.ext:junit` from 1.2.1 to 1.3.0\n\nUpdates `androidx.test.espresso:espresso-core` from 3.6.1 to 3.7.0\n\nUpdates `androidx.compose:compose-bom` from 2026.02.01 to 2026.09.00\n\nUpdates `androidx.navigation:navigation-compose` from 2.8.4 to 2.10.1\n\nUpdates `androidx.security:security-crypto` from 1.1.0-alpha06 to 1.1.0\n\nUpdates `com.squareup.okhttp3:okhttp` from 4.12.0 to 5.5.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/lysine-dev/okhttp/blob/main/CHANGELOG.md\"\u003ecom.squareup.okhttp3:okhttp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 5.5.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-08-16\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eThis release introduces \u003cstrong\u003eopt-in\u003c/strong\u003e support for [Encrypted Client Hello (ECH)]. This new feature\nimproves user privacy by encrypting domain names in transit. With regular TLS, your coffee shop’s\nWi-Fi router can see that you’re visiting \u003cem\u003ewikipedia.com\u003c/em\u003e, but it cannot see which page you’re\nlooking at. With ECH, the router observes only the IP address. This additional privacy is most\neffective on sites hosted by big CDNs because the IP address doesn’t imply a particular website.\u003c/p\u003e\n\u003cp\u003eThis requires ECH support in the platform’s TLS stack. Today this is only Android 17 (API 37,\nreleased June 2026). When other TLS stacks add ECH support, we'll integrate them.\u003c/p\u003e\n\u003cp\u003eECH took a lot of work to implement because the encryption keys are published over DNS in the\n[HTTPS resource record], and we needed to write new code to fetch these records. This release\nincludes a major update to OkHttp’s DNS API: it now supports multiple resource record types (not\njust IP addresses!), asynchronous streaming results, and in-memory caching.\u003c/p\u003e\n\u003cp\u003eTo opt in, you can use \u003ccode\u003eDnsOverHttps\u003c/code\u003e:\u003c/p\u003e\n\u003cpre lang=\"kotlin\"\u003e\u003ccode\u003e// DnsOverHttps itself uses OkHttpClient. Build both clients upon the\n// same bootstrap client so they share a connection pool and dispatcher.\nval bootstrapClient = OkHttpClient()\n\u003cp\u003e// This sample uses Cloudflare's 1.1.1.1 DnsOverHttps service.\nval client = bootstrapClient.newBuilder()\n.dns(DnsOverHttps.Builder()\n.client(bootstrapClient)\n.url(\u0026quot;\u003ca href=\"https://1.1.1.1/dns-query\u0026amp;quot;.toHttpUrl()\"\u003ehttps://1.1.1.1/dns-query\u0026amp;quot;.toHttpUrl()\u003c/a\u003e)\n.build())\n.build()\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eYou could also opt in with our new \u003ccode\u003eAndroidDns\u003c/code\u003e API. Unfortunately, the privacy benefits of ECH are\nthwarted because its DNS queries are not encrypted by default.\u003c/p\u003e\n\u003cpre lang=\"kotlin\"\u003e\u003ccode\u003e// AndroidDns fetches the HTTPS DNS resource records necessary for ECH.\nval client = OkHttpClient.Builder()\n  .dns(AndroidDns())\n  .build()\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003eNew: OkHttp artifacts are now signed with our [new signing key]. This project and three sibling\nprojects ([Retrofit], [Okio], and [SQLDelight]) recently joined [the Commonhaus Foundation].\u003c/li\u003e\n\u003cli\u003eFix: MockWebServer’s \u003ccode\u003e@StartStop\u003c/code\u003e annotation now supports \u003ccode\u003e@Nested\u003c/code\u003e JUnit 5 tests.\u003c/li\u003e\n\u003cli\u003eFix: Our default TLS hostname verifier now reject hosts that fail IP canonicalization.\u003c/li\u003e\n\u003cli\u003eFix: Closing a multipart part's sink no longer closes the entire request body.\u003c/li\u003e\n\u003cli\u003eFix: Flush HTTP/1 request bodies before detaching the timeout. We had a bug where timeouts\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/a94bdf152084d11acecd44dcd09ffef203f4f0aa\"\u003e\u003ccode\u003ea94bdf1\u003c/code\u003e\u003c/a\u003e Prepare for release 5.5.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/ecc3b05adfe6b2607b8ec251562c2cccf7c1923a\"\u003e\u003ccode\u003eecc3b05\u003c/code\u003e\u003c/a\u003e Use a fixed size for DoH request body (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9687\"\u003e#9687\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/9926082660dfa6f1cc848c6f465cf5ccb998e415\"\u003e\u003ccode\u003e9926082\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Use a fixed size for DoH request body\u0026quot; (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9686\"\u003e#9686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/0070c2e7b4c162ee03abf1c88fd94083e94697f4\"\u003e\u003ccode\u003e0070c2e\u003c/code\u003e\u003c/a\u003e Use a fixed size for DoH request body\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/15764539c69842dad607462f102a2507223dbfe7\"\u003e\u003ccode\u003e1576453\u003c/code\u003e\u003c/a\u003e Order ServiceMetadata records per the spec (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9683\"\u003e#9683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/fb582e976a9a82d691342a4d57b3c72208ce416c\"\u003e\u003ccode\u003efb582e9\u003c/code\u003e\u003c/a\u003e Flip wiring of Dns.SYSTEM (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9682\"\u003e#9682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/4e884abb1a207c321acffb070c476acb4b89fa3f\"\u003e\u003ccode\u003e4e884ab\u003c/code\u003e\u003c/a\u003e retryOnConnectionFailure doesn't impact ECH retries (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9681\"\u003e#9681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/0433cee8131b63fa2c0634fa2f9b3a01f9a8b1f3\"\u003e\u003ccode\u003e0433cee\u003c/code\u003e\u003c/a\u003e Only one contributing.md doc (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9678\"\u003e#9678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/a2cf5aa9f8711dabe514871e9dc4a9336a0e403f\"\u003e\u003ccode\u003ea2cf5aa\u003c/code\u003e\u003c/a\u003e Don't recover after an ECH public_name fails to verify (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9680\"\u003e#9680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/5410de9760bce8719129c3d08eb19e5bace75f6e\"\u003e\u003ccode\u003e5410de9\u003c/code\u003e\u003c/a\u003e Test ECH + HTTP proxy (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9671\"\u003e#9671\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/lysine-dev/okhttp/compare/parent-4.12.0...parent-5.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlinx:kotlinx-serialization-json` from 1.7.3 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-serialization-json's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.20 and provides a new Json exceptions API and some bugfixes and improvements.\u003c/p\u003e\n\u003ch2\u003eExpose Json exceptions structure\u003c/h2\u003e\n\u003cp\u003eTo make working with exceptions easier and providing proper error codes in e.g., REST APIs,\nclasses \u003ccode\u003eJsonException\u003c/code\u003e, \u003ccode\u003eJsonDecodingException\u003c/code\u003e, and \u003ccode\u003eJsonEncodingException\u003c/code\u003e are now public.\nThey have relevant public properties, such as \u003ccode\u003eshortMessage\u003c/code\u003e, \u003ccode\u003epath\u003c/code\u003e, \u003ccode\u003eoffset\u003c/code\u003e, and others.\nThis API is currently experimental, and we're going to improve it further in the subsequent releases.\nSee the linked issues for the details: \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1930\"\u003e#1930\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1877\"\u003e#1877\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eAbility to hide user input from exception messages for security/privacy reasons.\u003c/h2\u003e\n\u003cp\u003eHistorically, exception messages in kotlinx.serialization often included the input Json itself for debuggability reason.\nSuch behavior may pose additional challenges for logging, analytics, and other systems, since\na system is not always allowed to store user data due to privacy/security reasons, which imposes additional sanitation logic.\nTo address this issue, a new property \u003ccode\u003eexceptionsWithDebugInfo\u003c/code\u003e is added to \u003ccode\u003eJsonConfiguration\u003c/code\u003e.\nDisable it to hide user input from exception messages.\nIMPORTANT: This behavior will be enabled by default when this property becomes stable.\nSee \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2590\"\u003e#2590\u003c/a\u003e for more details.\u003c/p\u003e\n\u003ch2\u003eBugfixes and improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCBOR: Relax value range check when decoding numbers (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse a specialized writeDecimalLong method for IO stream integrations in Json (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3152\"\u003e#3152\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.0\u003c/h2\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.0 and contains all of the changes from 1.10.0-RC.\nThe only additional change is a fix for ProtoBuf packing of Kotlin unsigned types (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3079\"\u003e#3079\u003c/a\u003e).\nBig thanks to \u003ca href=\"https://github.com/KosmX\"\u003eKosmX\u003c/a\u003e for contributing the fix.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eFor your convenience, the changelog for 1.10.0-RC is duplicated below:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eStabilization of APIs\u003c/h2\u003e\n\u003cp\u003ekotlinx-serialization 1.10 and subsequent releases will be focused on stabilization of existing APIs.\nThe following APIs and configuration options are no longer experimental because they're widely used without any known major issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eJson\u003c/code\u003e configuration options: \u003ccode\u003edecodeEnumsCaseInsensitive\u003c/code\u003e, \u003ccode\u003eallowTrailingComma\u003c/code\u003e, \u003ccode\u003eallowComments\u003c/code\u003e, and \u003ccode\u003eprettyPrintIndent\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3100\"\u003e#3100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@EncodeDefault\u003c/code\u003e annotation and its modes. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3106\"\u003e#3106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonUnquotedLiteral\u003c/code\u003e constructor function (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2900\"\u003e#2900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonPrimitive\u003c/code\u003e constructor function overloads that accept unsigned types. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJSON DSL functions on \u003ccode\u003eJsonElement\u003c/code\u003e with \u003ccode\u003eNothing?\u003c/code\u003e overloads. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eReadiness for return value checker\u003c/h2\u003e\n\u003cp\u003eKotlin 2.3.0 \u003ca href=\"https://kotlinlang.org/docs/whatsnew23.html#unused-return-value-checker\"\u003eintroduces a new feature\u003c/a\u003e aimed at helping you to catch bugs related to the accidentally ignored return value of the function.\nkotlinx-serialization 1.10.0-RC code is fully marked for this feature, meaning that you can get warnings for unused function calls like \u003ccode\u003eJson.encodeToString(...)\u003c/code\u003e. To get the warnings, the feature has to be enabled in your project as \u003ca href=\"https://kotlinlang.org/docs/unused-return-value-checker.html#configure-the-unused-return-value-checker\"\u003edescribed here\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ePolymorphism improvements\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md\"\u003eorg.jetbrains.kotlinx:kotlinx-serialization-json's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.11.0 / 2026-04-10\u003c/h1\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.20 and provides new Json exceptions API and some bugfixes and improvements.\u003c/p\u003e\n\u003ch2\u003eExpose Json exceptions structure\u003c/h2\u003e\n\u003cp\u003eTo make working with exceptions easier and providing proper error codes in e.g., REST APIs,\nclasses \u003ccode\u003eJsonException\u003c/code\u003e, \u003ccode\u003eJsonDecodingException\u003c/code\u003e, and \u003ccode\u003eJsonEncodingException\u003c/code\u003e are now public.\nThey have relevant public properties, such as \u003ccode\u003eshortMessage\u003c/code\u003e, \u003ccode\u003epath\u003c/code\u003e, \u003ccode\u003eoffset\u003c/code\u003e, and others.\nThis API is currently experimental, and we're going to improve it further in the subsequent releases.\nSee the linked issues for the details: \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1930\"\u003e#1930\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1877\"\u003e#1877\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eAbility to hide user input from exception messages for security/privacy reasons.\u003c/h2\u003e\n\u003cp\u003eHistorically, exception messages in kotlinx.serialization often included the input Json itself for debuggability reason.\nSuch behavior may pose additional challenges for logging, analytics, and other systems, since\na system is not always allowed to store user data due to privacy/security reasons, which imposes additional sanitation logic.\nTo address this issue, a new property \u003ccode\u003eexceptionsWithDebugInfo\u003c/code\u003e is added to \u003ccode\u003eJsonConfiguration\u003c/code\u003e.\nDisable it to hide user input from exception messages.\nIMPORTANT: This behavior will be enabled by default when this property becomes stable.\nSee \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2590\"\u003e#2590\u003c/a\u003e for more details.\u003c/p\u003e\n\u003ch2\u003eBugfixes and improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCBOR: Relax value range check when decoding numbers (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse a specialized writeDecimalLong method for IO stream integrations in Json (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3152\"\u003e#3152\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.10.0 / 2026-01-21\u003c/h1\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.0 and contains all of the changes from 1.10.0-RC.\nThe only additional change is a fix for ProtoBuf packing of Kotlin unsigned types (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3079\"\u003e#3079\u003c/a\u003e).\nBig thanks to \u003ca href=\"https://github.com/KosmX\"\u003eKosmX\u003c/a\u003e for contributing the fix.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eFor your convenience, the changelog for 1.10.0-RC is duplicated below:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eStabilization of APIs\u003c/h2\u003e\n\u003cp\u003ekotlinx-serialization 1.10 and subsequent releases will be focused on stabilization of existing APIs.\nThe following APIs and configuration options are no longer experimental because they're widely used without any known major issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eJson\u003c/code\u003e configuration options: \u003ccode\u003edecodeEnumsCaseInsensitive\u003c/code\u003e, \u003ccode\u003eallowTrailingComma\u003c/code\u003e, \u003ccode\u003eallowComments\u003c/code\u003e, and \u003ccode\u003eprettyPrintIndent\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3100\"\u003e#3100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@EncodeDefault\u003c/code\u003e annotation and its modes. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3106\"\u003e#3106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonUnquotedLiteral\u003c/code\u003e constructor function (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2900\"\u003e#2900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonPrimitive\u003c/code\u003e constructor function overloads that accept unsigned types. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJSON DSL functions on \u003ccode\u003eJsonElement\u003c/code\u003e with \u003ccode\u003eNothing?\u003c/code\u003e overloads. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eReadiness for return value checker\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/6956af2e6073347c7832c3c5b374fa3b5a345956\"\u003e\u003ccode\u003e6956af2\u003c/code\u003e\u003c/a\u003e Prepare 1.11 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/390d84c68a19cbf7fa453dec22a333648bde49b4\"\u003e\u003ccode\u003e390d84c\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/431fe2dc0a144300b33038820d24fc30302c8abc\"\u003e\u003ccode\u003e431fe2d\u003c/code\u003e\u003c/a\u003e Use local repo for publishing (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3171\"\u003e#3171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/05c12b60a6717b99053fb82e1f94d2f859727374\"\u003e\u003ccode\u003e05c12b6\u003c/code\u003e\u003c/a\u003e Add usage attribute to \u0026quot;testRepositories\u0026quot; configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/a4e1f082ef2e72caa139b474c05657de6015da20\"\u003e\u003ccode\u003ea4e1f08\u003c/code\u003e\u003c/a\u003e Bump Kover version to 0.9.8 release (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3174\"\u003e#3174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/304e858ccc7066854637d86ab80056f5f2bcc094\"\u003e\u003ccode\u003e304e858\u003c/code\u003e\u003c/a\u003e Expose Json exceptions structure (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/4a0338ef5093d765138151bc30282e909ca459e4\"\u003e\u003ccode\u003e4a0338e\u003c/code\u003e\u003c/a\u003e Included G Play SDK verification file for core-jvm (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3169\"\u003e#3169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/421f64c74f0ea6d4a3cdc8dd483505366e3f6c8f\"\u003e\u003ccode\u003e421f64c\u003c/code\u003e\u003c/a\u003e CBOR: Relax value range check when decoding numbers (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/85a4f126ec491c77e2b3686cc22c1bae27a20783\"\u003e\u003ccode\u003e85a4f12\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/bd38b0e49bce38d1a55576e89856bc63990167ed\"\u003e\u003ccode\u003ebd38b0e\u003c/code\u003e\u003c/a\u003e Remove dead code\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/compare/v1.7.3...v1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-android` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874\"\u003e\u003ccode\u003e8564f65\u003c/code\u003e\u003c/a\u003e Version 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c\"\u003e\u003ccode\u003ea4c6af9\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9\"\u003e\u003ccode\u003eef917b4\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd\"\u003e\u003ccode\u003e5ebc421\u003c/code\u003e\u003c/a\u003e Update the release procedure description (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80\"\u003e\u003ccode\u003e95f46a0\u003c/code\u003e\u003c/a\u003e Remove old maven repository settings (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672\"\u003e#4672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc\"\u003e\u003ccode\u003eb4f4f0a\u003c/code\u003e\u003c/a\u003e Fix package name of \u003ccode\u003eToMapCollectionSamplesTest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674\"\u003e#4674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/86738dca7dc9ac82249abc8206263fa0065ee631\"\u003e\u003ccode\u003e86738dc\u003c/code\u003e\u003c/a\u003e Added templates to the issue creation wizard (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/330fcc221fb583f0b119f34191f735a73b827378\"\u003e\u003ccode\u003e330fcc2\u003c/code\u003e\u003c/a\u003e Version 1.11.0-rc02\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/e31cef6e9f2d26794be7d75ecbf3033b6432d582\"\u003e\u003ccode\u003ee31cef6\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/dc6e9f61eaf3a67f4bf474a7987aedc3f16cef37\"\u003e\u003ccode\u003edc6e9f6\u003c/code\u003e\u003c/a\u003e Restore Promise-related functions on Wasm/JS as HIDDEN (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/compare/1.9.0...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-play-services` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-play-services's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-play-services's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874\"\u003e\u003ccode\u003e8564f65\u003c/code\u003e\u003c/a\u003e Version 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c\"\u003e\u003ccode\u003ea4c6af9\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9\"\u003e\u003ccode\u003eef917b4\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd\"\u003e\u003ccode\u003e5ebc421\u003c/code\u003e\u003c/a\u003e Update the release procedure description (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80\"\u003e\u003ccode\u003e95f46a0\u003c/code\u003e\u003c/a\u003e Remove old maven repository settings (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672\"\u003e#4672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc\"\u003e\u003ccode\u003eb4f4f0a\u003c/code\u003e\u003c/a\u003e Fix package name of \u003ccode\u003eToMapCollectionSamplesTest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674\"\u003e#4674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/86738dca7dc9ac82249abc8206263fa0065ee631\"\u003e\u003ccode\u003e86738dc\u003c/code\u003e\u003c/a\u003e Added templates to the issue creation wizard (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/330fcc221fb583f0b119f34191f735a73b827378\"\u003e\u003ccode\u003e330fcc2\u003c/code\u003e\u003c/a\u003e Version 1.11.0-rc02\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/e31cef6e9f2d26794be7d75ecbf3033b6432d582\"\u003e\u003ccode\u003ee31cef6\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/dc6e9f61eaf3a67f4bf474a7987aedc3f16cef37\"\u003e\u003ccode\u003edc6e9f6\u003c/code\u003e\u003c/a\u003e Restore Promise-related functions on Wasm/JS as HIDDEN (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/compare/1.9.0...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-play-services` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-play-services's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including co...\n\n_Description has been truncated_","html_url":"https://github.com/apoorvdarshan/fud-ai/pull/308","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/apoorvdarshan%2Ffud-ai/issues/308","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/308/packages"},{"uuid":"5431577689","node_id":"PR_kwDOQ9ZvqM8AAAABDO33YQ","number":117,"state":"closed","title":"Bump the minor-and-patch group across 1 directory with 8 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-09-12T06:45:27.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-12T05:59:41.000Z","updated_at":"2026-09-12T06:45:37.000Z","time_to_close":2746,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"minor-and-patch","update_count":8,"packages":[{"name":"org.mockito:mockito-core","old_version":"5.5.0","new_version":"5.23.0","repository_url":"https://github.com/mockito/mockito"},{"name":"org.robolectric:robolectric","old_version":"4.11.1","new_version":"4.16.1","repository_url":"https://github.com/robolectric/robolectric"},{"name":"androidx.test:core","old_version":"1.5.0","new_version":"1.7.0"},{"name":"androidx.core:core-ktx","old_version":"1.10.1","new_version":"1.19.0"},{"name":"androidx.documentfile:documentfile","old_version":"1.0.1","new_version":"1.1.0"},{"name":"androidx.test.ext:junit","old_version":"1.1.5","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.5.1","new_version":"3.7.0"},{"name":"com.android.application","old_version":"9.3.1","new_version":"9.4.0"}],"path":null,"ecosystem":"maven"},"body":"Bumps the minor-and-patch group with 8 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [org.mockito:mockito-core](https://github.com/mockito/mockito) | `5.5.0` | `5.23.0` |\n| [org.robolectric:robolectric](https://github.com/robolectric/robolectric) | `4.11.1` | `4.16.1` |\n| androidx.test:core | `1.5.0` | `1.7.0` |\n| androidx.core:core-ktx | `1.10.1` | `1.19.0` |\n| androidx.documentfile:documentfile | `1.0.1` | `1.1.0` |\n| androidx.test.ext:junit | `1.1.5` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.5.1` | `3.7.0` |\n| com.android.application | `9.3.1` | `9.4.0` |\n\n\nUpdates `org.mockito:mockito-core` from 5.5.0 to 5.23.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mockito/mockito/releases\"\u003eorg.mockito:mockito-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.23.0\u003c/h2\u003e\n\u003ch2\u003eNOTE: Breaking change for Android\u003c/h2\u003e\n\u003cp\u003eThe \u003ccode\u003emockito-android\u003c/code\u003e artifact has a breaking change: tests now require a device or emulator based on API 28+ (Android P). This is to enable new support for mocking Kotlin classes. See \u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3788\"\u003e#3788\u003c/a\u003e for more details.\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003cem\u003eChangelog generated by \u003ca href=\"https://github.com/shipkit/shipkit-changelog\"\u003eShipkit Changelog Gradle Plugin\u003c/a\u003e\u003c/em\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch4\u003e5.23.0\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e2026-03-11 - \u003ca href=\"https://github.com/mockito/mockito/compare/v5.22.0...v5.23.0\"\u003e6 commit(s)\u003c/a\u003e by Brice Dutheil, Joshua Selbo, Philippe Kernevez\u003c/li\u003e\n\u003cli\u003eReplace mockito-android mock maker implementation with dexmaker-mockito-inline [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3792\"\u003e#3792\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3792\"\u003emockito/mockito#3792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix StackOverflowError with AbstractList after using mockSingleton [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3790\"\u003e#3790\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3790\"\u003emockito/mockito#3790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMark parameters of \u003ccode\u003eMockito.when\u003c/code\u003e \u003ccode\u003e@Nullable\u003c/code\u003e [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3503\"\u003e#3503\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3503\"\u003emockito/mockito#3503\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev5.22.0\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003cem\u003eChangelog generated by \u003ca href=\"https://github.com/shipkit/shipkit-changelog\"\u003eShipkit Changelog Gradle Plugin\u003c/a\u003e\u003c/em\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch4\u003e5.22.0\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e2026-02-27 - \u003ca href=\"https://github.com/mockito/mockito/compare/v5.21.0...v5.22.0\"\u003e6 commit(s)\u003c/a\u003e by Joshua Selbo, NiMv1, Rafael Winterhalter, dependabot[bot], eunbin son\u003c/li\u003e\n\u003cli\u003eAvoid mocking of internal static utilities [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3785\"\u003e#3785\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3785\"\u003emockito/mockito#3785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump graalvm/setup-graalvm from 1.4.4 to 1.4.5 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3780\"\u003e#3780\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3780\"\u003emockito/mockito#3780\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStatic mocking of UUID.class corrupted under JDK 25 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3778\"\u003e#3778\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3778\"\u003emockito/mockito#3778\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 5 to 6 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3774\"\u003e#3774\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3774\"\u003emockito/mockito#3774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: clarify RETURNS_MOCKS behavior with sealed abstract enums (Java 15+) [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3773\"\u003e#3773\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3773\"\u003emockito/mockito#3773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd tests for Sets utility class [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3771\"\u003e#3771\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3771\"\u003emockito/mockito#3771\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd core API to enable Kotlin singleton mocking [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3762\"\u003e#3762\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3762\"\u003emockito/mockito#3762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStubbing Kotlin \u003ccode\u003eobject\u003c/code\u003e singletons [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3652\"\u003e#3652\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3652\"\u003emockito/mockito#3652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorrect documentation for RETURNS_MOCKS [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3285\"\u003e#3285\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3285\"\u003emockito/mockito#3285\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev5.21.0\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003cem\u003eChangelog generated by \u003ca href=\"https://github.com/shipkit/shipkit-changelog\"\u003eShipkit Changelog Gradle Plugin\u003c/a\u003e\u003c/em\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch4\u003e5.21.0\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e2025-12-09 - \u003ca href=\"https://github.com/mockito/mockito/compare/v5.20.0...v5.21.0\"\u003e17 commit(s)\u003c/a\u003e by Giulio Longfils, Joshua Selbo, Woongi9, Zylox, dependabot[bot]\u003c/li\u003e\n\u003cli\u003eBump graalvm/setup-graalvm from 1.4.3 to 1.4.4 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3768\"\u003e#3768\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3768\"\u003emockito/mockito#3768\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump graalvm/setup-graalvm from 1.4.2 to 1.4.3 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3767\"\u003e#3767\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3767\"\u003emockito/mockito#3767\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3765\"\u003e#3765\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3765\"\u003emockito/mockito#3765\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdds output of matchers to potential mismatch; Fixes \u003ca href=\"https://redirect.github.com/mockito/mockito/issues/2468\"\u003e#2468\u003c/a\u003e [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3760\"\u003e#3760\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3760\"\u003emockito/mockito#3760\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eForbid mocking WeakReference with inline mock maker [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3759\"\u003e#3759\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3759\"\u003emockito/mockito#3759\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStackOverflowError when mocking WeakReference [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3758\"\u003e#3758\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3758\"\u003emockito/mockito#3758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 to 5 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3756\"\u003e#3756\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3756\"\u003emockito/mockito#3756\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump graalvm/setup-graalvm from 1.4.1 to 1.4.2 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3755\"\u003e#3755\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3755\"\u003emockito/mockito#3755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport primitives in GenericArrayReturnType. [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3753\"\u003e#3753\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3753\"\u003emockito/mockito#3753\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClassNotFoundException when stubbing array of primitive type on Android [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3752\"\u003e#3752\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3752\"\u003emockito/mockito#3752\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump graalvm/setup-graalvm from 1.4.0 to 1.4.1 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3744\"\u003e#3744\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3744\"\u003emockito/mockito#3744\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump gradle/actions from 4 to 5 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3743\"\u003e#3743\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3743\"\u003emockito/mockito#3743\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump org.graalvm.buildtools.native from 0.11.0 to 0.11.1 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3738\"\u003e#3738\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3738\"\u003emockito/mockito#3738\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump com.diffplug.spotless:spotless-plugin-gradle from 7.2.1 to 8.0.0 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3735\"\u003e#3735\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3735\"\u003emockito/mockito#3735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump graalvm/setup-graalvm from 1.3.7 to 1.4.0 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3734\"\u003e#3734\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3734\"\u003emockito/mockito#3734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump org.assertj:assertj-core from 3.27.5 to 3.27.6 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3733\"\u003e#3733\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3733\"\u003emockito/mockito#3733\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/a231205b240e7884a63bf0f63440012867a4da21\"\u003e\u003ccode\u003ea231205\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError with AbstractList after using mockSingleton (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3790\"\u003e#3790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/f6a91a6a6138c776fa8b41ffb3fd078c64802044\"\u003e\u003ccode\u003ef6a91a6\u003c/code\u003e\u003c/a\u003e Replace mockito-android mock maker implementation with dexmaker-mockito-inlin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/aa2298a627ab2c0bce07f648e444477d8e2e05ba\"\u003e\u003ccode\u003eaa2298a\u003c/code\u003e\u003c/a\u003e fix: make spotless happy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/a6729d657e232ca64da81d9801d7b8f3be6fc49a\"\u003e\u003ccode\u003ea6729d6\u003c/code\u003e\u003c/a\u003e chore: update BDDMockito with jspecify annotation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/bb83c922484cfd3693d61549b5d6ef39a9c02c2b\"\u003e\u003ccode\u003ebb83c92\u003c/code\u003e\u003c/a\u003e chore: move jspecify as a compile only dependency\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/47a46954cd1c0f8ef64ec63d43da9b71081d74e6\"\u003e\u003ccode\u003e47a4695\u003c/code\u003e\u003c/a\u003e chore: add jspecify with minimal change. Fixes \u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3503\"\u003e#3503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/25f13951d35ca391ee50207e6c564f3e869f3d91\"\u003e\u003ccode\u003e25f1395\u003c/code\u003e\u003c/a\u003e Add core API to enable Kotlin singleton mocking (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3762\"\u003e#3762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/ef9ee5529853d96028b520f84a41ffd41afc9a1d\"\u003e\u003ccode\u003eef9ee55\u003c/code\u003e\u003c/a\u003e Avoids mocking private static methods, as well as package-private static meth...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/d16fcfc274d7ca03a2b4bdc22dd7c3ec6dac8690\"\u003e\u003ccode\u003ed16fcfc\u003c/code\u003e\u003c/a\u003e Bump graalvm/setup-graalvm from 1.4.4 to 1.4.5 (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3780\"\u003e#3780\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/27eb8a3acdd9c9eb3ff788a71b22777026874439\"\u003e\u003ccode\u003e27eb8a3\u003c/code\u003e\u003c/a\u003e Clarify \u003ccode\u003eRETURNS_MOCKS\u003c/code\u003e behavior with sealed abstract enums (Java 15+) (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3773\"\u003e#3773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mockito/mockito/compare/v5.5.0...v5.23.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.robolectric:robolectric` from 4.11.1 to 4.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/robolectric/robolectric/releases\"\u003eorg.robolectric:robolectric's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eRobolectric 4.16.1 is a minor release that fixes some issues when Robolectric is used for Android Platform development. Most notably, it is updated to support the deletion of \u003ca href=\"https://developer.android.com/reference/android/hardware/fingerprint/FingerprintManager\"\u003eFingerprintManager\u003c/a\u003e in the Android Framework, as well as some improvements to the \u003ccode\u003eVirtualDeviceManager\u003c/code\u003e shadow.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/robolectric/robolectric/compare/robolectric-4.16...robolectric-4.16.1\"\u003ehttps://github.com/robolectric/robolectric/compare/robolectric-4.16...robolectric-4.16.1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eRobolectric 4.16 supports Android Baklava (SDK 36), and you need to use JDK 21 if running tests with SDK 36 target. It also removes support for Android L (SDK 21 and 22).\u003c/p\u003e\n\u003cp\u003eOne exciting new feature is native resources (ResourcesMode.NATIVE). Note this is currently only available in SDK 36.\u003c/p\u003e\n\u003cp\u003eIf you have any issues, please file them \u003ca href=\"https://github.com/robolectric/robolectric/issues\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReuse \u003ccode\u003eShadowUIModeManager\u003c/code\u003e in \u003ccode\u003eShadowUIModeManagerTest\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10368\"\u003erobolectric/robolectric#10368\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate AndroidX by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10373\"\u003erobolectric/robolectric#10373\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency gradle to v8.14.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10372\"\u003erobolectric/robolectric#10372\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency com.googlecode.libphonenumber:libphonenumber to v9.0.7 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10371\"\u003erobolectric/robolectric#10371\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency org.bouncycastle:bcprov-jdk18on to v1.81 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10374\"\u003erobolectric/robolectric#10374\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ApplicationInfo inconsistencies in Robolectric. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10375\"\u003erobolectric/robolectric#10375\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd shadow for new resolveActivityAsUser variant. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10377\"\u003erobolectric/robolectric#10377\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdjust to indevelopment SDK changes. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10379\"\u003erobolectric/robolectric#10379\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding support to the Simulator for picking up the device configuration from a Configurer. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10381\"\u003erobolectric/robolectric#10381\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClean up SDK ranges for shadow methods in Baklava. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10380\"\u003erobolectric/robolectric#10380\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a shadow for Equalizer in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10384\"\u003erobolectric/robolectric#10384\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate example to be consistent with robolectric.org by \u003ca href=\"https://github.com/seadowg\"\u003e\u003ccode\u003e@​seadowg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/7475\"\u003erobolectric/robolectric#7475\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate the \u003ccode\u003esimulator-gradle-plugin\u003c/code\u003e to depends on AGP \u003ccode\u003egradle-api\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10386\"\u003erobolectric/robolectric#10386\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace custom \u003ccode\u003egetOrDefault()\u003c/code\u003e with the corresponding Java method by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10370\"\u003erobolectric/robolectric#10370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Javadoc for \u003ccode\u003eShadowPausedLooper\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10387\"\u003erobolectric/robolectric#10387\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix condition in \u003ccode\u003eResourceHelper#parseFloatAttribute()\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10369\"\u003erobolectric/robolectric#10369\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eValidate listener in \u003ccode\u003eShadowAccountManager#addOnAccountsUpdatedListener()\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10361\"\u003erobolectric/robolectric#10361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for UiModeManager.setNightMode(UiModeManager.MODE_NIGHT_CUSTOM) in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10390\"\u003erobolectric/robolectric#10390\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLazily register the simulator plugin by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10391\"\u003erobolectric/robolectric#10391\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable stricter plugin validation by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10388\"\u003erobolectric/robolectric#10388\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the VirtualDeviceManager#getVirtualDevice(int deviceId) to the ShadowVirtualDeviceManager. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10395\"\u003erobolectric/robolectric#10395\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix various small warnings by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10394\"\u003erobolectric/robolectric#10394\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd shadow implement of AccessibilityService#getRootInActiveWindow in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10397\"\u003erobolectric/robolectric#10397\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd more information to the generated POM file by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10392\"\u003erobolectric/robolectric#10392\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange ShadowChoreographer.getDefaultFrameDelay into a shadow method. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10404\"\u003erobolectric/robolectric#10404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRestore removed methods from \u003ccode\u003eConfig\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10406\"\u003erobolectric/robolectric#10406\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd shadow override for Network SocketFactory. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10409\"\u003erobolectric/robolectric#10409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing deprecations to some \u003ccode\u003eConfig.Builder\u003c/code\u003e methods by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10408\"\u003erobolectric/robolectric#10408\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003etestDebugUnitTest\u003c/code\u003e from the dependencies of the \u003ccode\u003esimulator\u003c/code\u003e task by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10413\"\u003erobolectric/robolectric#10413\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMerge branch 'google' into 'master' by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10414\"\u003erobolectric/robolectric#10414\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the snapshot version to 4.16 by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10415\"\u003erobolectric/robolectric#10415\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ability to specify is80211azNtbMeasurement to ShadowRangingResult in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10410\"\u003erobolectric/robolectric#10410\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded implementation for Path.op by \u003ca href=\"https://github.com/GisoBartels\"\u003e\u003ccode\u003e@​GisoBartels\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10288\"\u003erobolectric/robolectric#10288\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix massive code warnings of ShadowVirtualDeviceManagerTest by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10399\"\u003erobolectric/robolectric#10399\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove redundant String concatenation by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10417\"\u003erobolectric/robolectric#10417\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigrate deprecated APIs to idleMainLooper for ShadowVirtualDeviceManagerTest by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10418\"\u003erobolectric/robolectric#10418\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace Stream#toList to Stream#collect(Collectors.toList()) by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10420\"\u003erobolectric/robolectric#10420\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport Java 11 in the simulator gradle plugin by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10421\"\u003erobolectric/robolectric#10421\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate AndroidX by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10422\"\u003erobolectric/robolectric#10422\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/524ea8e634ad51b39356a41fbb4a3474034dd250\"\u003e\u003ccode\u003e524ea8e\u003c/code\u003e\u003c/a\u003e Bump version to 4.16.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/54fd1eeaf0ce87ac3280a7156a666dcddffe874f\"\u003e\u003ccode\u003e54fd1ee\u003c/code\u003e\u003c/a\u003e Implement ResTable support for shared libraries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/1e35e634fc7c22e1d54fe3ac73ab8fce704bd4db\"\u003e\u003ccode\u003e1e35e63\u003c/code\u003e\u003c/a\u003e When a top-level exception occurs in the Simulator, print the stack trace and...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/e2c046f467de139f346eff3e0c0ff2d3610f66e6\"\u003e\u003ccode\u003ee2c046f\u003c/code\u003e\u003c/a\u003e Added custom ThreadFactory to name threads in LocalUIController\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/7f3165a0f04a222579f46dec49d02242e4bb1b0d\"\u003e\u003ccode\u003e7f3165a\u003c/code\u003e\u003c/a\u003e Add newly required \u003ccode\u003e--add-exports\u003c/code\u003e arguments to test tasks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/db54b4b046e460eb6e5df5f19c8ae8abfa276455\"\u003e\u003ccode\u003edb54b4b\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eVirtualDeviceParamsBuilder\u003c/code\u003e to support creating new virtual devices.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/b73adc38c8f5aed39e3e08d844145c5fe2e7ad33\"\u003e\u003ccode\u003eb73adc3\u003c/code\u003e\u003c/a\u003e Implement shadow behavior for VirtualDeviceManager#registerVirtualDeviceListener\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/1e05fdeb1c5fe630b070dad13553806b58650149\"\u003e\u003ccode\u003e1e05fde\u003c/code\u003e\u003c/a\u003e Create shadow for VirtualDeviceManager$VirtualDevice#createVirtualCamera\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/d160747766edebd7b36e61d37f930fd253e7f429\"\u003e\u003ccode\u003ed160747\u003c/code\u003e\u003c/a\u003e Future proof ShadowFingerprintManagerTest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/d7a0438407c7eb82488b4474e51128d44a493eda\"\u003e\u003ccode\u003ed7a0438\u003c/code\u003e\u003c/a\u003e Add maxSdk for ShadowFingerprintManager.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/robolectric/robolectric/compare/robolectric-4.11.1...robolectric-4.16.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.test:core` from 1.5.0 to 1.7.0\n\nUpdates `androidx.core:core-ktx` from 1.10.1 to 1.19.0\n\nUpdates `androidx.documentfile:documentfile` from 1.0.1 to 1.1.0\n\nUpdates `androidx.test.ext:junit` from 1.1.5 to 1.3.0\n\nUpdates `androidx.test.espresso:espresso-core` from 3.5.1 to 3.7.0\n\nUpdates `com.android.application` from 9.3.1 to 9.4.0\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/JoshAtticus/Compressor/pull/117","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoshAtticus%2FCompressor/issues/117","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/117/packages"},{"uuid":"5378239870","node_id":"PR_kwDOURiohM8AAAABCkLB_A","number":6,"state":"closed","title":"Bump the androidx group with 11 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-13T19:45:37.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-07T19:09:56.000Z","updated_at":"2026-09-13T19:45:39.000Z","time_to_close":520541,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"androidx","update_count":11,"packages":[{"name":"androidx.core:core-ktx","old_version":"1.15.0","new_version":"1.19.0"},{"name":"androidx.navigation:navigation-compose","old_version":"2.8.9","new_version":"2.10.0"},{"name":"androidx.compose:compose-bom","old_version":"2025.04.01","new_version":"2026.08.00"},{"name":"androidx.hilt:hilt-work","old_version":"1.2.0","new_version":"1.4.0"},{"name":"androidx.hilt:hilt-compiler","old_version":"1.2.0","new_version":"1.4.0"},{"name":"androidx.room:room-runtime","old_version":"2.7.1","new_version":"2.8.4"},{"name":"androidx.room:room-ktx","old_version":"2.7.1","new_version":"2.8.4"},{"name":"androidx.room:room-compiler","old_version":"2.7.1","new_version":"2.8.4"},{"name":"androidx.hilt:hilt-navigation-compose","old_version":"1.2.0","new_version":"1.4.0"},{"name":"androidx.test.ext:junit","old_version":"1.2.1","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.6.1","new_version":"3.7.0"}],"path":null,"ecosystem":"maven"},"body":"Bumps the androidx group with 11 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| androidx.core:core-ktx | `1.15.0` | `1.19.0` |\n| androidx.navigation:navigation-compose | `2.8.9` | `2.10.0` |\n| androidx.compose:compose-bom | `2025.04.01` | `2026.08.00` |\n| androidx.hilt:hilt-work | `1.2.0` | `1.4.0` |\n| androidx.hilt:hilt-compiler | `1.2.0` | `1.4.0` |\n| androidx.room:room-runtime | `2.7.1` | `2.8.4` |\n| androidx.room:room-ktx | `2.7.1` | `2.8.4` |\n| androidx.room:room-compiler | `2.7.1` | `2.8.4` |\n| androidx.hilt:hilt-navigation-compose | `1.2.0` | `1.4.0` |\n| androidx.test.ext:junit | `1.2.1` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.6.1` | `3.7.0` |\n\nUpdates `androidx.core:core-ktx` from 1.15.0 to 1.19.0\n\nUpdates `androidx.navigation:navigation-compose` from 2.8.9 to 2.10.0\n\nUpdates `androidx.compose:compose-bom` from 2025.04.01 to 2026.08.00\n\nUpdates `androidx.hilt:hilt-work` from 1.2.0 to 1.4.0\n\nUpdates `androidx.hilt:hilt-compiler` from 1.2.0 to 1.4.0\n\nUpdates `androidx.hilt:hilt-compiler` from 1.2.0 to 1.4.0\n\nUpdates `androidx.room:room-runtime` from 2.7.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.7.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.7.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.7.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.7.1 to 2.8.4\n\nUpdates `androidx.hilt:hilt-navigation-compose` from 1.2.0 to 1.4.0\n\nUpdates `androidx.test.ext:junit` from 1.2.1 to 1.3.0\n\nUpdates `androidx.test.espresso:espresso-core` from 3.6.1 to 3.7.0\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/hiwebhq/hi3-hashkit/pull/6","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/hiwebhq%2Fhi3-hashkit/issues/6","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/6/packages"},{"uuid":"5366961223","node_id":"PR_kwDOUQYzHs8AAAABCbNLBw","number":3,"state":"open","title":"Bump androidx.test.espresso:espresso-core from 3.5.1 to 3.7.0","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-06T18:51:17.000Z","updated_at":"2026-09-06T20:19:26.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"androidx.test.espresso:espresso-core","old_version":"3.5.1","new_version":"3.7.0","repository_url":null}],"path":null,"ecosystem":"maven"},"body":"Bumps androidx.test.espresso:espresso-core from 3.5.1 to 3.7.0.\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=androidx.test.espresso:espresso-core\u0026package-manager=gradle\u0026previous-version=3.5.1\u0026new-version=3.7.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/JCPrieto/YiActionController/pull/3","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/JCPrieto%2FYiActionController/issues/3","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/3/packages"},{"uuid":"5360624908","node_id":"PR_kwDOUIFqrM8AAAABCWeXPw","number":23,"state":"closed","title":"chore(deps): bump the androidx group across 1 directory with 8 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-05T20:39:41.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-05T20:09:30.000Z","updated_at":"2026-09-05T20:39:45.000Z","time_to_close":1811,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"androidx","update_count":8,"packages":[{"name":"androidx.core:core-ktx","old_version":"1.12.0","new_version":"1.19.0"},{"name":"androidx.core:core-splashscreen","old_version":"1.0.1","new_version":"1.2.0"},{"name":"androidx.room:room-runtime","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.security:security-crypto","old_version":"1.1.0-alpha06","new_version":"1.1.0"},{"name":"androidx.test.ext:junit","old_version":"1.1.5","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.5.1","new_version":"3.7.0"}],"path":null,"ecosystem":"maven"},"body":"Bumps the androidx group with 6 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| androidx.core:core-ktx | `1.12.0` | `1.19.0` |\n| androidx.core:core-splashscreen | `1.0.1` | `1.2.0` |\n| androidx.room:room-runtime | `2.6.1` | `2.8.4` |\n| androidx.security:security-crypto | `1.1.0-alpha06` | `1.1.0` |\n| androidx.test.ext:junit | `1.1.5` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.5.1` | `3.7.0` |\n\n\nUpdates `androidx.core:core-ktx` from 1.12.0 to 1.19.0\n\nUpdates `androidx.core:core-splashscreen` from 1.0.1 to 1.2.0\n\nUpdates `androidx.room:room-runtime` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `androidx.security:security-crypto` from 1.1.0-alpha06 to 1.1.0\n\nUpdates `androidx.test.ext:junit` from 1.1.5 to 1.3.0\n\nUpdates `androidx.test.espresso:espresso-core` from 3.5.1 to 3.7.0","html_url":"https://github.com/bwhtech/helpdesk_mobile/pull/23","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/bwhtech%2Fhelpdesk_mobile/issues/23","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/23/packages"},{"uuid":"5354162321","node_id":"PR_kwDOTccscM8AAAABCRihzg","number":28,"state":"closed","title":"Bump the gradle-dependencies group across 1 directory with 15 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-11T23:35:09.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-04T23:42:10.000Z","updated_at":"2026-09-11T23:35:11.000Z","time_to_close":604379,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"gradle-dependencies","update_count":15,"packages":[{"name":"androidx.core:core-ktx","old_version":"1.16.0","new_version":"1.19.0"},{"name":"androidx.test.ext:junit","old_version":"1.2.1","new_version":"1.3.0"},{"name":"androidx.test:core","old_version":"1.6.1","new_version":"1.7.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.6.1","new_version":"3.7.0"},{"name":"androidx.compose:compose-bom","old_version":"2026.06.01","new_version":"2026.08.00"},{"name":"androidx.navigation:navigation-compose","old_version":"2.9.1","new_version":"2.10.0"},{"name":"androidx.appcompat:appcompat","old_version":"1.7.0","new_version":"1.8.0"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-test","old_version":"1.10.2","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"org.robolectric:robolectric","old_version":"4.14.1","new_version":"4.16.1","repository_url":"https://github.com/robolectric/robolectric"},{"name":"com.android.application","old_version":"8.11.1","new_version":"8.13.2"},{"name":"org.jetbrains.kotlin.android","old_version":"2.2.0","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.2.0","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.google.devtools.ksp","old_version":"2.2.0-2.0.2","new_version":"2.3.11","repository_url":"https://github.com/google/ksp"},{"name":"com.google.gms.google-services","old_version":"4.4.2","new_version":"4.5.0"},{"name":"com.google.firebase.crashlytics","old_version":"3.0.3","new_version":"3.0.8"}],"path":null,"ecosystem":"maven"},"body":"Bumps the gradle-dependencies group with 15 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| androidx.core:core-ktx | `1.16.0` | `1.19.0` |\n| androidx.test.ext:junit | `1.2.1` | `1.3.0` |\n| androidx.test:core | `1.6.1` | `1.7.0` |\n| androidx.test.espresso:espresso-core | `3.6.1` | `3.7.0` |\n| androidx.compose:compose-bom | `2026.06.01` | `2026.08.00` |\n| androidx.navigation:navigation-compose | `2.9.1` | `2.10.0` |\n| androidx.appcompat:appcompat | `1.7.0` | `1.8.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-test](https://github.com/Kotlin/kotlinx.coroutines) | `1.10.2` | `1.11.0` |\n| [org.robolectric:robolectric](https://github.com/robolectric/robolectric) | `4.14.1` | `4.16.1` |\n| com.android.application | `8.11.1` | `8.13.2` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.2.0` | `2.4.10` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.2.0` | `2.4.10` |\n| [com.google.devtools.ksp](https://github.com/google/ksp) | `2.2.0-2.0.2` | `2.3.11` |\n| com.google.gms.google-services | `4.4.2` | `4.5.0` |\n| com.google.firebase.crashlytics | `3.0.3` | `3.0.8` |\n\n\nUpdates `androidx.core:core-ktx` from 1.16.0 to 1.19.0\n\nUpdates `androidx.test.ext:junit` from 1.2.1 to 1.3.0\n\nUpdates `androidx.test:core` from 1.6.1 to 1.7.0\n\nUpdates `androidx.test.espresso:espresso-core` from 3.6.1 to 3.7.0\n\nUpdates `androidx.compose:compose-bom` from 2026.06.01 to 2026.08.00\n\nUpdates `androidx.navigation:navigation-compose` from 2.9.1 to 2.10.0\n\nUpdates `androidx.appcompat:appcompat` from 1.7.0 to 1.8.0\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-test` from 1.10.2 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-test's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-test's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874\"\u003e\u003ccode\u003e8564f65\u003c/code\u003e\u003c/a\u003e Version 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c\"\u003e\u003ccode\u003ea4c6af9\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9\"\u003e\u003ccode\u003eef917b4\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd\"\u003e\u003ccode\u003e5ebc421\u003c/code\u003e\u003c/a\u003e Update the release procedure description (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80\"\u003e\u003ccode\u003e95f46a0\u003c/code\u003e\u003c/a\u003e Remove old maven repository settings (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672\"\u003e#4672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc\"\u003e\u003ccode\u003eb4f4f0a\u003c/code\u003e\u003c/a\u003e Fix package name of \u003ccode\u003eToMapCollectionSamplesTest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674\"\u003e#4674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/86738dca7dc9ac82249abc8206263fa0065ee631\"\u003e\u003ccode\u003e86738dc\u003c/code\u003e\u003c/a\u003e Added templates to the issue creation wizard (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/330fcc221fb583f0b119f34191f735a73b827378\"\u003e\u003ccode\u003e330fcc2\u003c/code\u003e\u003c/a\u003e Version 1.11.0-rc02\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/e31cef6e9f2d26794be7d75ecbf3033b6432d582\"\u003e\u003ccode\u003ee31cef6\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/dc6e9f61eaf3a67f4bf474a7987aedc3f16cef37\"\u003e\u003ccode\u003edc6e9f6\u003c/code\u003e\u003c/a\u003e Restore Promise-related functions on Wasm/JS as HIDDEN (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/compare/1.10.2...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.robolectric:robolectric` from 4.14.1 to 4.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/robolectric/robolectric/releases\"\u003eorg.robolectric:robolectric's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eRobolectric 4.16.1 is a minor release that fixes some issues when Robolectric is used for Android Platform development. Most notably, it is updated to support the deletion of \u003ca href=\"https://developer.android.com/reference/android/hardware/fingerprint/FingerprintManager\"\u003eFingerprintManager\u003c/a\u003e in the Android Framework, as well as some improvements to the \u003ccode\u003eVirtualDeviceManager\u003c/code\u003e shadow.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/robolectric/robolectric/compare/robolectric-4.16...robolectric-4.16.1\"\u003ehttps://github.com/robolectric/robolectric/compare/robolectric-4.16...robolectric-4.16.1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eRobolectric 4.16 supports Android Baklava (SDK 36), and you need to use JDK 21 if running tests with SDK 36 target. It also removes support for Android L (SDK 21 and 22).\u003c/p\u003e\n\u003cp\u003eOne exciting new feature is native resources (ResourcesMode.NATIVE). Note this is currently only available in SDK 36.\u003c/p\u003e\n\u003cp\u003eIf you have any issues, please file them \u003ca href=\"https://github.com/robolectric/robolectric/issues\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReuse \u003ccode\u003eShadowUIModeManager\u003c/code\u003e in \u003ccode\u003eShadowUIModeManagerTest\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10368\"\u003erobolectric/robolectric#10368\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate AndroidX by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10373\"\u003erobolectric/robolectric#10373\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency gradle to v8.14.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10372\"\u003erobolectric/robolectric#10372\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency com.googlecode.libphonenumber:libphonenumber to v9.0.7 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10371\"\u003erobolectric/robolectric#10371\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency org.bouncycastle:bcprov-jdk18on to v1.81 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10374\"\u003erobolectric/robolectric#10374\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ApplicationInfo inconsistencies in Robolectric. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10375\"\u003erobolectric/robolectric#10375\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd shadow for new resolveActivityAsUser variant. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10377\"\u003erobolectric/robolectric#10377\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdjust to indevelopment SDK changes. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10379\"\u003erobolectric/robolectric#10379\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding support to the Simulator for picking up the device configuration from a Configurer. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10381\"\u003erobolectric/robolectric#10381\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClean up SDK ranges for shadow methods in Baklava. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10380\"\u003erobolectric/robolectric#10380\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a shadow for Equalizer in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10384\"\u003erobolectric/robolectric#10384\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate example to be consistent with robolectric.org by \u003ca href=\"https://github.com/seadowg\"\u003e\u003ccode\u003e@​seadowg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/7475\"\u003erobolectric/robolectric#7475\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate the \u003ccode\u003esimulator-gradle-plugin\u003c/code\u003e to depends on AGP \u003ccode\u003egradle-api\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10386\"\u003erobolectric/robolectric#10386\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace custom \u003ccode\u003egetOrDefault()\u003c/code\u003e with the corresponding Java method by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10370\"\u003erobolectric/robolectric#10370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Javadoc for \u003ccode\u003eShadowPausedLooper\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10387\"\u003erobolectric/robolectric#10387\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix condition in \u003ccode\u003eResourceHelper#parseFloatAttribute()\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10369\"\u003erobolectric/robolectric#10369\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eValidate listener in \u003ccode\u003eShadowAccountManager#addOnAccountsUpdatedListener()\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10361\"\u003erobolectric/robolectric#10361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for UiModeManager.setNightMode(UiModeManager.MODE_NIGHT_CUSTOM) in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10390\"\u003erobolectric/robolectric#10390\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLazily register the simulator plugin by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10391\"\u003erobolectric/robolectric#10391\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable stricter plugin validation by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10388\"\u003erobolectric/robolectric#10388\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the VirtualDeviceManager#getVirtualDevice(int deviceId) to the ShadowVirtualDeviceManager. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10395\"\u003erobolectric/robolectric#10395\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix various small warnings by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10394\"\u003erobolectric/robolectric#10394\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd shadow implement of AccessibilityService#getRootInActiveWindow in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10397\"\u003erobolectric/robolectric#10397\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd more information to the generated POM file by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10392\"\u003erobolectric/robolectric#10392\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange ShadowChoreographer.getDefaultFrameDelay into a shadow method. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10404\"\u003erobolectric/robolectric#10404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRestore removed methods from \u003ccode\u003eConfig\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10406\"\u003erobolectric/robolectric#10406\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd shadow override for Network SocketFactory. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10409\"\u003erobolectric/robolectric#10409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing deprecations to some \u003ccode\u003eConfig.Builder\u003c/code\u003e methods by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10408\"\u003erobolectric/robolectric#10408\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003etestDebugUnitTest\u003c/code\u003e from the dependencies of the \u003ccode\u003esimulator\u003c/code\u003e task by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10413\"\u003erobolectric/robolectric#10413\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMerge branch 'google' into 'master' by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10414\"\u003erobolectric/robolectric#10414\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the snapshot version to 4.16 by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10415\"\u003erobolectric/robolectric#10415\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ability to specify is80211azNtbMeasurement to ShadowRangingResult in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10410\"\u003erobolectric/robolectric#10410\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded implementation for Path.op by \u003ca href=\"https://github.com/GisoBartels\"\u003e\u003ccode\u003e@​GisoBartels\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10288\"\u003erobolectric/robolectric#10288\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix massive code warnings of ShadowVirtualDeviceManagerTest by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10399\"\u003erobolectric/robolectric#10399\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove redundant String concatenation by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10417\"\u003erobolectric/robolectric#10417\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigrate deprecated APIs to idleMainLooper for ShadowVirtualDeviceManagerTest by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10418\"\u003erobolectric/robolectric#10418\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace Stream#toList to Stream#collect(Collectors.toList()) by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10420\"\u003erobolectric/robolectric#10420\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport Java 11 in the simulator gradle plugin by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10421\"\u003erobolectric/robolectric#10421\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate AndroidX by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10422\"\u003erobolectric/robolectric#10422\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/524ea8e634ad51b39356a41fbb4a3474034dd250\"\u003e\u003ccode\u003e524ea8e\u003c/code\u003e\u003c/a\u003e Bump version to 4.16.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/54fd1eeaf0ce87ac3280a7156a666dcddffe874f\"\u003e\u003ccode\u003e54fd1ee\u003c/code\u003e\u003c/a\u003e Implement ResTable support for shared libraries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/1e35e634fc7c22e1d54fe3ac73ab8fce704bd4db\"\u003e\u003ccode\u003e1e35e63\u003c/code\u003e\u003c/a\u003e When a top-level exception occurs in the Simulator, print the stack trace and...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/e2c046f467de139f346eff3e0c0ff2d3610f66e6\"\u003e\u003ccode\u003ee2c046f\u003c/code\u003e\u003c/a\u003e Added custom ThreadFactory to name threads in LocalUIController\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/7f3165a0f04a222579f46dec49d02242e4bb1b0d\"\u003e\u003ccode\u003e7f3165a\u003c/code\u003e\u003c/a\u003e Add newly required \u003ccode\u003e--add-exports\u003c/code\u003e arguments to test tasks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/db54b4b046e460eb6e5df5f19c8ae8abfa276455\"\u003e\u003ccode\u003edb54b4b\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eVirtualDeviceParamsBuilder\u003c/code\u003e to support creating new virtual devices.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/b73adc38c8f5aed39e3e08d844145c5fe2e7ad33\"\u003e\u003ccode\u003eb73adc3\u003c/code\u003e\u003c/a\u003e Implement shadow behavior for VirtualDeviceManager#registerVirtualDeviceListener\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/1e05fdeb1c5fe630b070dad13553806b58650149\"\u003e\u003ccode\u003e1e05fde\u003c/code\u003e\u003c/a\u003e Create shadow for VirtualDeviceManager$VirtualDevice#createVirtualCamera\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/d160747766edebd7b36e61d37f930fd253e7f429\"\u003e\u003ccode\u003ed160747\u003c/code\u003e\u003c/a\u003e Future proof ShadowFingerprintManagerTest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/d7a0438407c7eb82488b4474e51128d44a493eda\"\u003e\u003ccode\u003ed7a0438\u003c/code\u003e\u003c/a\u003e Add maxSdk for ShadowFingerprintManager.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/robolectric/robolectric/compare/robolectric-4.14.1...robolectric-4.16.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.android.application` from 8.11.1 to 8.13.2\n\nUpdates `org.jetbrains.kotlin.android` from 2.2.0 to 2.4.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.10\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eKotlin 2.4.10-RC2\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.10\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.4.0\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83867\"\u003e\u003ccode\u003eKT-83867\u003c/code\u003e\u003c/a\u003e OVERLOAD_RESOLUTION_AMBIGUITY false positive with assertEquals in IJ repo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83723\"\u003e\u003ccode\u003eKT-83723\u003c/code\u003e\u003c/a\u003e [Analysis API] Enable experimental KDoc resolver by default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83388\"\u003e\u003ccode\u003eKT-83388\u003c/code\u003e\u003c/a\u003e Analysis API: properly support KMP in KotlinPackageProvider\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/5687445832cd835b4509b9fbc264cdf1a8201093\"\u003e\u003ccode\u003e5687445\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ba30392c459dd7c1ae74c1501e83453144416bc9\"\u003e\u003ccode\u003eba30392\u003c/code\u003e\u003c/a\u003e [Wasm] Support regenerate unchanged modules flag on KGP\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6307e7310d14eef05f199ebccd9518379772d3a7\"\u003e\u003ccode\u003e6307e73\u003c/code\u003e\u003c/a\u003e [Wasm] Implement Xwasm-IC-generate-unchanged-modules flag\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/39d7aee8470b7ce61fea8f76c317456e2756f7c0\"\u003e\u003ccode\u003e39d7aee\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a2956bed85f99752b78881075665d81a82e98ab2\"\u003e\u003ccode\u003ea2956be\u003c/code\u003e\u003c/a\u003e [Gradle] Update karma.conf.js to use 'require(...)' instead plain strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9b1361ce7a6cfd2edd6f8cdb05198573fb839b61\"\u003e\u003ccode\u003e9b1361c\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Updated regression test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a4c153af52ad4694c0cca14c25812db54b19f90e\"\u003e\u003ccode\u003ea4c153a\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Fix toochain to 2.4.0 for abiValidation compat config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bc04b90d245cd27d8339fe51bd43a90dd4c04e9f\"\u003e\u003ccode\u003ebc04b90\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bbcb94baa2eed1cc5ccb39147dcf5a5a184d7a14\"\u003e\u003ccode\u003ebbcb94b\u003c/code\u003e\u003c/a\u003e [CRI] explicitly disable CRI generation for non-JVM targets to avoid false-po...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6c2c458f1d2e4b4f8638fb16f12ff1dd375c4ae2\"\u003e\u003ccode\u003e6c2c458\u003c/code\u003e\u003c/a\u003e Scripting: fix jvmTarget processing from script annotations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.2.0...v2.4.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.plugin.compose` from 2.2.0 to 2.4.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.10\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eKotlin 2.4.10-RC2\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.plugin.compose's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.10\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.4.0\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83867\"\u003e\u003ccode\u003eKT-83867\u003c/code\u003e\u003c/a\u003e OVERLOAD_RESOLUTION_AMBIGUITY false positive with assertEquals in IJ repo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83723\"\u003e\u003ccode\u003eKT-83723\u003c/code\u003e\u003c/a\u003e [Analysis API] Enable experimental KDoc resolver by default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83388\"\u003e\u003ccode\u003eKT-83388\u003c/code\u003e\u003c/a\u003e Analysis API: properly support KMP in KotlinPackageProvider\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/5687445832cd835b4509b9fbc264cdf1a8201093\"\u003e\u003ccode\u003e5687445\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ba30392c459dd7c1ae74c1501e83453144416bc9\"\u003e\u003ccode\u003eba30392\u003c/code\u003e\u003c/a\u003e [Wasm] Support regenerate unchanged modules flag on KGP\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6307e7310d14eef05f199ebccd9518379772d3a7\"\u003e\u003ccode\u003e6307e73\u003c/code\u003e\u003c/a\u003e [Wasm] Implement Xwasm-IC-generate-unchanged-modules flag\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/39d7aee8470b7ce61fea8f76c317456e2756f7c0\"\u003e\u003ccode\u003e39d7aee\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a2956bed85f99752b78881075665d81a82e98ab2\"\u003e\u003ccode\u003ea2956be\u003c/code\u003e\u003c/a\u003e [Gradle] Update karma.conf.js to use 'require(...)' instead plain strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9b1361ce7a6cfd2edd6f8cdb05198573fb839b61\"\u003e\u003ccode\u003e9b1361c\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Updated regression test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a4c153af52ad4694c0cca14c25812db54b19f90e\"\u003e\u003ccode\u003ea4c153a\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Fix toochain to 2.4.0 for abiValidation compat config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bc04b90d245cd27d8339fe51bd43a90dd4c04e9f\"\u003e\u003ccode\u003ebc04b90\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bbcb94baa2eed1cc5ccb39147dcf5a5a184d7a14\"\u003e\u003ccode\u003ebbcb94b\u003c/code\u003e\u003c/a\u003e [CRI] explicitly disable CRI generation for non-JVM targets to avoid false-po...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6c2c458f1d2e4b4f8638fb16f12ff1dd375c4ae2\"\u003e\u003ccode\u003e6c2c458\u003c/code\u003e\u003c/a\u003e Scripting: fix jvmTarget processing from script annotations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.2.0...v2.4.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.plugin.compose` from 2.2.0 to 2.4.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.10\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eKotlin 2.4.10-RC2\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.plugin.compose's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.10\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.4.0\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83867\"\u003e\u003ccode\u003eKT-83867\u003c/code\u003e\u003c/a\u003e OVERLOAD_RESOLUTION_AMBIGUITY false positive with assertEquals in IJ repo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83723\"\u003e\u003ccode\u003eKT-83723\u003c/code\u003e\u003c/a\u003e [Analysis API] Enable experimental KDoc resolver by default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83388\"\u003e\u003ccode\u003eKT-83388\u003c/code\u003e\u003c/a\u003e Analysis API: properly support KMP in KotlinPackageProvider\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/5687445832cd835b4509b9fbc264cdf1a8201093\"\u003e\u003ccode\u003e5687445\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ba30392c459dd7c1ae74c1501e83453144416bc9\"\u003e\u003ccode\u003eba30392\u003c/code\u003e\u003c/a\u003e [Wasm] Support regenerate unchanged modules flag on KGP\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6307e7310d14eef05f199ebccd9518379772d3a7\"\u003e\u003ccode\u003e6307e73\u003c/code\u003e\u003c/a\u003e [Wasm] Implement Xwasm-IC-generate-unchanged-modules flag\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/39d7aee8470b7ce61fea8f76c317456e2756f7c0\"\u003e\u003ccode\u003e39d7aee\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a2956bed85f99752b78881075665d81a82e98ab2\"\u003e\u003ccode\u003ea2956be\u003c/code\u003e\u003c/a\u003e [Gradle] Update karma.conf.js to use 'require(...)' instead plain strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9b1361ce7a6cfd2edd6f8cdb05198573fb839b61\"\u003e\u003ccode\u003e9b1361c\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Updated regression test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a4c153af52ad4694c0cca14c25812db54b19f90e\"\u003e\u003ccode\u003ea4c153a\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Fix toochain to 2.4.0 for abiValidation compat config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bc04b90d245cd27d8339fe51bd43a90dd4c04e9f\"\u003e\u003ccode\u003ebc04b90\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bbcb94baa2eed1cc5ccb39147dcf5a5a184d7a14\"\u003e\u003ccode\u003ebbcb94b\u003c/code\u003e\u003c/a\u003e [CRI] explicitly disable CRI generation for non-JVM targets to avoid false-po...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6c2c458f1d2e4b4f8638fb16f12ff1dd375c4ae2\"\u003e\u003ccode\u003e6c2c458\u003c/code\u003e\u003c/a\u003e Scripting: fix jvmTarget processing from script annotations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.2.0...v2.4.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.devtools.ksp` from 2.2.0-2.0.2 to 2.3.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/ksp/releases\"\u003ecom.google.devtools.ksp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.3.11\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eorg.gradle.isolated-projects\u003c/code\u003e for project isolation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3051\"\u003e#3051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix premature \u003ccode\u003ekspDebugAndroidTest\u003c/code\u003e task skipping on Android library modules (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix missing parent declaration exception for \u003ccode\u003e@NotNull\u003c/code\u003e annotations during incremental compilation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3030\"\u003e#3030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClean output directories instead of skipping tasks when processor classpath transitions to empty (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3046\"\u003e#3046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix build cache misses by marking \u003ccode\u003eKspGradleConfig.logLevel\u003c/code\u003e as \u003ccode\u003e@Internal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3039\"\u003e#3039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eorg.gradle.isolated-projects=true\u003c/code\u003e to KSP Gradle properties reference table (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3076\"\u003e#3076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd KSP Gradle properties reference table to README documentation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3070\"\u003e#3070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument collection values in \u003ccode\u003eKSValueArgument.value\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3069\"\u003e#3069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate error messaging for \u003ccode\u003eksp.useKSP2\u003c/code\u003e deprecation notice (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3066\"\u003e#3066\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThanks to \u003ca href=\"https://github.com/simonlebras\"\u003e\u003ccode\u003e@​simonlebras\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/ChristianKatzmann\"\u003e\u003ccode\u003e@​ChristianKatzmann\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/Yong-yuan-X\"\u003e\u003ccode\u003e@​Yong-yuan-X\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/bacecek\"\u003e\u003ccode\u003e@​bacecek\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/KlyneChrysler\"\u003e\u003ccode\u003e@​KlyneChrysler\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/Shaurya2k06\"\u003e\u003ccode\u003e@​Shaurya2k06\u003c/code\u003e\u003c/a\u003e, and everyone who reported bugs and participated in discussions!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/ksp/compare/2.3.10...2.3.11\"\u003ehttps://github.com/google/ksp/compare/2.3.10...2.3.11\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.3.10\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix OOMs caused by unstopped coroutine Dispatcher threads by moving KSP task cache to a gradle build service (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2817\"\u003e#2817\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSanitize ':' in internal-name module suffix so KSP works with Kotlin 2.4.0 default module names (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2964\"\u003e#2964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFilter source file trees in KspAATask to restore NO-SOURCE skipping behaviour (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2947\"\u003e#2947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix R-class resolution in KSP when AGP 9 built-in Kotlin is enabled (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2857\"\u003e#2857\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix KSP2 incremental cache path normalization mismatch (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2854\"\u003e#2854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize line endings for KspAATask source roots to prevent cross-platform remote build cache misses (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2849\"\u003e#2849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bug where KSP incremental compilation does not consider library class references in annotations (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3011\"\u003e#3011\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eConsume all Kotlin sources in KSP to support other code generators (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3001\"\u003e#3001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix configuration cache invalidation in klib cross-compilation check (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3014\"\u003e#3014\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMemoized hash code for \u003ccode\u003eKSTypeImpl\u003c/code\u003e to speed up processing (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2896\"\u003e#2896\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix incorrect name generation for data classes annotated with \u003ccode\u003e@JvmRecord\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2813\"\u003e#2813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInclude \u003ccode\u003ekotlinx.coroutines\u003c/code\u003e in the distributed uber jar \u003ccode\u003esymbol-processing-aa-embeddable\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2938\"\u003e#2938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew debugging features for incremental compilation, including additional logging and dependency graph visualization (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3015\"\u003e#3015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeprecate the \u003ccode\u003eksp(...)\u003c/code\u003e Gradle configuration in Kotlin Multiplatform (KMP) projects in favor of target-specific configurations (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2956\"\u003e#2956\u003c/a\u003e). Note: Non-KMP projects are also affected. For migration details, see the \u003ca href=\"https://kotlinlang.org/docs/ksp-multiplatform.html#avoid-the-ksp-configuration-on-ksp-1-0-1\"\u003edocumentation\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThanks to \u003ca href=\"https://github.com/mvanhorn\"\u003e\u003ccode\u003e@​mvanhorn\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/Yong-yuan-X\"\u003e\u003ccode\u003e@​Yong-yuan-X\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/MariusVolkhart\"\u003e\u003ccode\u003e@​MariusVolkhart\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/shmuelr\"\u003e\u003ccode\u003e@​shmuelr\u003c/code\u003e\u003c/a\u003e and everyone who reported bugs and participated in discussions!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/ksp/compare/2.3.9...2.3.10\"\u003ehttps://github.com/google/ksp/compare/2.3.9...2.3.10\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.3.9\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleaned up native cross-compilation support checks to prevent Gradle Configuration Cache invalidation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2953\"\u003e#2953\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a compilation performance regression in in PsiResolutionStrategy introduced in 2.3.8  (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2948\"\u003e#2948\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThanks to everyone who reported bugs and participated in discussions!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/ksp/compare/2.3.8...2.3.9\"\u003ehttps://github.com/google/ksp/compare/2.3.8...2.3.9\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/c44fd9a91192679e07a1d905dda022796e32bbbe\"\u003e\u003ccode\u003ec44fd9a\u003c/code\u003e\u003c/a\u003e Rename coroutines core-jvm alias to coreJvm per review\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/5cec34dab94b81371fca720ff188fb42c38c108f\"\u003e\u003ccode\u003e5cec34d\u003c/code\u003e\u003c/a\u003e Move root build plugin versions to the version catalog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/b956e6b1f856717db7cbd1a24e23f73a7216c998\"\u003e\u003ccode\u003eb956e6b\u003c/code\u003e\u003c/a\u003e Move remaining kotlin-analysis-api versions to the version catalog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/9aed49722363306f8dc75c193b9c1f956907a628\"\u003e\u003ccode\u003e9aed497\u003c/code\u003e\u003c/a\u003e Do not cherry-pick conflicting commits in CI auto-merge workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/145dcd65fc7227a5fbb32a0e993681ac925f1a93\"\u003e\u003ccode\u003e145dcd6\u003c/code\u003e\u003c/a\u003e Update gradle wrapper to 9.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/68762a9376230007f02d10...\n\n_Description has been truncated_","html_url":"https://github.com/CiobanDaniel/route-planner-android/pull/28","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/CiobanDaniel%2Froute-planner-android/issues/28","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/28/packages"},{"uuid":"5348065257","node_id":"PR_kwDOSyQXzc8AAAABCMolPw","number":36,"state":"closed","title":"chore(deps): bump the android-deps group across 1 directory with 29 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-11T12:25:32.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-04T12:28:21.000Z","updated_at":"2026-09-11T12:25:34.000Z","time_to_close":604631,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"android-deps","update_count":29,"packages":[{"name":"com.android.application","old_version":"8.13.0","new_version":"9.4.0"},{"name":"org.jetbrains.kotlin.android","old_version":"1.9.22","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.google.dagger.hilt.android","old_version":"2.50","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"com.google.gms.google-services","old_version":"4.4.0","new_version":"4.5.0"},{"name":"com.google.firebase.crashlytics","old_version":"2.9.9","new_version":"3.0.8"},{"name":"androidx.core:core-ktx","old_version":"1.12.0","new_version":"1.19.0"},{"name":"androidx.compose:compose-bom","old_version":"2023.10.01","new_version":"2026.08.00"},{"name":"com.google.android.material:material","old_version":"1.11.0","new_version":"1.14.0","repository_url":"https://github.com/material-components/material-components-android"},{"name":"androidx.navigation:navigation-compose","old_version":"2.7.6","new_version":"2.10.0"},{"name":"com.google.dagger:hilt-android","old_version":"2.50","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"androidx.hilt:hilt-navigation-compose","old_version":"1.1.0","new_version":"1.4.0"},{"name":"com.squareup.retrofit2:retrofit","old_version":"2.11.0","new_version":"3.0.0","repository_url":"https://github.com/square/retrofit"},{"name":"com.squareup.okhttp3:logging-interceptor","old_version":"4.12.0","new_version":"5.5.0","repository_url":"https://github.com/lysine-dev/okhttp"},{"name":"androidx.room:room-runtime","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-ktx","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-compiler","old_version":"2.6.1","new_version":"2.8.4"},{"name":"io.coil-kt:coil-compose","old_version":"2.5.0","new_version":"2.7.0","repository_url":"https://github.com/coil-kt/coil"},{"name":"androidx.security:security-crypto","old_version":"1.1.0-alpha06","new_version":"1.1.0"},{"name":"com.google.android.libraries.identity.googleid:googleid","old_version":"1.1.1","new_version":"1.2.0"},{"name":"com.google.android.gms:play-services-auth","old_version":"21.0.0","new_version":"22.0.0"},{"name":"com.google.firebase:firebase-bom","old_version":"32.7.1","new_version":"34.18.0"},{"name":"androidx.exifinterface:exifinterface","old_version":"1.3.7","new_version":"1.4.2"},{"name":"androidx.test.ext:junit","old_version":"1.1.5","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.5.1","new_version":"3.7.0"},{"name":"gradle-wrapper","old_version":"8.13","new_version":"9.7.1","repository_url":"https://github.com/gradle/gradle"}],"path":null,"ecosystem":"maven"},"body":"Bumps the android-deps group with 25 updates in the /android directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| com.android.application | `8.13.0` | `9.4.0` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `1.9.22` | `2.4.10` |\n| [com.google.dagger.hilt.android](https://github.com/google/dagger) | `2.50` | `2.60.1` |\n| com.google.gms.google-services | `4.4.0` | `4.5.0` |\n| com.google.firebase.crashlytics | `2.9.9` | `3.0.8` |\n| androidx.core:core-ktx | `1.12.0` | `1.19.0` |\n| androidx.compose:compose-bom | `2023.10.01` | `2026.08.00` |\n| [com.google.android.material:material](https://github.com/material-components/material-components-android) | `1.11.0` | `1.14.0` |\n| androidx.navigation:navigation-compose | `2.7.6` | `2.10.0` |\n| [com.google.dagger:hilt-android](https://github.com/google/dagger) | `2.50` | `2.60.1` |\n| androidx.hilt:hilt-navigation-compose | `1.1.0` | `1.4.0` |\n| [com.squareup.retrofit2:retrofit](https://github.com/square/retrofit) | `2.11.0` | `3.0.0` |\n| [com.squareup.okhttp3:logging-interceptor](https://github.com/lysine-dev/okhttp) | `4.12.0` | `5.5.0` |\n| androidx.room:room-runtime | `2.6.1` | `2.8.4` |\n| androidx.room:room-ktx | `2.6.1` | `2.8.4` |\n| androidx.room:room-compiler | `2.6.1` | `2.8.4` |\n| [io.coil-kt:coil-compose](https://github.com/coil-kt/coil) | `2.5.0` | `2.7.0` |\n| androidx.security:security-crypto | `1.1.0-alpha06` | `1.1.0` |\n| com.google.android.libraries.identity.googleid:googleid | `1.1.1` | `1.2.0` |\n| com.google.android.gms:play-services-auth | `21.0.0` | `22.0.0` |\n| com.google.firebase:firebase-bom | `32.7.1` | `34.18.0` |\n| androidx.exifinterface:exifinterface | `1.3.7` | `1.4.2` |\n| androidx.test.ext:junit | `1.1.5` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.5.1` | `3.7.0` |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `8.13` | `9.7.1` |\n\n\nUpdates `com.android.application` from 8.13.0 to 9.4.0\n\nUpdates `org.jetbrains.kotlin.android` from 1.9.22 to 2.4.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.10\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eKotlin 2.4.10-RC2\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.10\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.4.0\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83867\"\u003e\u003ccode\u003eKT-83867\u003c/code\u003e\u003c/a\u003e OVERLOAD_RESOLUTION_AMBIGUITY false positive with assertEquals in IJ repo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83723\"\u003e\u003ccode\u003eKT-83723\u003c/code\u003e\u003c/a\u003e [Analysis API] Enable experimental KDoc resolver by default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83388\"\u003e\u003ccode\u003eKT-83388\u003c/code\u003e\u003c/a\u003e Analysis API: properly support KMP in KotlinPackageProvider\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/5687445832cd835b4509b9fbc264cdf1a8201093\"\u003e\u003ccode\u003e5687445\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ba30392c459dd7c1ae74c1501e83453144416bc9\"\u003e\u003ccode\u003eba30392\u003c/code\u003e\u003c/a\u003e [Wasm] Support regenerate unchanged modules flag on KGP\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6307e7310d14eef05f199ebccd9518379772d3a7\"\u003e\u003ccode\u003e6307e73\u003c/code\u003e\u003c/a\u003e [Wasm] Implement Xwasm-IC-generate-unchanged-modules flag\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/39d7aee8470b7ce61fea8f76c317456e2756f7c0\"\u003e\u003ccode\u003e39d7aee\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a2956bed85f99752b78881075665d81a82e98ab2\"\u003e\u003ccode\u003ea2956be\u003c/code\u003e\u003c/a\u003e [Gradle] Update karma.conf.js to use 'require(...)' instead plain strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9b1361ce7a6cfd2edd6f8cdb05198573fb839b61\"\u003e\u003ccode\u003e9b1361c\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Updated regression test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a4c153af52ad4694c0cca14c25812db54b19f90e\"\u003e\u003ccode\u003ea4c153a\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Fix toochain to 2.4.0 for abiValidation compat config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bc04b90d245cd27d8339fe51bd43a90dd4c04e9f\"\u003e\u003ccode\u003ebc04b90\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bbcb94baa2eed1cc5ccb39147dcf5a5a184d7a14\"\u003e\u003ccode\u003ebbcb94b\u003c/code\u003e\u003c/a\u003e [CRI] explicitly disable CRI generation for non-JVM targets to avoid false-po...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6c2c458f1d2e4b4f8638fb16f12ff1dd375c4ae2\"\u003e\u003ccode\u003e6c2c458\u003c/code\u003e\u003c/a\u003e Scripting: fix jvmTarget processing from script annotations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v1.9.22...v2.4.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger.hilt.android` from 2.50 to 2.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger.hilt.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5203\"\u003e#5203\u003c/a\u003e: Fixes regression in Dagger 2.60 where the Hilt compiler options (like fastInit) failed to propagate to the Hilt aggregation compilation tasks. (e181a0d88)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5204\"\u003e#5204\u003c/a\u003e: Fixes \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e import error by removing the annotation from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e (3f2dd8fba)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7a89b6cea7d47167f2d5f9912f61f3fee333d88\"\u003e\u003ccode\u003ef7a89b6\u003c/code\u003e\u003c/a\u003e 2.60.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/76780171d7c3ff0dc0240644f703cf181fd8b8e8\"\u003e\u003ccode\u003e7678017\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/974fe294b70f2a3ea43731a4f5b95e75c2bcb38d\"\u003e\u003ccode\u003e974fe29\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/823484c63fbdcc61d413bba40d164272f22e51a8\"\u003e\u003ccode\u003e823484c\u003c/code\u003e\u003c/a\u003e Make Android*InjectionTest$ApplicationReturnsNull public.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/c26f8d7be8ff1856667ddb3b070a410b3aeabfcc\"\u003e\u003ccode\u003ec26f8d7\u003c/code\u003e\u003c/a\u003e Add test for \u003ccode\u003e@AssistedFactory\u003c/code\u003e compilations without compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e181a0d884a3f14c8a7967af5d45f0a8c9a600ac\"\u003e\u003ccode\u003ee181a0d\u003c/code\u003e\u003c/a\u003e Fix Hilt compiler option propagation to Hilt aggregation tasks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/812e2f337718a79dd45ab8488398b5a893291ae8\"\u003e\u003ccode\u003e812e2f3\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3f2dd8fbab0a71ec09dc4f9dc543d89ec108c7f0\"\u003e\u003ccode\u003e3f2dd8f\u003c/code\u003e\u003c/a\u003e Delete \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e90e102c73d67ccb3aaad1835391e6cee2a17b42\"\u003e\u003ccode\u003ee90e102\u003c/code\u003e\u003c/a\u003e Update Dagger version in yml config and REAME.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.50...dagger-2.60.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.gms.google-services` from 4.4.0 to 4.5.0\n\nUpdates `com.google.firebase.crashlytics` from 2.9.9 to 3.0.8\n\nUpdates `androidx.core:core-ktx` from 1.12.0 to 1.19.0\n\nUpdates `androidx.compose:compose-bom` from 2023.10.01 to 2026.08.00\n\nUpdates `com.google.android.material:material` from 1.11.0 to 1.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/material-components/material-components-android/releases\"\u003ecom.google.android.material:material's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.14.0\u003c/h2\u003e\n\u003ch1\u003eNew in 1.14.0!\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eExpressive Themes (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/getting-started.md#material3expressive-themes\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Lists (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/List.md\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Button Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/CommonButton.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Icon Button Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/IconButton.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Button Group Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/ButtonGroup.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive FAB Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/FloatingActionButton.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Top App Bar Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/TopAppBar.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Navigation Bar (BottomNavigationView) Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/BottomNavigation.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Navigation Rail Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/NavigationRail.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Search Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/Search.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Progress Indicator Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/ProgressIndicator.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Slider Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/Slider.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEmphasized Typescale (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/theming/Typography.md#emphasized-scale\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImportant\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRequired \u003ccode\u003eminSdkVersion\u003c/code\u003e is now 23 or higher, for Material and \u003ca href=\"https://developer.android.com/jetpack/androidx/versions#version-table\"\u003eAndroidX\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eLibrary is now built with Android Gradle Plugin (AGP) 8.11.1 and Gradle 8.13.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDependency Updates\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eDependency\u003c/th\u003e\n\u003cth\u003ePrevious version\u003c/th\u003e\n\u003cth\u003eNew version\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.constraintlayout:constraintlayout\u003c/td\u003e\n\u003ctd\u003e2.1.0\u003c/td\u003e\n\u003ctd\u003e2.2.1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.core:core\u003c/td\u003e\n\u003ctd\u003e1.6.0\u003c/td\u003e\n\u003ctd\u003e1.16.0\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.customview:customview\u003c/td\u003e\n\u003ctd\u003eN/A\u003c/td\u003e\n\u003ctd\u003e1.2.0\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ecom.android.tools.build:gradle\u003c/td\u003e\n\u003ctd\u003e8.7.3\u003c/td\u003e\n\u003ctd\u003e8.11.1\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eLibrary Updates\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eAppBar\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eFixed the bug that setBackground will reset the internal MaterialShapeDrawable for lift-on-scroll feature. (1adc50110ed6491661f89aa535355b1480fac73a)\u003c/li\u003e\n\u003cli\u003eAdd support for navigation button with circle background (015e0534e1a6205224097f258102f913832f99ed)\u003c/li\u003e\n\u003cli\u003eImprove keyboard navigation in TopAppBar catalog demos (98a73a61d272d3e38ee87dd4b322f7787c374a9c)\u003c/li\u003e\n\u003cli\u003eRemoved special key shortcut and keyboard navigation cluster for top app bar for correct keyboard navigation a11y. (ee52adbf051f744f2345ec5b7f4ab4df3b101d4d)\u003c/li\u003e\n\u003cli\u003eUpdated ripple color on actions in M3 toolbar. (3b971c9fe9d6ae9a175d96a448a2e740fa97996f)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBottomAppBar\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eRemove special key shortcut and keyboard navigation cluster for bottom app bar for correct keyboard navigation a11y. (5c73d7a9284fb8e8409452bb95751bf70912acfd)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBottomNavigationView\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eFix navigation item layout in non-compact windows (78189012dada1fae4516eaccab7b8f75c481aa73)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBottomSheet\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecated enableEdgeToEdge for bottom sheet dialogs on API 35+. (603f1ef9d5223fc06fa432c4175473eda2138330)\u003c/li\u003e\n\u003cli\u003ePrevent ACTION_DOWN events on the BottomSheetHandleDragView from setting touchingScrollChild to true. (af7f254bf660704368d46e630d34a81c479fa1c7)\u003c/li\u003e\n\u003cli\u003eFixed keyboard animation on Android 14 (a0b4dfa8769f98851efe97569c900f75eb0d5ef2)\u003c/li\u003e\n\u003cli\u003eFixed crash when protections are set before setContentView is called (d2119098489f6f6b55d77f2c7966b8ddf16c90ed)\u003c/li\u003e\n\u003cli\u003eAdded half-expanded state description for accessibility (95e7b452088d88005982a3f29ec212ef7ee8696d)\u003c/li\u003e\n\u003cli\u003eAdded support for androidx.core ProtectionLayout API and update dependency to 1.16 (e7f9f639d2f4a3b9f619ce704df82cbb14e49222)\u003c/li\u003e\n\u003cli\u003eMake handle respond to keyboard input (1ee07687af2c4c84f515e45c1b809d65aeecbbf4)\u003c/li\u003e\n\u003cli\u003eDelete duplicate \u0026quot;Handling insets and fullscreen\u0026quot; section (5e7e8238f7be448af6b4db4b2ad6128737c0bc50)\u003c/li\u003e\n\u003cli\u003eAdded support for Nested Scrolling with multiple nested scroll children. (4e4e8f3388beb7e82a87cb67142aa34444a79740)\u003c/li\u003e\n\u003cli\u003eMake behavior_draggableOnNestedScroll public (a67afdff0d207239d0f427a37e44074936db3166)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/66c334b7946dabf33adfe1a2b7cad6bcaa4ea3ad\"\u003e\u003ccode\u003e66c334b\u003c/code\u003e\u003c/a\u003e [Release] Update library version to 1.14.0 stable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/12e57b5143609a96de8516426336bcf3b3e321f7\"\u003e\u003ccode\u003e12e57b5\u003c/code\u003e\u003c/a\u003e [Focus Rings] Add setters and getters for stroke widths and inner inset\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/f4652d6af613395835b17ce329ceb03f43fc4a84\"\u003e\u003ccode\u003ef4652d6\u003c/code\u003e\u003c/a\u003e [NavigationView] Improve focus saving when opening NavigationView\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/14b9ac97b0863fa7fea6f59954441cea9f4e7e14\"\u003e\u003ccode\u003e14b9ac9\u003c/code\u003e\u003c/a\u003e [Focus Rings] Add setters for outer and inner stroke colors and for refreshin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/d6de1da0f5532090d8b7de697e13c180f56e11e1\"\u003e\u003ccode\u003ed6de1da\u003c/code\u003e\u003c/a\u003e [A11y][BottomSheet] Auto-expand when a focused view is off-screen in non-touc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/41cfb65e8393cd7ff0f9dc082b400c852405e9cc\"\u003e\u003ccode\u003e41cfb65\u003c/code\u003e\u003c/a\u003e [A11y][NavigationView] Request and restore focus when opened and closed in Dr...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/8f63e9485bf6da5a9a0aaefa4bbf26c8ec1364a5\"\u003e\u003ccode\u003e8f63e94\u003c/code\u003e\u003c/a\u003e [Catalog] Fix lift on scroll glitchiness in All Components demo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/80aa0cc0233af0e81a846271de0d5218beeceeaf\"\u003e\u003ccode\u003e80aa0cc\u003c/code\u003e\u003c/a\u003e [Release] Update library version to 1.14.0-rc01\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/fd44c9d58699e18de06ca5de8687fe79f390568b\"\u003e\u003ccode\u003efd44c9d\u003c/code\u003e\u003c/a\u003e [Button] [SplitButton] Fix inset and optical centering issue for SplitButton ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/e6ae416e7fc791d733eedde96ffea66d313ef231\"\u003e\u003ccode\u003ee6ae416\u003c/code\u003e\u003c/a\u003e [SearchView] Make sure IME is hidden when EditText loses focus\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/material-components/material-components-android/compare/1.11.0...1.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.navigation:navigation-compose` from 2.7.6 to 2.10.0\n\nUpdates `com.google.dagger:hilt-android` from 2.50 to 2.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5203\"\u003e#5203\u003c/a\u003e: Fixes regression in Dagger 2.60 where the Hilt compiler options (like fastInit) failed to propagate to the Hilt aggregation compilation tasks. (e181a0d88)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5204\"\u003e#5204\u003c/a\u003e: Fixes \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e import error by removing the annotation from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e (3f2dd8fba)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7a89b6cea7d47167f2d5f9912f61f3fee333d88\"\u003e\u003ccode\u003ef7a89b6\u003c/code\u003e\u003c/a\u003e 2.60.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/76780171d7c3ff0dc0240644f703cf181fd8b8e8\"\u003e\u003ccode\u003e7678017\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/974fe294b70f2a3ea43731a4f5b95e75c2bcb38d\"\u003e\u003ccode\u003e974fe29\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/823484c63fbdcc61d413bba40d164272f22e51a8\"\u003e\u003ccode\u003e823484c\u003c/code\u003e\u003c/a\u003e Make Android*InjectionTest$ApplicationReturnsNull public.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/c26f8d7be8ff1856667ddb3b070a410b3aeabfcc\"\u003e\u003ccode\u003ec26f8d7\u003c/code\u003e\u003c/a\u003e Add test for \u003ccode\u003e@AssistedFactory\u003c/code\u003e compilations without compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e181a0d884a3f14c8a7967af5d45f0a8c9a600ac\"\u003e\u003ccode\u003ee181a0d\u003c/code\u003e\u003c/a\u003e Fix Hilt compiler option propagation to Hilt aggregation tasks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/812e2f337718a79dd45ab8488398b5a893291ae8\"\u003e\u003ccode\u003e812e2f3\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3f2dd8fbab0a71ec09dc4f9dc543d89ec108c7f0\"\u003e\u003ccode\u003e3f2dd8f\u003c/code\u003e\u003c/a\u003e Delete \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e90e102c73d67ccb3aaad1835391e6cee2a17b42\"\u003e\u003ccode\u003ee90e102\u003c/code\u003e\u003c/a\u003e Update Dagger version in yml config and REAME.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.50...dagger-2.60.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger:hilt-compiler` from 2.50 to 2.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5203\"\u003e#5203\u003c/a\u003e: Fixes regression in Dagger 2.60 where the Hilt compiler options (like fastInit) failed to propagate to the Hilt aggregation compilation tasks. (e181a0d88)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5204\"\u003e#5204\u003c/a\u003e: Fixes \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e import error by removing the annotation from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e (3f2dd8fba)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7a89b6cea7d47167f2d5f9912f61f3fee333d88\"\u003e\u003ccode\u003ef7a89b6\u003c/code\u003e\u003c/a\u003e 2.60.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/76780171d7c3ff0dc0240644f703cf181fd8b8e8\"\u003e\u003ccode\u003e7678017\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/974fe294b70f2a3ea43731a4f5b95e75c2bcb38d\"\u003e\u003ccode\u003e974fe29\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/823484c63fbdcc61d413bba40d164272f22e51a8\"\u003e\u003ccode\u003e823484c\u003c/code\u003e\u003c/a\u003e Make Android*InjectionTest$ApplicationReturnsNull public.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/c26f8d7be8ff1856667ddb3b070a410b3aeabfcc\"\u003e\u003ccode\u003ec26f8d7\u003c/code\u003e\u003c/a\u003e Add test for \u003ccode\u003e@AssistedFactory\u003c/code\u003e compilations without compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e181a0d884a3f14c8a7967af5d45f0a8c9a600ac\"\u003e\u003ccode\u003ee181a0d\u003c/code\u003e\u003c/a\u003e Fix Hilt compiler option propagation to Hilt aggregation tasks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/812e2f337718a79dd45ab8488398b5a893291ae8\"\u003e\u003ccode\u003e812e2f3\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3f2dd8fbab0a71ec09dc4f9dc543d89ec108c7f0\"\u003e\u003ccode\u003e3f2dd8f\u003c/code\u003e\u003c/a\u003e Delete \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e90e102c73d67ccb3aaad1835391e6cee2a17b42\"\u003e\u003ccode\u003ee90e102\u003c/code\u003e\u003c/a\u003e Update Dagger version in yml config and REAME.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.50...dagger-2.60.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.hilt:hilt-navigation-compose` from 1.1.0 to 1.4.0\n\nUpdates `androidx.hilt:hilt-work` from 1.1.0 to 1.4.0\n\nUpdates `androidx.hilt:hilt-compiler` from 1.1.0 to 1.4.0\n\nUpdates `com.squareup.retrofit2:retrofit` from 2.11.0 to 3.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/square/retrofit/releases\"\u003ecom.squareup.retrofit2:retrofit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eChanged\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to OkHttp 4.12 (from 3.14).\u003c/p\u003e\n\u003cp\u003eThis is the version of OkHttp that is written in Kotlin, and as a result Retrofit now has a transitive Kotlin dependency. However, this is also the \u003cem\u003esupported\u003c/em\u003e version of OkHttp whereas the previous version was out of support for nearly 4 years.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNote: The 3.x versions of Retrofit maintain forward binary-compatibility with the 2.x versions.\nThis means libraries compiled against 2.x can still be used with the 3.x versions.\u003c/p\u003e\n\u003ch2\u003e2.12.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFirst-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using \u003ccode\u003eCall.enqueue\u003c/code\u003e directly.\u003c/p\u003e\n\u003cp\u003eThe following converters support this feature through a new \u003ccode\u003ewithStreaming()\u003c/code\u003e factory method:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGson\u003c/li\u003e\n\u003cli\u003eJackson\u003c/li\u003e\n\u003cli\u003eMoshi\u003c/li\u003e\n\u003cli\u003eProtobuf\u003c/li\u003e\n\u003cli\u003eWire\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrimitive types used with \u003ccode\u003e@Tag\u003c/code\u003e now work by storing the value boxed with the boxed class as the key.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/lysine-dev/retrofit/blob/trunk/CHANGELOG.md\"\u003ecom.squareup.retrofit2:retrofit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/releases/tag/3.0.0\"\u003e3.0.0\u003c/a\u003e - 2025-05-15\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eChanged\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to OkHttp 4.12 (from 3.14).\u003c/p\u003e\n\u003cp\u003eThis is the version of OkHttp that is written in Kotlin, and as a result Retrofit now has a transitive Kotlin dependency. However, this is also the \u003cem\u003esupported\u003c/em\u003e version of OkHttp whereas the previous version was out of support for nearly 4 years.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNote: The 3.x versions of Retrofit maintain forward binary-compatibility with the 2.x versions.\nThis means libraries compiled against 2.x can still be used with the 3.x versions.\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/releases/tag/2.12.0\"\u003e2.12.0\u003c/a\u003e - 2025-05-15\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFirst-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using \u003ccode\u003eCall.enqueue\u003c/code\u003e directly.\u003c/p\u003e\n\u003cp\u003eThe following converters support this feature through a new \u003ccode\u003ewithStreaming()\u003c/code\u003e factory method:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGson\u003c/li\u003e\n\u003cli\u003eJackson\u003c/li\u003e\n\u003cli\u003eMoshi\u003c/li\u003e\n\u003cli\u003eProtobuf\u003c/li\u003e\n\u003cli\u003eWire\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrimitive types used with \u003ccode\u003e@Tag\u003c/code\u003e now work by storing the value boxed with the boxed class as the key.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/3ab0f1a2c18666adb79ebf4eacef6fbc40d3e801\"\u003e\u003ccode\u003e3ab0f1a\u003c/code\u003e\u003c/a\u003e Prepare version 3.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/e5c02d08f3777ce00a31fb37d77f15eecdf4e383\"\u003e\u003ccode\u003ee5c02d0\u003c/code\u003e\u003c/a\u003e Commit 2.x docs (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4378\"\u003e#4378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/5bc3f183cfa24ab1f382c2029dc82ee292caef1b\"\u003e\u003ccode\u003e5bc3f18\u003c/code\u003e\u003c/a\u003e Fix links on the proudction site (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4377\"\u003e#4377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/7c3b2290bd6cd985ebaa93bfc183abd1bf04b977\"\u003e\u003ccode\u003e7c3b229\u003c/code\u003e\u003c/a\u003e Remove compileOnly stdlib dependency (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4376\"\u003e#4376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/84185470adc33a0f1b3d8766f2d722c770e2e89a\"\u003e\u003ccode\u003e8418547\u003c/code\u003e\u003c/a\u003e Update okhttp monorepo to v4 (major) (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4375\"\u003e#4375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/06216a3b24ad828e511fd25b4858a1ed104c8719\"\u003e\u003ccode\u003e06216a3\u003c/code\u003e\u003c/a\u003e Try to fix removal of latest dir during release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/1697bdc4913a34871125c96c7be16b688c6e82bc\"\u003e\u003ccode\u003e1697bdc\u003c/code\u003e\u003c/a\u003e Prepare next development version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/5a6ce364ad5208999a8e0847de760f97d39ecffe\"\u003e\u003ccode\u003e5a6ce36\u003c/code\u003e\u003c/a\u003e Prepare version 2.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/4fb8aed0cc6ebcc581d128922768867ae14e85c1\"\u003e\u003ccode\u003e4fb8aed\u003c/code\u003e\u003c/a\u003e Fix artifact name (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4372\"\u003e#4372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/bf11ef4cfaa3c50967f79e87b3e27f33670b42bc\"\u003e\u003ccode\u003ebf11ef4\u003c/code\u003e\u003c/a\u003e Dedicated website build, final status job (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/square/retrofit/compare/2.11.0...3.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.squareup.retrofit2:converter-gson` from 2.11.0 to 3.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/square/retrofit/releases\"\u003ecom.squareup.retrofit2:converter-gson's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eChanged\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to OkHttp 4.12 (from 3.14).\u003c/p\u003e\n\u003cp\u003eThis is the version of OkHttp that is written in Kotlin, and as a result Retrofit now has a transitive Kotlin dependency. However, this is also the \u003cem\u003esupported\u003c/em\u003e version of OkHttp whereas the previous version was out of support for nearly 4 years.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNote: The 3.x versions of Retrofit maintain forward binary-compatibility with the 2.x versions.\nThis means libraries compiled against 2.x can still be used with the 3.x versions.\u003c/p\u003e\n\u003ch2\u003e2.12.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFirst-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using \u003ccode\u003eCall.enqueue\u003c/code\u003e directly.\u003c/p\u003e\n\u003cp\u003eThe following converters support this feature through a new \u003ccode\u003ewithStreaming()\u003c/code\u003e factory method:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGson\u003c/li\u003e\n\u003cli\u003eJackson\u003c/li\u003e\n\u003cli\u003eMoshi\u003c/li\u003e\n\u003cli\u003eProtobuf\u003c/li\u003e\n\u003cli\u003eWire\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrimitive types used with \u003ccode\u003e@Tag\u003c/code\u003e now work by storing the value boxed with the boxed class as the key.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/lysine-dev/retrofit/blob/trunk/CHANGELOG.md\"\u003ecom.squareup.retrofit2:converter-gson's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/releases/tag/3.0.0\"\u003e3.0.0\u003c/a\u003e - 2025-05-15\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eChanged\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to OkHttp 4.12 (from 3.14).\u003c/p\u003e\n\u003cp\u003eThis is the version of OkHttp that is written in Kotlin, and as a result Retrofit now has a transitive Kotlin dependency. However, this is also the \u003cem\u003esupported\u003c/em\u003e version of OkHttp whereas the previous version was out of support for nearly 4 years.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNote: The 3.x versions of Retrofit maintain forward binary-compatibility with the 2.x versions.\nThis means libraries compiled against 2.x can still be used with the 3.x versions.\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/releases/tag/2.12.0\"\u003e2.12.0\u003c/a\u003e - 2025-05-15\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFirst-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using \u003ccode\u003eCall.enqueue\u003c/code\u003e directly.\u003c/p\u003e\n\u003cp\u003eThe following converters support this feature through a new \u003ccode\u003ewithStreaming()\u003c/code\u003e factory method:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGson\u003c/li\u003e\n\u003cli\u003eJackson\u003c/li\u003e\n\u003cli\u003eMoshi\u003c/li\u003e\n\u003cli\u003eProtobuf\u003c/li\u003e\n\u003cli\u003eWire\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrimitive types used with \u003ccode\u003e@Tag\u003c/code\u003e now work by storing the value boxed with the boxed class as the key.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/3ab0f1a2c18666adb79ebf4eacef6fbc40d3e801\"\u003e\u003ccode\u003e3ab0f1a\u003c/code\u003e\u003c/a\u003e Prepare version 3.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/e5c02d08f3777ce00a31fb37d77f15eecdf4e383\"\u003e\u003ccode\u003ee5c02d0\u003c/code\u003e\u003c/a\u003e Commit 2.x docs (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4378\"\u003e#4378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/5bc3f183cfa24ab1f382c2029dc82ee292caef1b\"\u003e\u003ccode\u003e5bc3f18\u003c/code\u003e\u003c/a\u003e Fix links on the proudction site (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4377\"\u003e#4377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/7c3b2290bd6cd985ebaa93bfc183abd1bf04b977\"\u003e\u003ccode\u003e7c3b229\u003c/code\u003e\u003c/a\u003e Remove compileOnly stdlib dependency (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4376\"\u003e#4376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/84185470adc33a0f1b3d8766f2d722c770e2e89a\"\u003e\u003ccode\u003e8418547\u003c/code\u003e\u003c/a\u003e Update okhttp monorepo to v4 (major) (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4375\"\u003e#4375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/06216a3b24ad828e511fd25b4858a1ed104c8719\"\u003e\u003ccode\u003e06216a3\u003c/code\u003e\u003c/a\u003e Try to fix removal of latest dir during release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/1697bdc4913a34871125c96c7be16b688c6e82bc\"\u003e\u003ccode\u003e1697bdc\u003c/code\u003e\u003c/a\u003e Prepare next development version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/5a6ce364ad5208999a8e0847de760f97d39ecffe\"\u003e\u003ccode\u003e5a6ce36\u003c/code\u003e\u003c/a\u003e Prepare version 2.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/4fb8aed0cc6ebcc581d128922768867ae14e85c1\"\u003e\u003ccode\u003e4fb8aed\u003c/code\u003e\u003c/a\u003e Fix artifact name (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4372\"\u003e#4372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/bf11ef4cfaa3c50967f79e87b3e27f33670b42bc\"\u003e\u003ccode\u003ebf11ef4\u003c/code\u003e\u003c/a\u003e Dedicated website build, final status job (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/square/retrofit/compare/2.11.0...3.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.squareup.okhttp3:logging-interceptor` from 4.12.0 to 5.5.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/lysine-dev/okhttp/blob/main/CHANGELOG.md\"\u003ecom.squareup.okhttp3:logging-interceptor's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 5.5.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-08-16\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eThis release introduces \u003cstrong\u003eopt-in\u003c/strong\u003e support for [Encrypted Client Hello (ECH)]. This new feature\nimproves user privacy by encrypting domain names in transit. With regular TLS, your coffee shop’s\nWi-Fi router can see that you’re visiting \u003cem\u003ewikipedia.com\u003c/em\u003e, but it cannot see which page you’re\nlooking at. With ECH, the router observes only the IP address. This additional privacy is most\neffective on sites hosted by big CDNs because the IP address doesn’t imply a particular website.\u003c/p\u003e\n\u003cp\u003eThis requires ECH support in the platform’s TLS stack. Today this is only Android 17 (API 37,\nreleased June 2026). When other TLS stacks add ECH support, we'll integrate them.\u003c/p\u003e\n\u003cp\u003eECH took a lot of work to implement because the encryption keys are published over DNS in the\n[HTTPS resource record], and we needed to write new code to fetch these records. This release\nincludes a major update to OkHttp’s DNS API: it now supports multiple resource record types (not\njust IP addresses!), asynchronous streaming results, and in-memory caching.\u003c/p\u003e\n\u003cp\u003eTo opt in, you can use \u003ccode\u003eDnsOverHttps\u003c/code\u003e:\u003c/p\u003e\n\u003cpre lang=\"kotlin\"\u003e\u003ccode\u003e// DnsOverHttps itself uses OkHttpClient. Build both clients upon the\n// same bootstrap client so they share a connection pool and dispatcher.\nval bootstrapClient = OkHttpClient()\n\u003cp\u003e// This sample uses Cloudflare's 1.1.1.1 DnsOverHttps service.\nval client = bootstrapClient.newBuilder()\n.dns(DnsOverHttps.Builder()\n.client(bootstrapClient)\n.url(\u0026quot;\u003ca href=\"https://1.1.1.1/dns-query\u0026amp;quot;.toHttpUrl()\"\u003ehttps://1.1.1.1/dns-query\u0026amp;quot;.toHttpUrl()\u003c/a\u003e)\n.build())\n.build()\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eYou could also opt in with our new \u003ccode\u003eAndroidDns\u003c/code\u003e API. Unfortunately, the privacy benefits of ECH are\nthwarted because its DNS queries are not encrypted by default.\u003c/p\u003e\n\u003cpre lang=\"kotlin\"\u003e\u003ccode\u003e// AndroidDns fetches the HTTPS DNS resource records necessary for ECH.\nval client = OkHttpClient.Builder()\n  .dns(AndroidDns())\n  .build()\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003eNew: OkHttp artifacts are now signed with our [new signing key]. This project and three sibling\nprojects ([Retrofit], [Okio], and [SQLDelight]) recently joined [the Commonhaus Foundation].\u003c/li\u003e\n\u003cli\u003eFix: MockWebServer’s \u003ccode\u003e@StartStop\u003c/code\u003e annotation now supports \u003ccode\u003e@Nested\u003c/code\u003e JUnit 5 tests.\u003c/li\u003e\n\u003cli\u003eFix: Our default TLS hostname verifier now reject hosts that fail IP canonicalization.\u003c/li\u003e\n\u003cli\u003eFix: Closing a multipart part's sink no longer closes the entire request body.\u003c/li\u003e\n\u003cli\u003eFix: Flush HTTP/1 request bodies before detaching the timeout. We had a bug where timeouts\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/a94bdf152084d11acecd44dcd09ffef203f4f0aa\"\u003e\u003ccode\u003ea94bdf1\u003c/code\u003e\u003c/a\u003e Prepare for release 5.5.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/ecc3b05adfe6b2607b8ec251562c2cccf7c1923a\"\u003e\u003ccode\u003eecc3b05\u003c/code\u003e\u003c/a\u003e Use a fixed size for DoH request body (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9687\"\u003e#9687\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/9926082660dfa6f1cc848c6f465cf5ccb998e415\"\u003e\u003ccode\u003e9926082\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Use a fixed size for DoH request body\u0026quot; (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9686\"\u003e#9686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/0070c2e7b4c162ee03abf1c88fd94083e94697f4\"\u003e\u003ccode\u003e0070c2e\u003c/code\u003e\u003c/a\u003e Use a fixed size for DoH request body\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/15764539c69842dad607462f102a2507223dbfe7\"\u003e\u003ccode\u003e1576453\u003c/code\u003e\u003c/a\u003e Order ServiceMetadata records per the spec (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9683\"\u003e#9683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/fb582e976a9a82d691342a4d57b3c72208ce416c\"\u003e\u003ccode\u003efb582e9\u003c/code\u003e\u003c/a\u003e Flip wiring of Dns.SYSTEM (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9682\"\u003e#9682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/4e884abb1a207c321acffb070c476acb4b89fa3f\"\u003e\u003ccode\u003e4e884ab\u003c/code\u003e\u003c/a\u003e retryOnConnectionFailure doesn't impact ECH retries (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9681\"\u003e#9681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/0433cee8131b63fa2c0634fa2f9b3a01f9a8b1f3\"\u003e\u003ccode\u003e0433cee\u003c/code\u003e\u003c/a\u003e Only one contributing.md doc (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9678\"\u003e#9678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/a2cf5aa9f8711dabe514871e9dc4a9336a0e403f\"\u003e\u003ccode\u003ea2cf5aa\u003c/code\u003e\u003c/a\u003e Don't recover after an ECH public_name fails to verify (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9680\"\u003e#9680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/5410de9760bce8719129c3d08eb19e5bace75f6e\"\u003e\u003ccode\u003e5410de9\u003c/code\u003e\u003c/a\u003e Test ECH + HTTP proxy (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9671\"\u003e#9671\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/lysine-dev/okhttp/compare/parent-4.12.0...parent-5.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.room:room-runtime` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `io.coil-kt:coil-compose` from 2.5.0 to 2.7.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coil-kt/coil/releases\"\u003eio.coil-kt:coil-compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.7.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#270---july-17-2024\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e2.6.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#260---february-23-2024\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md\"\u003eio.coil-kt:coil-compose's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[2.7.0] - July 17, 2024\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSlightly optimize internal coroutines usage to improve the performance of \u003ccode\u003eImageLoader.execute\u003c/code\u003e, \u003ccode\u003eAsyncImage\u003c/code\u003e, \u003ccode\u003eSubcomposeAsyncImage\u003c/code\u003e, and \u003ccode\u003erememberAsyncImagePainter\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/2205\"\u003e#2205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix duplicate network calls for chunked responses. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/2363\"\u003e#2363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Kotlin to 2.0.0.\u003c/li\u003e\n\u003cli\u003eUpdate Compose UI to 1.6.8.\u003c/li\u003e\n\u003cli\u003eUpdate Okio to 3.9.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.0.0-alpha08] - July 8, 2024\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING\u003c/strong\u003e: Rename \u003ccode\u003eImageRequest\u003c/code\u003e and \u003ccode\u003eImageLoader\u003c/code\u003e \u003ccode\u003edispatcher\u003c/code\u003e methods to \u003ccode\u003ecoroutineContext\u003c/code\u003e. For instance, \u003ccode\u003eImageRequest.Builder.dispatcher\u003c/code\u003e is now \u003ccode\u003eImageRequest.Builder.coroutineContext\u003c/code\u003e. This was renamed as the method now accepts any \u003ccode\u003eCoroutineContext\u003c/code\u003e and no longer requires a \u003ccode\u003eDispatcher\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eFix: Fix \u003ccode\u003eIllegalStateException: Reading a state that was created after the snapshot was taken or in a snapshot that has not yet been applied\u003c/code\u003e which could occur due to a race condition.\n\u003cul\u003e\n\u003cli\u003eNOTE: This reintroduces a soft dependency on \u003ccode\u003eDispatchers.Main.immediate\u003c/code\u003e. As a result you should re-add a dependency on \u003ca href=\"https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-swing/\"\u003e\u003ccode\u003ekotlinx-coroutines-swing\u003c/code\u003e\u003c/a\u003e on JVM. If it's not imported then \u003ccode\u003eImageRequest\u003c/code\u003es won't be dispatched immediately and will have one frame of delay before setting the \u003ccode\u003eImageRequest.placeholder\u003c/code\u003e or resolving from the memory cache.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.0.0-alpha07] - June 26, 2024\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING\u003c/strong\u003e: \u003ccode\u003eAsyncImagePainter\u003c/code\u003e no longer waits for \u003ccode\u003eonDraw\u003c/code\u003e by default and instead uses \u003ccode\u003eSize.ORIGINAL\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003eThis fixes \u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/1910\"\u003ecompatibility issues with Roborazzi/Paparazzi\u003c/a\u003e and overall improves test reliability.\u003c/li\u003e\n\u003cli\u003eTo revert back to waiting for \u003ccode\u003eonDraw\u003c/code\u003e, set \u003ccode\u003eDrawScopeSizeResolver\u003c/code\u003e as your \u003ccode\u003eImageRequest.sizeResolver\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING\u003c/strong\u003e: Refactor the multiplatform \u003ccode\u003eImage\u003c/code\u003e API. Notably, \u003ccode\u003easCoilImage\u003c/code\u003e has been renamed to \u003ccode\u003easImage\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING\u003c/strong\u003e: \u003ccode\u003eAsyncImagePainter.state\u003c/code\u003e has been changed to \u003ccode\u003eStateFlow\u0026lt;AsyncImagePainter.State\u0026gt;\u003c/code\u003e. Use \u003ccode\u003ecollectAsState\u003c/code\u003e to observe its value. This improves performance.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING\u003c/strong\u003e: \u003ccode\u003eAsyncImagePainter.imageLoader\u003c/code\u003e and \u003ccode\u003eAsyncImagePainter.request\u003c/code\u003e have been combined into \u003ccode\u003eStateFlow\u0026lt;AsyncImagePainter.Inputs\u0026gt;\u003c/code\u003e. Use \u003ccode\u003ecollectAsState\u003c/code\u003e to observe its value. This improves performance.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING\u003c/strong\u003e: Remove support for \u003ccode\u003eandroid.resource://example.package.name/drawable/image\u003c/code\u003e URIs as it prevents resource shrinking optimizations.\n\u003cul\u003e\n\u003cli\u003eIf you still needs its functionality you can \u003ca href=\"https://github.com/coil-kt/coil/blob/main/coil-core/src/androidInstrumentedTest/kotlin/coil3/map/ResourceUriMapper.kt\"\u003emanually include \u003ccode\u003eResourceUriMapper\u003c/code\u003e in your component registry\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNew\u003c/strong\u003e: Introduce \u003ccode\u003eAsyncImagePreviewHandler\u003c/code\u003e to support controlling \u003ccode\u003eAsyncImagePainter\u003c/code\u003e's preview rendering behavior.\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003eLocalAsyncImagePreviewHandler\u003c/code\u003e to override the preview behavior.\u003c/li\u003e\n\u003cli\u003eAs part of this change and other \u003ccode\u003ecoil-compose\u003c/code\u003e improvements, \u003ccode\u003eAsyncImagePainter\u003c/code\u003e now attempts to execute execute the \u003ccode\u003eImageRequest\u003c/code\u003e by default instead of defaulting to displaying \u003ccode\u003eImageRequest.placeholder\u003c/code\u003e. \u003ca href=\"https://developer.android.com/develop/ui/compose/tooling/previews#preview-limitations\"\u003eRequests that use the network or files are expected to fail\u003c/a\u003e in the preview environment, however Android resources should work.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNew\u003c/strong\u003e: Support extracting video image by frame index. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/2183\"\u003e#2183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNew\u003c/strong\u003e: Support passing \u003ccode\u003eCoroutineContext\u003c/code\u003e to any \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e methods. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/2241\"\u003e#2241\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNew\u003c/strong\u003e: Support the weak reference memory cache on JS and WASM JS.\u003c/li\u003e\n\u003cli\u003eDon't dispatch to \u003ccode\u003eDispatchers.Main.immediate\u003c/code\u003e in Compose. As a side-effect, \u003ca href=\"https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-swing/\"\u003e\u003ccode\u003ekotlinx-coroutines-swing\u003c/code\u003e\u003c/a\u003e no longer needs to be imported on JVM.\u003c/li\u003e\n\u003cli\u003eDon't call \u003ccode\u003easync\u003c/code\u003e and create a disposable in Compose to improve performance (thanks \u003ca href=\"https://github.com/mlykotom\"\u003e\u003ccode\u003e@​mlykotom\u003c/code\u003e\u003c/a\u003e!). (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/2205\"\u003e#2205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix passing global \u003ccode\u003eImageLoader\u003c/code\u003e extras to \u003ccode\u003eOp...\n\n_Description has been truncated_","html_url":"https://github.com/pranaypr6/Moment/pull/36","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/pranaypr6%2FMoment/issues/36","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/36/packages"},{"uuid":"5310536525","node_id":"PR_kwDOT-agP88AAAABBurKuA","number":18,"state":"closed","title":"build(deps): bump the androidx group across 1 directory with 12 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":"2026-09-10T01:16:07.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-01T10:08:44.000Z","updated_at":"2026-09-10T01:16:08.000Z","time_to_close":745643,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"androidx","update_count":12,"packages":[{"name":"androidx.core:core-ktx","old_version":"1.13.1","new_version":"1.19.0"},{"name":"androidx.compose:compose-bom","old_version":"2024.09.03","new_version":"2026.08.00"},{"name":"androidx.navigation:navigation-compose","old_version":"2.8.2","new_version":"2.10.0"},{"name":"androidx.core:core-splashscreen","old_version":"1.0.1","new_version":"1.2.0"},{"name":"androidx.room:room-runtime","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-ktx","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-compiler","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-testing","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.hilt:hilt-navigation-compose","old_version":"1.2.0","new_version":"1.4.0"},{"name":"androidx.test.ext:junit","old_version":"1.2.1","new_version":"1.3.0"},{"name":"androidx.test:core","old_version":"1.6.1","new_version":"1.7.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.6.1","new_version":"3.7.0"}],"path":null,"ecosystem":"maven"},"body":"Bumps the androidx group with 12 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| androidx.core:core-ktx | `1.13.1` | `1.19.0` |\n| androidx.compose:compose-bom | `2024.09.03` | `2026.08.00` |\n| androidx.navigation:navigation-compose | `2.8.2` | `2.10.0` |\n| androidx.core:core-splashscreen | `1.0.1` | `1.2.0` |\n| androidx.room:room-runtime | `2.6.1` | `2.8.4` |\n| androidx.room:room-ktx | `2.6.1` | `2.8.4` |\n| androidx.room:room-compiler | `2.6.1` | `2.8.4` |\n| androidx.room:room-testing | `2.6.1` | `2.8.4` |\n| androidx.hilt:hilt-navigation-compose | `1.2.0` | `1.4.0` |\n| androidx.test.ext:junit | `1.2.1` | `1.3.0` |\n| androidx.test:core | `1.6.1` | `1.7.0` |\n| androidx.test.espresso:espresso-core | `3.6.1` | `3.7.0` |\n\n\nUpdates `androidx.core:core-ktx` from 1.13.1 to 1.19.0\n\nUpdates `androidx.compose:compose-bom` from 2024.09.03 to 2026.08.00\n\nUpdates `androidx.navigation:navigation-compose` from 2.8.2 to 2.10.0\n\nUpdates `androidx.core:core-splashscreen` from 1.0.1 to 1.2.0\n\nUpdates `androidx.room:room-runtime` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-testing` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-testing` from 2.6.1 to 2.8.4\n\nUpdates `androidx.hilt:hilt-navigation-compose` from 1.2.0 to 1.4.0\n\nUpdates `androidx.test.ext:junit` from 1.2.1 to 1.3.0\n\nUpdates `androidx.test:core` from 1.6.1 to 1.7.0\n\nUpdates `androidx.test.espresso:espresso-core` from 3.6.1 to 3.7.0","html_url":"https://github.com/nagarjunavs/NFCLocatorAndroid/pull/18","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/nagarjunavs%2FNFCLocatorAndroid/issues/18","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/18/packages"},{"uuid":"5301546277","node_id":"PR_kwDOGe0_Us8AAAABBnewbA","number":308,"state":"closed","title":"Bump the gradle-patch-and-minor group across 1 directory with 28 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-09-04T02:46:32.000Z","author_association":null,"state_reason":null,"created_at":"2026-08-31T14:51:08.000Z","updated_at":"2026-09-04T02:46:41.000Z","time_to_close":302124,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"gradle-patch-and-minor","update_count":28,"packages":[{"name":"androidx.core:core-ktx","old_version":"1.15.0","new_version":"1.19.0"},{"name":"androidx.appcompat:appcompat","old_version":"1.7.0","new_version":"1.8.0"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-core","old_version":"1.9.0","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-android","old_version":"1.9.0","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-test","old_version":"1.9.0","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"org.jetbrains.kotlinx:kotlinx-serialization-json","old_version":"1.7.3","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.serialization"},{"name":"androidx.room:room-runtime","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-ktx","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-compiler","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-testing","old_version":"2.6.1","new_version":"2.8.4"},{"name":"com.google.dagger:hilt-android","old_version":"2.53.1","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"com.google.dagger:hilt-android-compiler","old_version":"2.53.1","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"com.google.dagger.hilt.android","old_version":"2.53.1","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"androidx.hilt:hilt-navigation-compose","old_version":"1.2.0","new_version":"1.4.0"},{"name":"androidx.hilt:hilt-work","old_version":"1.2.0","new_version":"1.4.0"},{"name":"androidx.hilt:hilt-compiler","old_version":"1.2.0","new_version":"1.4.0"},{"name":"androidx.test.ext:junit","old_version":"1.2.1","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.6.1","new_version":"3.7.0"},{"name":"io.mockk:mockk","old_version":"1.13.13","new_version":"1.14.11","repository_url":"https://github.com/mockk/mockk"},{"name":"io.mockk:mockk-android","old_version":"1.13.13","new_version":"1.14.11","repository_url":"https://github.com/mockk/mockk"},{"name":"app.cash.turbine:turbine","old_version":"1.2.0","new_version":"1.2.1","repository_url":"https://github.com/cashapp/turbine"},{"name":"org.robolectric:robolectric","old_version":"4.14.1","new_version":"4.16.1","repository_url":"https://github.com/robolectric/robolectric"},{"name":"org.jetbrains.kotlin.android","old_version":"2.0.21","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.0.21","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.0.21","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.google.devtools.ksp","old_version":"2.0.21-1.0.28","new_version":"2.3.11","repository_url":"https://github.com/google/ksp"},{"name":"com.vanniktech.maven.publish","old_version":"0.30.0","new_version":"0.37.0","repository_url":"https://github.com/vanniktech/gradle-maven-publish-plugin"},{"name":"org.jetbrains.kotlinx.kover","old_version":"0.9.0","new_version":"0.9.9","repository_url":"https://github.com/Kotlin/kotlinx-kover"}],"path":null,"ecosystem":"maven"},"body":"Bumps the gradle-patch-and-minor group with 28 updates in the /Toggly.FeatureManagement.Android directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| androidx.core:core-ktx | `1.15.0` | `1.19.0` |\n| androidx.appcompat:appcompat | `1.7.0` | `1.8.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-core](https://github.com/Kotlin/kotlinx.coroutines) | `1.9.0` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-android](https://github.com/Kotlin/kotlinx.coroutines) | `1.9.0` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-test](https://github.com/Kotlin/kotlinx.coroutines) | `1.9.0` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-serialization-json](https://github.com/Kotlin/kotlinx.serialization) | `1.7.3` | `1.11.0` |\n| androidx.room:room-runtime | `2.6.1` | `2.8.4` |\n| androidx.room:room-ktx | `2.6.1` | `2.8.4` |\n| androidx.room:room-compiler | `2.6.1` | `2.8.4` |\n| androidx.room:room-testing | `2.6.1` | `2.8.4` |\n| [com.google.dagger:hilt-android](https://github.com/google/dagger) | `2.53.1` | `2.60.1` |\n| [com.google.dagger:hilt-android-compiler](https://github.com/google/dagger) | `2.53.1` | `2.60.1` |\n| [com.google.dagger.hilt.android](https://github.com/google/dagger) | `2.53.1` | `2.60.1` |\n| androidx.hilt:hilt-navigation-compose | `1.2.0` | `1.4.0` |\n| androidx.hilt:hilt-work | `1.2.0` | `1.4.0` |\n| androidx.hilt:hilt-compiler | `1.2.0` | `1.4.0` |\n| androidx.test.ext:junit | `1.2.1` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.6.1` | `3.7.0` |\n| [io.mockk:mockk](https://github.com/mockk/mockk) | `1.13.13` | `1.14.11` |\n| [io.mockk:mockk-android](https://github.com/mockk/mockk) | `1.13.13` | `1.14.11` |\n| [app.cash.turbine:turbine](https://github.com/cashapp/turbine) | `1.2.0` | `1.2.1` |\n| [org.robolectric:robolectric](https://github.com/robolectric/robolectric) | `4.14.1` | `4.16.1` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.0.21` | `2.4.10` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.0.21` | `2.4.10` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.0.21` | `2.4.10` |\n| [com.google.devtools.ksp](https://github.com/google/ksp) | `2.0.21-1.0.28` | `2.3.11` |\n| [com.vanniktech.maven.publish](https://github.com/vanniktech/gradle-maven-publish-plugin) | `0.30.0` | `0.37.0` |\n| [org.jetbrains.kotlinx.kover](https://github.com/Kotlin/kotlinx-kover) | `0.9.0` | `0.9.9` |\n\n\nUpdates `androidx.core:core-ktx` from 1.15.0 to 1.19.0\n\nUpdates `androidx.appcompat:appcompat` from 1.7.0 to 1.8.0\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-core` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874\"\u003e\u003ccode\u003e8564f65\u003c/code\u003e\u003c/a\u003e Version 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c\"\u003e\u003ccode\u003ea4c6af9\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9\"\u003e\u003ccode\u003eef917b4\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd\"\u003e\u003ccode\u003e5ebc421\u003c/code\u003e\u003c/a\u003e Update the release procedure description (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80\"\u003e\u003ccode\u003e95f46a0\u003c/code\u003e\u003c/a\u003e Remove old maven repository settings (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672\"\u003e#4672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc\"\u003e\u003ccode\u003eb4f4f0a\u003c/code\u003e\u003c/a\u003e Fix package name of \u003ccode\u003eToMapCollectionSamplesTest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674\"\u003e#4674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/86738dca7dc9ac82249abc8206263fa0065ee631\"\u003e\u003ccode\u003e86738dc\u003c/code\u003e\u003c/a\u003e Added templates to the issue creation wizard (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/330fcc221fb583f0b119f34191f735a73b827378\"\u003e\u003ccode\u003e330fcc2\u003c/code\u003e\u003c/a\u003e Version 1.11.0-rc02\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/e31cef6e9f2d26794be7d75ecbf3033b6432d582\"\u003e\u003ccode\u003ee31cef6\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/dc6e9f61eaf3a67f4bf474a7987aedc3f16cef37\"\u003e\u003ccode\u003edc6e9f6\u003c/code\u003e\u003c/a\u003e Restore Promise-related functions on Wasm/JS as HIDDEN (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/compare/1.9.0...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-android` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874\"\u003e\u003ccode\u003e8564f65\u003c/code\u003e\u003c/a\u003e Version 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c\"\u003e\u003ccode\u003ea4c6af9\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9\"\u003e\u003ccode\u003eef917b4\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd\"\u003e\u003ccode\u003e5ebc421\u003c/code\u003e\u003c/a\u003e Update the release procedure description (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80\"\u003e\u003ccode\u003e95f46a0\u003c/code\u003e\u003c/a\u003e Remove old maven repository settings (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672\"\u003e#4672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc\"\u003e\u003ccode\u003eb4f4f0a\u003c/code\u003e\u003c/a\u003e Fix package name of \u003ccode\u003eToMapCollectionSamplesTest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674\"\u003e#4674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/86738dca7dc9ac82249abc8206263fa0065ee631\"\u003e\u003ccode\u003e86738dc\u003c/code\u003e\u003c/a\u003e Added templates to the issue creation wizard (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/330fcc221fb583f0b119f34191f735a73b827378\"\u003e\u003ccode\u003e330fcc2\u003c/code\u003e\u003c/a\u003e Version 1.11.0-rc02\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/e31cef6e9f2d26794be7d75ecbf3033b6432d582\"\u003e\u003ccode\u003ee31cef6\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/dc6e9f61eaf3a67f4bf474a7987aedc3f16cef37\"\u003e\u003ccode\u003edc6e9f6\u003c/code\u003e\u003c/a\u003e Restore Promise-related functions on Wasm/JS as HIDDEN (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/compare/1.9.0...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-android` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874\"\u003e\u003ccode\u003e8564f65\u003c/code\u003e\u003c/a\u003e Version 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c\"\u003e\u003ccode\u003ea4c6af9\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9\"\u003e\u003ccode\u003eef917b4\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd\"\u003e\u003ccode\u003e5ebc421\u003c/code\u003e\u003c/a\u003e Update the release procedure description (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80\"\u003e\u003ccode\u003e95f46a0\u003c/code\u003e\u003c/a\u003e Remove old maven repository settings (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672\"\u003e#4672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc\"\u003e\u003ccode\u003eb4f4f0a\u003c/code\u003e\u003c/a\u003e Fix package name of \u003ccode\u003eToMapCollectionSamplesTest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674\"\u003e#4674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/86738dca7dc9ac82249abc8206263fa0065ee631\"\u003e\u003ccode\u003e86738dc\u003c/code\u003e\u003c/a\u003e Added templates to the issue creation wizard (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/330fcc221fb583f0b119f34191f735a73b827378\"\u003e\u003ccode\u003e330fcc2\u003c/code\u003e\u003c/a\u003e Version 1.11.0-rc02\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/e31cef6e9f2d26794be7d75ecbf3033b6432d582\"\u003e\u003ccode\u003ee31cef6\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/dc6e9f61eaf3a67f4bf474a7987aedc3f16cef37\"\u003e\u003ccode\u003edc6e9f6\u003c/code\u003e\u003c/a\u003e Restore Promise-related functions on Wasm/JS as HIDDEN (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/compare/1.9.0...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-test` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-test's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-test's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874\"\u003e\u003ccode\u003e8564f65\u003c/code\u003e\u003c/a\u003e Version 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c\"\u003e\u003ccode\u003ea4c6af9\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9\"\u003e\u003ccode\u003eef917b4\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd\"\u003e\u003ccode\u003e5ebc421\u003c/code\u003e\u003c/a\u003e Update the release procedure description (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80\"\u003e\u003ccode\u003e95f46a0\u003c/code\u003e\u003c/a\u003e Remove old maven repository settings (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672\"\u003e#4672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc\"\u003e\u003ccode\u003eb4f4f0a\u003c/code\u003e\u003c/a\u003e Fix package name of \u003ccode\u003eToMapCollectionSamplesTest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674\"\u003e#4674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"...\n\n_Description has been truncated_","html_url":"https://github.com/ops-ai/Toggly.FeatureManagement/pull/308","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ops-ai%2FToggly.FeatureManagement/issues/308","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/308/packages"},{"uuid":"5285883423","node_id":"PR_kwDOQjpZ1c8AAAABBbnJSQ","number":394,"state":"closed","title":"build(deps): bump the androidx group across 1 directory with 17 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-05T10:04:08.000Z","author_association":null,"state_reason":null,"created_at":"2026-08-29T10:04:05.000Z","updated_at":"2026-09-05T10:04:12.000Z","time_to_close":604803,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"androidx","update_count":17,"packages":[{"name":"androidx.core:core-ktx","old_version":"1.15.0","new_version":"1.19.0"},{"name":"androidx.compose:compose-bom","old_version":"2024.12.01","new_version":"2026.08.00"},{"name":"androidx.tv:tv-foundation","old_version":"1.0.0-alpha11","new_version":"1.0.0"},{"name":"androidx.tv:tv-material","old_version":"1.0.0","new_version":"1.1.0"},{"name":"androidx.hilt:hilt-navigation-compose","old_version":"1.2.0","new_version":"1.4.0"},{"name":"androidx.hilt:hilt-work","old_version":"1.2.0","new_version":"1.4.0"},{"name":"androidx.hilt:hilt-compiler","old_version":"1.2.0","new_version":"1.4.0"},{"name":"androidx.room:room-runtime","old_version":"2.7.1","new_version":"2.8.4"},{"name":"androidx.room:room-ktx","old_version":"2.7.1","new_version":"2.8.4"},{"name":"androidx.room:room-compiler","old_version":"2.7.1","new_version":"2.8.4"},{"name":"androidx.room:room-testing","old_version":"2.7.1","new_version":"2.8.4"},{"name":"androidx.media3:media3-exoplayer","old_version":"1.5.1","new_version":"1.11.0","repository_url":"https://github.com/androidx/media"},{"name":"androidx.media3:media3-exoplayer-hls","old_version":"1.5.1","new_version":"1.11.0","repository_url":"https://github.com/androidx/media"},{"name":"androidx.media3:media3-ui","old_version":"1.5.1","new_version":"1.11.0","repository_url":"https://github.com/androidx/media"},{"name":"androidx.media3:media3-datasource-okhttp","old_version":"1.5.1","new_version":"1.11.0","repository_url":"https://github.com/androidx/media"},{"name":"androidx.test.ext:junit","old_version":"1.1.5","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.5.1","new_version":"3.7.0"}],"path":null,"ecosystem":"maven"},"body":"Bumps the androidx group with 17 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| androidx.core:core-ktx | `1.15.0` | `1.19.0` |\n| androidx.compose:compose-bom | `2024.12.01` | `2026.08.00` |\n| androidx.tv:tv-foundation | `1.0.0-alpha11` | `1.0.0` |\n| androidx.tv:tv-material | `1.0.0` | `1.1.0` |\n| androidx.hilt:hilt-navigation-compose | `1.2.0` | `1.4.0` |\n| androidx.hilt:hilt-work | `1.2.0` | `1.4.0` |\n| androidx.hilt:hilt-compiler | `1.2.0` | `1.4.0` |\n| androidx.room:room-runtime | `2.7.1` | `2.8.4` |\n| androidx.room:room-ktx | `2.7.1` | `2.8.4` |\n| androidx.room:room-compiler | `2.7.1` | `2.8.4` |\n| androidx.room:room-testing | `2.7.1` | `2.8.4` |\n| [androidx.media3:media3-exoplayer](https://github.com/androidx/media) | `1.5.1` | `1.11.0` |\n| [androidx.media3:media3-exoplayer-hls](https://github.com/androidx/media) | `1.5.1` | `1.11.0` |\n| [androidx.media3:media3-ui](https://github.com/androidx/media) | `1.5.1` | `1.11.0` |\n| [androidx.media3:media3-datasource-okhttp](https://github.com/androidx/media) | `1.5.1` | `1.11.0` |\n| androidx.test.ext:junit | `1.1.5` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.5.1` | `3.7.0` |\n\n\nUpdates `androidx.core:core-ktx` from 1.15.0 to 1.19.0\n\nUpdates `androidx.compose:compose-bom` from 2024.12.01 to 2026.08.00\n\nUpdates `androidx.tv:tv-foundation` from 1.0.0-alpha11 to 1.0.0\n\nUpdates `androidx.tv:tv-material` from 1.0.0 to 1.1.0\n\nUpdates `androidx.hilt:hilt-navigation-compose` from 1.2.0 to 1.4.0\n\nUpdates `androidx.hilt:hilt-work` from 1.2.0 to 1.4.0\n\nUpdates `androidx.hilt:hilt-compiler` from 1.2.0 to 1.4.0\n\nUpdates `androidx.room:room-runtime` from 2.7.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.7.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.7.1 to 2.8.4\n\nUpdates `androidx.room:room-testing` from 2.7.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.7.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.7.1 to 2.8.4\n\nUpdates `androidx.room:room-testing` from 2.7.1 to 2.8.4\n\nUpdates `androidx.media3:media3-exoplayer` from 1.5.1 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/releases\"\u003eandroidx.media3:media3-exoplayer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.channelMask\u003c/code\u003e to explicitly represent the audio channel mask, and a new \u003ccode\u003eUtil.getAudioTrackChannelConfig(Format)\u003c/code\u003e overload to safely resolve it.\u003c/li\u003e\n\u003cli\u003eUpgrade Kotlin from 2.0.20 to 2.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix a timing-dependent concurrency bug that could cause an \u003ccode\u003eIllegalStateException\u003c/code\u003e or \u003ccode\u003eIndexOutOfBoundsException\u003c/code\u003e in ExoPlayer.\u003c/li\u003e\n\u003cli\u003eRelax ad group count checks in \u003ccode\u003eAdsMediaSource\u003c/code\u003e to allow the ad group count to decrease when an ad group is fully processed\n(\u003ccode\u003ehasUnplayedAds()\u003c/code\u003e is \u003ccode\u003efalse\u003c/code\u003e), accommodating dynamic ad group resizing during reset workflows.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egetFlags()\u003c/code\u003e and \u003ccode\u003eFLAG_STRICT_DURATION\u003c/code\u003e to \u003ccode\u003eSampleStream\u003c/code\u003e to allow streams to report flags, and update renderers to check these flags dynamically.\u003c/li\u003e\n\u003cli\u003eFall back to the frame rate estimator in \u003ccode\u003eMediaCodecVideoRenderer\u003c/code\u003e and to the codec output format in \u003ccode\u003eMediaCodecAudioRenderer\u003c/code\u003e to calculate the codec operating rate when the stream formats do not provide a valid value, and avoid unnecessary codec resets.\u003c/li\u003e\n\u003cli\u003eRemove clipping of content for client-side inserted ads in the core player. Instead, \u003ccode\u003eAdsMediaSource\u003c/code\u003e takes care of the clipping logic. Custom client-side inserted ads sources need to be updated to implement the content clipping internally.\u003c/li\u003e\n\u003cli\u003eMark tracks with a well-formed but unrecognized codec profile or level as \u003ccode\u003esupported=NO_EXCEEDS_CAPABILITIES\u003c/code\u003e instead of \u003ccode\u003esupported=YES\u003c/code\u003e (which is how tracks with missing or malformed profile or level info are marked). This ensures these tracks (which are unlikely to be supported by the device) are not selected when there are better-supported alternatives.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eDefaultPreloadManager.SimpleRankingDataComparator\u003c/code\u003e, which is a \u003ccode\u003eRankingDataComparator\u003c/code\u003e that compares the ranks of the media items based on their distances to the index of the current playing media item. Apps can override its \u003ccode\u003ecompare(Integer, Integer)\u003c/code\u003e method if a more fine-tuned comparison logic is needed. The custom \u003ccode\u003eSimpleRankingDataComparator\u003c/code\u003e can be injected via a new constructor of \u003ccode\u003eDefaultPreloadManager.Builder\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eReduce the OOM risk of \u003ccode\u003eDefaultLoadControl.prioritizeTimeOverSizeThresholds\u003c/code\u003e by falling back to buffer byte size limits if available heap memory seems tight.\u003c/li\u003e\n\u003cli\u003eAlign handling of still images when \u003ccode\u003eMediaItem.imageDurationUs\u003c/code\u003e is not set: JPEG and HEIC still images now 'play' with a very short default duration (the same way PNG and other images previously behaved).\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eMediaSource.prepareSource(MediaSourceCaller, PlayerId, BandwidthMeter)\u003c/code\u003e to plumb \u003ccode\u003eBandwidthMeter\u003c/code\u003e to \u003ccode\u003eMediaSource\u003c/code\u003e. The deprecated method with custom implementation will still be called by default though, it is recommended to implement the new method and use \u003ccode\u003eBandwidthMeter.getTransferListener()\u003c/code\u003e to get parity to the old method.\u003c/li\u003e\n\u003cli\u003eIn \u003ccode\u003eDefaultBandwidthMeter\u003c/code\u003e, add support for a custom \u003ccode\u003eInitialBitrateSupplier\u003c/code\u003e. This allows apps to provide their own logic for determining the initial bitrate estimate, which will be used on creation of \u003ccode\u003eDefaultBandwidthMeter\u003c/code\u003e and on network type changes. The supplier can be set via \u003ccode\u003eDefaultBandwidthMeter.Builder.setInitialBitrateSupplier()\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eEnable dynamic scheduling by default. \u003ccode\u003eExoPlayer\u003c/code\u003e playback work loop will run dynamically as opposed to on a static interval.\u003c/li\u003e\n\u003cli\u003eRemove an unnecessary reset that can occur when joining tracks with pre-roll samples to active playback.\u003c/li\u003e\n\u003cli\u003eIn \u003ccode\u003eDefaultBandwidthMeter\u003c/code\u003e, optimize \u003ccode\u003egetInitialBitrateCountryGroupAssignment\u003c/code\u003e to return the country group assignments packed into a 32-bit integer instead of an array, reducing code size and avoiding allocations.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAudioTrack\u003c/code\u003e initialization failures on some devices by ensuring the retry logic always attempts a minimum of 1 second buffer size if other retries (by halving the buffer size) are unsuccessful (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3207\"\u003e#3207\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix codec issue on some devices where the codec was swallowing all samples if previously flushed before receiving input buffers.\u003c/li\u003e\n\u003cli\u003eAdd experimental \u003ccode\u003eExoPlayer.Builder.enablePerStreamMediaProgression()\u003c/code\u003e  to allow advancing media processing on a per-stream basis. This reduces startup latency between playlist items and avoids playback becoming \u0026quot;stuck\u0026quot; with very short content (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3122\"\u003e#3122\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix race condition related to audio session id usage where the initial audio session id auto-generated by \u003ccode\u003eExoPlayer\u003c/code\u003e would be used instead of the value set by \u003ccode\u003esetAudioSessionId\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3241\"\u003e#3241\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd experimental HAGC (ST 2094-50) timed metadata playback support for progressive media (e.g. MP4, Matroska). The player automatically merges HAGC metadata tracks with the associated video track and delivers the metadata out-of-band to the decoder on API 37+ devices. This behavior can be disabled via \u003ccode\u003eDefaultMediaSourceFactory.setExperimentalEnableHagcPlayback(false)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.selectionPriority\u003c/code\u003e representing the relative preference of the \u003ccode\u003eFormat\u003c/code\u003e in track selection (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3236\"\u003e#3236\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix potential scrubbing mode issue where scrubbing could stall when seeking to 'end of stream'.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eCompositionPlayer:\n\u003cul\u003e\n\u003cli\u003eFix an issue where \u003ccode\u003eTrackSelector\u003c/code\u003e instances were not being released.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTransformer:\n\u003cul\u003e\n\u003cli\u003eFix an issue where \u003ccode\u003eExportResult.fileSizeBytes\u003c/code\u003e may be over-reported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eExpose \u003ccode\u003eBaseTrackSelection.DEFAULT_FORMAT_COMPARATOR\u003c/code\u003e and add \u003ccode\u003eAdaptiveTrackSelection.Factory.setTrackFormatComparator\u003c/code\u003e to allow custom format ordering and ABR selection priority beyond bitrate-only ordering.\u003c/li\u003e\n\u003cli\u003eFix a timing-dependent concurrency issue where rapid sequential updates to track selection parameters could result in some updates being lost or overwritten.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP4, MP3, and FLAC: Add \u003ccode\u003eFLAG_DISABLE_ARTWORK_METADATA\u003c/code\u003e to allow discarding attached pictures and cover art metadata during container parsing to reduce runtime memory consumption (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2077\"\u003e#2077\u003c/a\u003e). This can also be enabled centrally via \u003ccode\u003eDefaultExtractorsFactory.setDisableArtworkMetadata\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for extracting ITU-T T.35 (\u003ccode\u003eit35\u003c/code\u003e) timed metadata tracks.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for extracting chapter metadata (both Nero and QuickTime formats). QuickTime chapters are preferred if both are present. The extracted chapter information is exposed as \u003ccode\u003eChapter\u003c/code\u003e entries within the track's \u003ccode\u003eMetadata\u003c/code\u003e, allowing for native chapter navigation in MP4, M4A, and M4B files (such as audiobooks and podcasts) (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2803\"\u003e#2803\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eWAV, Matroska, and MP4: Add support for 64-bit floating point PCM audio (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3090\"\u003e#3090\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMatroska: Use codec bitstream metadata to populate accurate \u003ccode\u003eColorInfo\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for seeking in fragmented MP4 files using the \u003ccode\u003emfra\u003c/code\u003e box when a \u003ccode\u003esidx\u003c/code\u003e box is not present. To enable this, provide \u003ccode\u003eFLAG_READ_MFRA_FOR_SEEK_MAP\u003c/code\u003e to the \u003ccode\u003eFragmentedMp4Extractor\u003c/code\u003e, which is now done by default in \u003ccode\u003eDefaultExtractorsFactory\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3088\"\u003e#3088\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eIgnore \u003ccode\u003eav1C\u003c/code\u003e data with unsupported version.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for big-endian floating point PCM in \u003ccode\u003efpcm\u003c/code\u003e boxes.\u003c/li\u003e\n\u003cli\u003eMatroska: Parse chapter info to \u003ccode\u003eChapter\u003c/code\u003e entries in a track's \u003ccode\u003eMetadata\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eMPEG-TS: Improve extraction of DTS-HD and DTS Express streams by combining the Core and Extension Substream into a single sample, fixing playback issues where the two were previously output as separate samples (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3147\"\u003e#3147\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMP4: Prevent infinite loops and out-of-bounds reads when parsing empty \u003ccode\u003eilst\u003c/code\u003e metadata tag items (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3191\"\u003e#3191\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMPEG-TS: Ensure the last frame is rendered for streams where the last PES packet has a known length (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3206\"\u003e#3206\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMP3: Fix bitrate reporting for files with Xing and VBRI header.\u003c/li\u003e\n\u003cli\u003eMatroska: Handle tracks defined in the last cluster (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3250\"\u003e#3250\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMatroska: Add support for ALAC (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3268\"\u003e#3268\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/blob/release/RELEASENOTES.md\"\u003eandroidx.media3:media3-exoplayer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e1.11.0 (2026-08-05)\u003c/h3\u003e\n\u003cp\u003eThis release includes the following changes since the\n\u003ca href=\"https://github.com/androidx/media/blob/release/#1101-2026-05-12\"\u003e1.10.1 release\u003c/a\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.channelMask\u003c/code\u003e to explicitly represent the audio channel mask,\nand a new \u003ccode\u003eUtil.getAudioTrackChannelConfig(Format)\u003c/code\u003e overload to safely\nresolve it.\u003c/li\u003e\n\u003cli\u003eUpgrade Kotlin from 2.0.20 to 2.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix a timing-dependent concurrency bug that could cause an\n\u003ccode\u003eIllegalStateException\u003c/code\u003e or \u003ccode\u003eIndexOutOfBoundsException\u003c/code\u003e in ExoPlayer.\u003c/li\u003e\n\u003cli\u003eRelax ad group count checks in \u003ccode\u003eAdsMediaSource\u003c/code\u003e to allow the ad group\ncount to decrease when an ad group is fully processed\n(\u003ccode\u003ehasUnplayedAds()\u003c/code\u003e is \u003ccode\u003efalse\u003c/code\u003e), accommodating dynamic ad group resizing\nduring reset workflows.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egetFlags()\u003c/code\u003e and \u003ccode\u003eFLAG_STRICT_DURATION\u003c/code\u003e to \u003ccode\u003eSampleStream\u003c/code\u003e to allow\nstreams to report flags, and update renderers to check these flags\ndynamically.\u003c/li\u003e\n\u003cli\u003eFall back to the frame rate estimator in \u003ccode\u003eMediaCodecVideoRenderer\u003c/code\u003e and\nto the codec output format in \u003ccode\u003eMediaCodecAudioRenderer\u003c/code\u003e to calculate the\ncodec operating rate when the stream formats do not provide a valid\nvalue, and avoid unnecessary codec resets.\u003c/li\u003e\n\u003cli\u003eRemove clipping of content for client-side inserted ads in the core\nplayer. Instead, \u003ccode\u003eAdsMediaSource\u003c/code\u003e takes care of the clipping logic.\nCustom client-side inserted ads sources need to be updated to implement\nthe content clipping internally.\u003c/li\u003e\n\u003cli\u003eMark tracks with a well-formed but unrecognized codec profile or level\nas \u003ccode\u003esupported=NO_EXCEEDS_CAPABILITIES\u003c/code\u003e instead of \u003ccode\u003esupported=YES\u003c/code\u003e (which\nis how tracks with missing or malformed profile or level info are\nmarked). This ensures these tracks (which are unlikely to be supported\nby the device) are not selected when there are better-supported\nalternatives.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eDefaultPreloadManager.SimpleRankingDataComparator\u003c/code\u003e, which is a\n\u003ccode\u003eRankingDataComparator\u003c/code\u003e that compares the ranks of the media items based\non their distances to the index of the current playing media item. Apps\ncan override its \u003ccode\u003ecompare(Integer, Integer)\u003c/code\u003e method if a more fine-tuned\ncomparison logic is needed. The custom \u003ccode\u003eSimpleRankingDataComparator\u003c/code\u003e can\nbe injected via a new constructor of \u003ccode\u003eDefaultPreloadManager.Builder\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eReduce the OOM risk of\n\u003ccode\u003eDefaultLoadControl.prioritizeTimeOverSizeThresholds\u003c/code\u003e by falling back to\nbuffer byte size limits if available heap memory seems tight.\u003c/li\u003e\n\u003cli\u003eAlign handling of still images when \u003ccode\u003eMediaItem.imageDurationUs\u003c/code\u003e is not\nset: JPEG and HEIC still images now 'play' with a very short default\nduration (the same way PNG and other images previously behaved).\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eMediaSource.prepareSource(MediaSourceCaller, PlayerId, BandwidthMeter)\u003c/code\u003e to plumb \u003ccode\u003eBandwidthMeter\u003c/code\u003e to \u003ccode\u003eMediaSource\u003c/code\u003e. The\ndeprecated method with custom implementation will still be called by\ndefault though, it is recommended to implement the new method and use\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/2bc207851df311340767e913931ca7b28cab1794\"\u003e\u003ccode\u003e2bc2078\u003c/code\u003e\u003c/a\u003e Merge branch 'release' into release-3.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/e156aec119c304d3de70a2fa69e08dc585b9d92b\"\u003e\u003ccode\u003ee156aec\u003c/code\u003e\u003c/a\u003e Update RELEASENOTES.md for the Media3 1.11.0 stable release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/458b232a5cd2e0114a0911a1ec1ee2e1f871086e\"\u003e\u003ccode\u003e458b232\u003c/code\u003e\u003c/a\u003e Update Media3 library version to 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/a51f7e92dd415c91e9ab3008d73ab19c2394830c\"\u003e\u003ccode\u003ea51f7e9\u003c/code\u003e\u003c/a\u003e Update release notes for 1.11.0-rc01\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/1c241543fb0df700f2221b1839e0f1886c268be2\"\u003e\u003ccode\u003e1c24154\u003c/code\u003e\u003c/a\u003e Bump version number for 1.11.0-rc01\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/fc38c2cda8789db646ae6a01e06494de059a2495\"\u003e\u003ccode\u003efc38c2c\u003c/code\u003e\u003c/a\u003e Fix unexpected onMediaItemTransition event on seek within same item\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/bb3d9921f14d900a2e76528f2d97cf82e925a499\"\u003e\u003ccode\u003ebb3d992\u003c/code\u003e\u003c/a\u003e Gate detached surface workaround on vendor API level\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/b33316303d3ef5ad0ede57cbc9dab6d8ab1e63a6\"\u003e\u003ccode\u003eb333163\u003c/code\u003e\u003c/a\u003e Catch ForegroundServiceStartNotAllowedException in stopSelfSafely.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/66d8d7a612ba4018ae073001168526592b60f32a\"\u003e\u003ccode\u003e66d8d7a\u003c/code\u003e\u003c/a\u003e Move workarounds disabling logic to DashHostedTest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/b220203994462ac7a8655a596afcfb45a68eaa10\"\u003e\u003ccode\u003eb220203\u003c/code\u003e\u003c/a\u003e Fix content resume offset calculation for asset list interstitials\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/androidx/media/compare/1.5.1...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.media3:media3-exoplayer-hls` from 1.5.1 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/releases\"\u003eandroidx.media3:media3-exoplayer-hls's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.channelMask\u003c/code\u003e to explicitly represent the audio channel mask, and a new \u003ccode\u003eUtil.getAudioTrackChannelConfig(Format)\u003c/code\u003e overload to safely resolve it.\u003c/li\u003e\n\u003cli\u003eUpgrade Kotlin from 2.0.20 to 2.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix a timing-dependent concurrency bug that could cause an \u003ccode\u003eIllegalStateException\u003c/code\u003e or \u003ccode\u003eIndexOutOfBoundsException\u003c/code\u003e in ExoPlayer.\u003c/li\u003e\n\u003cli\u003eRelax ad group count checks in \u003ccode\u003eAdsMediaSource\u003c/code\u003e to allow the ad group count to decrease when an ad group is fully processed\n(\u003ccode\u003ehasUnplayedAds()\u003c/code\u003e is \u003ccode\u003efalse\u003c/code\u003e), accommodating dynamic ad group resizing during reset workflows.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egetFlags()\u003c/code\u003e and \u003ccode\u003eFLAG_STRICT_DURATION\u003c/code\u003e to \u003ccode\u003eSampleStream\u003c/code\u003e to allow streams to report flags, and update renderers to check these flags dynamically.\u003c/li\u003e\n\u003cli\u003eFall back to the frame rate estimator in \u003ccode\u003eMediaCodecVideoRenderer\u003c/code\u003e and to the codec output format in \u003ccode\u003eMediaCodecAudioRenderer\u003c/code\u003e to calculate the codec operating rate when the stream formats do not provide a valid value, and avoid unnecessary codec resets.\u003c/li\u003e\n\u003cli\u003eRemove clipping of content for client-side inserted ads in the core player. Instead, \u003ccode\u003eAdsMediaSource\u003c/code\u003e takes care of the clipping logic. Custom client-side inserted ads sources need to be updated to implement the content clipping internally.\u003c/li\u003e\n\u003cli\u003eMark tracks with a well-formed but unrecognized codec profile or level as \u003ccode\u003esupported=NO_EXCEEDS_CAPABILITIES\u003c/code\u003e instead of \u003ccode\u003esupported=YES\u003c/code\u003e (which is how tracks with missing or malformed profile or level info are marked). This ensures these tracks (which are unlikely to be supported by the device) are not selected when there are better-supported alternatives.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eDefaultPreloadManager.SimpleRankingDataComparator\u003c/code\u003e, which is a \u003ccode\u003eRankingDataComparator\u003c/code\u003e that compares the ranks of the media items based on their distances to the index of the current playing media item. Apps can override its \u003ccode\u003ecompare(Integer, Integer)\u003c/code\u003e method if a more fine-tuned comparison logic is needed. The custom \u003ccode\u003eSimpleRankingDataComparator\u003c/code\u003e can be injected via a new constructor of \u003ccode\u003eDefaultPreloadManager.Builder\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eReduce the OOM risk of \u003ccode\u003eDefaultLoadControl.prioritizeTimeOverSizeThresholds\u003c/code\u003e by falling back to buffer byte size limits if available heap memory seems tight.\u003c/li\u003e\n\u003cli\u003eAlign handling of still images when \u003ccode\u003eMediaItem.imageDurationUs\u003c/code\u003e is not set: JPEG and HEIC still images now 'play' with a very short default duration (the same way PNG and other images previously behaved).\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eMediaSource.prepareSource(MediaSourceCaller, PlayerId, BandwidthMeter)\u003c/code\u003e to plumb \u003ccode\u003eBandwidthMeter\u003c/code\u003e to \u003ccode\u003eMediaSource\u003c/code\u003e. The deprecated method with custom implementation will still be called by default though, it is recommended to implement the new method and use \u003ccode\u003eBandwidthMeter.getTransferListener()\u003c/code\u003e to get parity to the old method.\u003c/li\u003e\n\u003cli\u003eIn \u003ccode\u003eDefaultBandwidthMeter\u003c/code\u003e, add support for a custom \u003ccode\u003eInitialBitrateSupplier\u003c/code\u003e. This allows apps to provide their own logic for determining the initial bitrate estimate, which will be used on creation of \u003ccode\u003eDefaultBandwidthMeter\u003c/code\u003e and on network type changes. The supplier can be set via \u003ccode\u003eDefaultBandwidthMeter.Builder.setInitialBitrateSupplier()\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eEnable dynamic scheduling by default. \u003ccode\u003eExoPlayer\u003c/code\u003e playback work loop will run dynamically as opposed to on a static interval.\u003c/li\u003e\n\u003cli\u003eRemove an unnecessary reset that can occur when joining tracks with pre-roll samples to active playback.\u003c/li\u003e\n\u003cli\u003eIn \u003ccode\u003eDefaultBandwidthMeter\u003c/code\u003e, optimize \u003ccode\u003egetInitialBitrateCountryGroupAssignment\u003c/code\u003e to return the country group assignments packed into a 32-bit integer instead of an array, reducing code size and avoiding allocations.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAudioTrack\u003c/code\u003e initialization failures on some devices by ensuring the retry logic always attempts a minimum of 1 second buffer size if other retries (by halving the buffer size) are unsuccessful (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3207\"\u003e#3207\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix codec issue on some devices where the codec was swallowing all samples if previously flushed before receiving input buffers.\u003c/li\u003e\n\u003cli\u003eAdd experimental \u003ccode\u003eExoPlayer.Builder.enablePerStreamMediaProgression()\u003c/code\u003e  to allow advancing media processing on a per-stream basis. This reduces startup latency between playlist items and avoids playback becoming \u0026quot;stuck\u0026quot; with very short content (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3122\"\u003e#3122\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix race condition related to audio session id usage where the initial audio session id auto-generated by \u003ccode\u003eExoPlayer\u003c/code\u003e would be used instead of the value set by \u003ccode\u003esetAudioSessionId\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3241\"\u003e#3241\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd experimental HAGC (ST 2094-50) timed metadata playback support for progressive media (e.g. MP4, Matroska). The player automatically merges HAGC metadata tracks with the associated video track and delivers the metadata out-of-band to the decoder on API 37+ devices. This behavior can be disabled via \u003ccode\u003eDefaultMediaSourceFactory.setExperimentalEnableHagcPlayback(false)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.selectionPriority\u003c/code\u003e representing the relative preference of the \u003ccode\u003eFormat\u003c/code\u003e in track selection (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3236\"\u003e#3236\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix potential scrubbing mode issue where scrubbing could stall when seeking to 'end of stream'.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eCompositionPlayer:\n\u003cul\u003e\n\u003cli\u003eFix an issue where \u003ccode\u003eTrackSelector\u003c/code\u003e instances were not being released.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTransformer:\n\u003cul\u003e\n\u003cli\u003eFix an issue where \u003ccode\u003eExportResult.fileSizeBytes\u003c/code\u003e may be over-reported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eExpose \u003ccode\u003eBaseTrackSelection.DEFAULT_FORMAT_COMPARATOR\u003c/code\u003e and add \u003ccode\u003eAdaptiveTrackSelection.Factory.setTrackFormatComparator\u003c/code\u003e to allow custom format ordering and ABR selection priority beyond bitrate-only ordering.\u003c/li\u003e\n\u003cli\u003eFix a timing-dependent concurrency issue where rapid sequential updates to track selection parameters could result in some updates being lost or overwritten.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP4, MP3, and FLAC: Add \u003ccode\u003eFLAG_DISABLE_ARTWORK_METADATA\u003c/code\u003e to allow discarding attached pictures and cover art metadata during container parsing to reduce runtime memory consumption (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2077\"\u003e#2077\u003c/a\u003e). This can also be enabled centrally via \u003ccode\u003eDefaultExtractorsFactory.setDisableArtworkMetadata\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for extracting ITU-T T.35 (\u003ccode\u003eit35\u003c/code\u003e) timed metadata tracks.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for extracting chapter metadata (both Nero and QuickTime formats). QuickTime chapters are preferred if both are present. The extracted chapter information is exposed as \u003ccode\u003eChapter\u003c/code\u003e entries within the track's \u003ccode\u003eMetadata\u003c/code\u003e, allowing for native chapter navigation in MP4, M4A, and M4B files (such as audiobooks and podcasts) (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2803\"\u003e#2803\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eWAV, Matroska, and MP4: Add support for 64-bit floating point PCM audio (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3090\"\u003e#3090\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMatroska: Use codec bitstream metadata to populate accurate \u003ccode\u003eColorInfo\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for seeking in fragmented MP4 files using the \u003ccode\u003emfra\u003c/code\u003e box when a \u003ccode\u003esidx\u003c/code\u003e box is not present. To enable this, provide \u003ccode\u003eFLAG_READ_MFRA_FOR_SEEK_MAP\u003c/code\u003e to the \u003ccode\u003eFragmentedMp4Extractor\u003c/code\u003e, which is now done by default in \u003ccode\u003eDefaultExtractorsFactory\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3088\"\u003e#3088\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eIgnore \u003ccode\u003eav1C\u003c/code\u003e data with unsupported version.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for big-endian floating point PCM in \u003ccode\u003efpcm\u003c/code\u003e boxes.\u003c/li\u003e\n\u003cli\u003eMatroska: Parse chapter info to \u003ccode\u003eChapter\u003c/code\u003e entries in a track's \u003ccode\u003eMetadata\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eMPEG-TS: Improve extraction of DTS-HD and DTS Express streams by combining the Core and Extension Substream into a single sample, fixing playback issues where the two were previously output as separate samples (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3147\"\u003e#3147\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMP4: Prevent infinite loops and out-of-bounds reads when parsing empty \u003ccode\u003eilst\u003c/code\u003e metadata tag items (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3191\"\u003e#3191\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMPEG-TS: Ensure the last frame is rendered for streams where the last PES packet has a known length (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3206\"\u003e#3206\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMP3: Fix bitrate reporting for files with Xing and VBRI header.\u003c/li\u003e\n\u003cli\u003eMatroska: Handle tracks defined in the last cluster (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3250\"\u003e#3250\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMatroska: Add support for ALAC (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3268\"\u003e#3268\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/blob/release/RELEASENOTES.md\"\u003eandroidx.media3:media3-exoplayer-hls's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e1.11.0 (2026-08-05)\u003c/h3\u003e\n\u003cp\u003eThis release includes the following changes since the\n\u003ca href=\"https://github.com/androidx/media/blob/release/#1101-2026-05-12\"\u003e1.10.1 release\u003c/a\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.channelMask\u003c/code\u003e to explicitly represent the audio channel mask,\nand a new \u003ccode\u003eUtil.getAudioTrackChannelConfig(Format)\u003c/code\u003e overload to safely\nresolve it.\u003c/li\u003e\n\u003cli\u003eUpgrade Kotlin from 2.0.20 to 2.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix a timing-dependent concurrency bug that could cause an\n\u003ccode\u003eIllegalStateException\u003c/code\u003e or \u003ccode\u003eIndexOutOfBoundsException\u003c/code\u003e in ExoPlayer.\u003c/li\u003e\n\u003cli\u003eRelax ad group count checks in \u003ccode\u003eAdsMediaSource\u003c/code\u003e to allow the ad group\ncount to decrease when an ad group is fully processed\n(\u003ccode\u003ehasUnplayedAds()\u003c/code\u003e is \u003ccode\u003efalse\u003c/code\u003e), accommodating dynamic ad group resizing\nduring reset workflows.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egetFlags()\u003c/code\u003e and \u003ccode\u003eFLAG_STRICT_DURATION\u003c/code\u003e to \u003ccode\u003eSampleStream\u003c/code\u003e to allow\nstreams to report flags, and update renderers to check these flags\ndynamically.\u003c/li\u003e\n\u003cli\u003eFall back to the frame rate estimator in \u003ccode\u003eMediaCodecVideoRenderer\u003c/code\u003e and\nto the codec output format in \u003ccode\u003eMediaCodecAudioRenderer\u003c/code\u003e to calculate the\ncodec operating rate when the stream formats do not provide a valid\nvalue, and avoid unnecessary codec resets.\u003c/li\u003e\n\u003cli\u003eRemove clipping of content for client-side inserted ads in the core\nplayer. Instead, \u003ccode\u003eAdsMediaSource\u003c/code\u003e takes care of the clipping logic.\nCustom client-side inserted ads sources need to be updated to implement\nthe content clipping internally.\u003c/li\u003e\n\u003cli\u003eMark tracks with a well-formed but unrecognized codec profile or level\nas \u003ccode\u003esupported=NO_EXCEEDS_CAPABILITIES\u003c/code\u003e instead of \u003ccode\u003esupported=YES\u003c/code\u003e (which\nis how tracks with missing or malformed profile or level info are\nmarked). This ensures these tracks (which are unlikely to be supported\nby the device) are not selected when there are better-supported\nalternatives.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eDefaultPreloadManager.SimpleRankingDataComparator\u003c/code\u003e, which is a\n\u003ccode\u003eRankingDataComparator\u003c/code\u003e that compares the ranks of the media items based\non their distances to the index of the current playing media item. Apps\ncan override its \u003ccode\u003ecompare(Integer, Integer)\u003c/code\u003e method if a more fine-tuned\ncomparison logic is needed. The custom \u003ccode\u003eSimpleRankingDataComparator\u003c/code\u003e can\nbe injected via a new constructor of \u003ccode\u003eDefaultPreloadManager.Builder\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eReduce the OOM risk of\n\u003ccode\u003eDefaultLoadControl.prioritizeTimeOverSizeThresholds\u003c/code\u003e by falling back to\nbuffer byte size limits if available heap memory seems tight.\u003c/li\u003e\n\u003cli\u003eAlign handling of still images when \u003ccode\u003eMediaItem.imageDurationUs\u003c/code\u003e is not\nset: JPEG and HEIC still images now 'play' with a very short default\nduration (the same way PNG and other images previously behaved).\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eMediaSource.prepareSource(MediaSourceCaller, PlayerId, BandwidthMeter)\u003c/code\u003e to plumb \u003ccode\u003eBandwidthMeter\u003c/code\u003e to \u003ccode\u003eMediaSource\u003c/code\u003e. The\ndeprecated method with custom implementation will still be called by\ndefault though, it is recommended to implement the new method and use\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/2bc207851df311340767e913931ca7b28cab1794\"\u003e\u003ccode\u003e2bc2078\u003c/code\u003e\u003c/a\u003e Merge branch 'release' into release-3.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/e156aec119c304d3de70a2fa69e08dc585b9d92b\"\u003e\u003ccode\u003ee156aec\u003c/code\u003e\u003c/a\u003e Update RELEASENOTES.md for the Media3 1.11.0 stable release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/458b232a5cd2e0114a0911a1ec1ee2e1f871086e\"\u003e\u003ccode\u003e458b232\u003c/code\u003e\u003c/a\u003e Update Media3 library version to 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/a51f7e92dd415c91e9ab3008d73ab19c2394830c\"\u003e\u003ccode\u003ea51f7e9\u003c/code\u003e\u003c/a\u003e Update release notes for 1.11.0-rc01\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/1c241543fb0df700f2221b1839e0f1886c268be2\"\u003e\u003ccode\u003e1c24154\u003c/code\u003e\u003c/a\u003e Bump version number for 1.11.0-rc01\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/fc38c2cda8789db646ae6a01e06494de059a2495\"\u003e\u003ccode\u003efc38c2c\u003c/code\u003e\u003c/a\u003e Fix unexpected onMediaItemTransition event on seek within same item\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/bb3d9921f14d900a2e76528f2d97cf82e925a499\"\u003e\u003ccode\u003ebb3d992\u003c/code\u003e\u003c/a\u003e Gate detached surface workaround on vendor API level\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/b33316303d3ef5ad0ede57cbc9dab6d8ab1e63a6\"\u003e\u003ccode\u003eb333163\u003c/code\u003e\u003c/a\u003e Catch ForegroundServiceStartNotAllowedException in stopSelfSafely.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/66d8d7a612ba4018ae073001168526592b60f32a\"\u003e\u003ccode\u003e66d8d7a\u003c/code\u003e\u003c/a\u003e Move workarounds disabling logic to DashHostedTest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/b220203994462ac7a8655a596afcfb45a68eaa10\"\u003e\u003ccode\u003eb220203\u003c/code\u003e\u003c/a\u003e Fix content resume offset calculation for asset list interstitials\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/androidx/media/compare/1.5.1...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.media3:media3-ui` from 1.5.1 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/releases\"\u003eandroidx.media3:media3-ui's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.channelMask\u003c/code\u003e to explicitly represent the audio channel mask, and a new \u003ccode\u003eUtil.getAudioTrackChannelConfig(Format)\u003c/code\u003e overload to safely resolve it.\u003c/li\u003e\n\u003cli\u003eUpgrade Kotlin from 2.0.20 to 2.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix a timing-dependent concurrency bug that could cause an \u003ccode\u003eIllegalStateException\u003c/code\u003e or \u003ccode\u003eIndexOutOfBoundsException\u003c/code\u003e in ExoPlayer.\u003c/li\u003e\n\u003cli\u003eRelax ad group count checks in \u003ccode\u003eAdsMediaSource\u003c/code\u003e to allow the ad group count to decrease when an ad group is fully processed\n(\u003ccode\u003ehasUnplayedAds()\u003c/code\u003e is \u003ccode\u003efalse\u003c/code\u003e), accommodating dynamic ad group resizing during reset workflows.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egetFlags()\u003c/code\u003e and \u003ccode\u003eFLAG_STRICT_DURATION\u003c/code\u003e to \u003ccode\u003eSampleStream\u003c/code\u003e to allow streams to report flags, and update renderers to check these flags dynamically.\u003c/li\u003e\n\u003cli\u003eFall back to the frame rate estimator in \u003ccode\u003eMediaCodecVideoRenderer\u003c/code\u003e and to the codec output format in \u003ccode\u003eMediaCodecAudioRenderer\u003c/code\u003e to calculate the codec operating rate when the stream formats do not provide a valid value, and avoid unnecessary codec resets.\u003c/li\u003e\n\u003cli\u003eRemove clipping of content for client-side inserted ads in the core player. Instead, \u003ccode\u003eAdsMediaSource\u003c/code\u003e takes care of the clipping logic. Custom client-side inserted ads sources need to be updated to implement the content clipping internally.\u003c/li\u003e\n\u003cli\u003eMark tracks with a well-formed but unrecognized codec profile or level as \u003ccode\u003esupported=NO_EXCEEDS_CAPABILITIES\u003c/code\u003e instead of \u003ccode\u003esupported=YES\u003c/code\u003e (which is how tracks with missing or malformed profile or level info are marked). This ensures these tracks (which are unlikely to be supported by the device) are not selected when there are better-supported alternatives.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eDefaultPreloadManager.SimpleRankingDataComparator\u003c/code\u003e, which is a \u003ccode\u003eRankingDataComparator\u003c/code\u003e that compares the ranks of the media items based on their distances to the index of the current playing media item. Apps can override its \u003ccode\u003ecompare(Integer, Integer)\u003c/code\u003e method if a more fine-tuned comparison logic is needed. The custom \u003ccode\u003eSimpleRankingDataComparator\u003c/code\u003e can be injected via a new constructor of \u003ccode\u003eDefaultPreloadManager.Builder\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eReduce the OOM risk of \u003ccode\u003eDefaultLoadControl.prioritizeTimeOverSizeThresholds\u003c/code\u003e by falling back to buffer byte size limits if available heap memory seems tight.\u003c/li\u003e\n\u003cli\u003eAlign handling of still images when \u003ccode\u003eMediaItem.imageDurationUs\u003c/code\u003e is not set: JPEG and HEIC still images now 'play' with a very short default duration (the same way PNG and other images previously behaved).\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eMediaSource.prepareSource(MediaSourceCaller, PlayerId, BandwidthMeter)\u003c/code\u003e to plumb \u003ccode\u003eBandwidthMeter\u003c/code\u003e to \u003ccode\u003eMediaSource\u003c/code\u003e. The deprecated method with custom implementation will still be called by default though, it is recommended to implement the new method and use \u003ccode\u003eBandwidthMeter.getTransferListener()\u003c/code\u003e to get parity to the old method.\u003c/li\u003e\n\u003cli\u003eIn \u003ccode\u003eDefaultBandwidthMeter\u003c/code\u003e, add support for a custom \u003ccode\u003eInitialBitrateSupplier\u003c/code\u003e. This allows apps to provide their own logic for determining the initial bitrate estimate, which will be used on creation of \u003ccode\u003eDefaultBandwidthMeter\u003c/code\u003e and on network type changes. The supplier can be set via \u003ccode\u003eDefaultBandwidthMeter.Builder.setInitialBitrateSupplier()\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eEnable dynamic scheduling by default. \u003ccode\u003eExoPlayer\u003c/code\u003e playback work loop will run dynamically as opposed to on a static interval.\u003c/li\u003e\n\u003cli\u003eRemove an unnecessary reset that can occur when joining tracks with pre-roll samples to active playback.\u003c/li\u003e\n\u003cli\u003eIn \u003ccode\u003eDefaultBandwidthMeter\u003c/code\u003e, optimize \u003ccode\u003egetInitialBitrateCountryGroupAssignment\u003c/code\u003e to return the country group assignments packed into a 32-bit integer instead of an array, reducing code size and avoiding allocations.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAudioTrack\u003c/code\u003e initialization failures on some devices by ensuring the retry logic always attempts a minimum of 1 second buffer size if other retries (by halving the buffer size) are unsuccessful (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3207\"\u003e#3207\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix codec issue on some devices where the codec was swallowing all samples if previously flushed before receiving input buffers.\u003c/li\u003e\n\u003cli\u003eAdd experimental \u003ccode\u003eExoPlayer.Builder.enablePerStreamMediaProgression()\u003c/code\u003e  to allow advancing media processing on a per-stream basis. This reduces startup latency between playlist items and avoids playback becoming \u0026quot;stuck\u0026quot; with very short content (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3122\"\u003e#3122\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix race condition related to audio session id usage where the initial audio session id auto-generated by \u003ccode\u003eExoPlayer\u003c/code\u003e would be used instead of the value set by \u003ccode\u003esetAudioSessionId\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3241\"\u003e#3241\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd experimental HAGC (ST 2094-50) timed metadata playback support for progressive media (e.g. MP4, Matroska). The player automatically merges HAGC metadata tracks with the associated video track and delivers the metadata out-of-band to the decoder on API 37+ devices. This behavior can be disabled via \u003ccode\u003eDefaultMediaSourceFactory.setExperimentalEnableHagcPlayback(false)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.selectionPriority\u003c/code\u003e representing the relative preference of the \u003ccode\u003eFormat\u003c/code\u003e in track selection (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3236\"\u003e#3236\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix potential scrubbing mode issue where scrubbing could stall when seeking to 'end of stream'.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eCompositionPlayer:\n\u003cul\u003e\n\u003cli\u003eFix an issue where \u003ccode\u003eTrackSelector\u003c/code\u003e instances were not being released.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTransformer:\n\u003cul\u003e\n\u003cli\u003eFix an issue where \u003ccode\u003eExportResult.fileSizeBytes\u003c/code\u003e may be over-reported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eExpose \u003ccode\u003eBaseTrackSelection.DEFAULT_FORMAT_COMPARATOR\u003c/code\u003e and add \u003ccode\u003eAdaptiveTrackSelection.Factory.setTrackFormatComparator\u003c/code\u003e to allow custom format ordering and ABR selection priority beyond bitrate-only ordering.\u003c/li\u003e\n\u003cli\u003eFix a timing-dependent concurrency issue where rapid sequential updates to track selection parameters could result in some updates being lost or overwritten.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP4, MP3, and FLAC: Add \u003ccode\u003eFLAG_DISABLE_ARTWORK_METADATA\u003c/code\u003e to allow discarding attached pictures and cover art metadata during container parsing to reduce runtime memory consumption (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2077\"\u003e#2077\u003c/a\u003e). This can also be enabled centrally via \u003ccode\u003eDefaultExtractorsFactory.setDisableArtworkMetadata\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for extracting ITU-T T.35 (\u003ccode\u003eit35\u003c/code\u003e) timed metadata tracks.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for extracting chapter metadata (both Nero and QuickTime formats). QuickTime chapters are preferred if both are present. The extracted chapter information is exposed as \u003ccode\u003eChapter\u003c/code\u003e entries within the track's \u003ccode\u003eMetadata\u003c/code\u003e, allowing for native chapter navigation in MP4, M4A, and M4B files (such as audiobooks and podcasts) (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2803\"\u003e#2803\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eWAV, Matroska, and MP4: Add support for 64-bit floating point PCM audio (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3090\"\u003e#3090\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMatroska: Use codec bitstream metadata to populate accurate \u003ccode\u003eColorInfo\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for seeking in fragmented MP4 files using the \u003ccode\u003emfra\u003c/code\u003e box when a \u003ccode\u003esidx\u003c/code\u003e box is not present. To enable this, provide \u003ccode\u003eFLAG_READ_MFRA_FOR_SEEK_MAP\u003c/code\u003e to the \u003ccode\u003eFragmentedMp4Extractor\u003c/code\u003e, which is now done by default in \u003ccode\u003eDefaultExtractorsFactory\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3088\"\u003e#3088\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eIgnore \u003ccode\u003eav1C\u003c/code\u003e data with unsupported version.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for big-endian floating point PCM in \u003ccode\u003efpcm\u003c/code\u003e boxes.\u003c/li\u003e\n\u003cli\u003eMatroska: Parse chapter info to \u003ccode\u003eChapter\u003c/code\u003e entries in a track's \u003ccode\u003eMetadata\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eMPEG-TS: Improve extraction of DTS-HD and DTS Express streams by combining the Core and Extension Substream into a single sample, fixing playback issues where the two were previously output as separate samples (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3147\"\u003e#3147\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMP4: Prevent infinite loops and out-of-bounds reads when parsing empty \u003ccode\u003eilst\u003c/code\u003e metadata tag items (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3191\"\u003e#3191\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMPEG-TS: Ensure the last frame is rendered for streams where the last PES packet has a known length (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3206\"\u003e#3206\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMP3: Fix bitrate reporting for files with Xing and VBRI header.\u003c/li\u003e\n\u003cli\u003eMatroska: Handle tracks defined in the last cluster (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3250\"\u003e#3250\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMatroska: Add support for ALAC (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3268\"\u003e#3268\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/blob/release/RELEASENOTES.md\"\u003eandroidx.media3:media3-ui's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e1.11.0 (2026-08-05)\u003c/h3\u003e\n\u003cp\u003eThis release includes the following changes since the\n\u003ca href=\"https://github.com/androidx/media/blob/release/#1101-2026-05-12\"\u003e1.10.1 release\u003c/a\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.channelMask\u003c/code\u003e to explicitly represent the audio channel mask,\nand a new \u003ccode\u003eUtil.getAudioTrackChannelConfig(Format)\u003c/code\u003e overload to safely\nresolve it.\u003c/li\u003e\n\u003cli\u003eUpgrade Kotlin from 2.0.20 to 2.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix a timing-dependent concurrency bug that could cause an\n\u003ccode\u003eIllegalStateException\u003c/code\u003e or \u003ccode\u003eIndexOutOfBoundsException\u003c/code\u003e in ExoPlayer.\u003c/li\u003e\n\u003cli\u003eRelax ad group count checks in \u003ccode\u003eAdsMediaSource\u003c/code\u003e to allow the ad group\ncount to decrease when an ad group is fully processed\n(\u003ccode\u003ehasUnplayedAds()\u003c/code\u003e is \u003ccode\u003efalse\u003c/code\u003e), accommodating dynamic ad group resizing\nduring reset workflows.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egetFlags()\u003c/code\u003e and \u003ccode\u003eFLAG_STRICT_DURATION\u003c/code\u003e to \u003ccode\u003eSampleStream\u003c/code\u003e to allow\nstreams to report flags, and update renderers to check these flags\ndynamically.\u003c/li\u003e\n\u003cli\u003eFall back to the frame rate estimator in \u003ccode\u003eMediaCodecVideoRenderer\u003c/code\u003e and\nto the codec output format in \u003ccode\u003eMediaCodecAudioRenderer\u003c/code\u003e to calculate the\ncodec operating rate when the stream formats do not provide a valid\nvalue, and avoid unnecessary codec resets.\u003c/li\u003e\n\u003cli\u003eRemove clipping of content for client-side inserted ads in the core\nplayer. Instead, \u003ccode\u003eAdsMediaSource\u003c/code\u003e takes care of the clipping logic.\nCustom client-side inserted ads sources need to be updated to implement\nthe content clipping internally.\u003c/li\u003e\n\u003cli\u003eMark tracks with a well-formed but unrecognized codec profile or level\nas \u003ccode\u003esupported=NO_EXCEEDS_CAPABILITIES\u003c/code\u003e instead of \u003ccode\u003esupported=YES\u003c/code\u003e (which\nis how tracks with missing or malformed profile or level info are\nmarked). This ensures these tracks (which are unlikely to be supported\nby the device) are not selected when there are better-supported\nalternatives.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eDefaultPreloadManager.SimpleRankingDataComparator\u003c/code\u003e, which is a\n\u003ccode\u003eRankingDataComparator\u003c/code\u003e that compares the ranks of the media items based\non their distances to the index of the current playing media item. Apps\ncan override its \u003ccode\u003ecompare(Integer, Integer)\u003c/code\u003e method if a more fine-tuned\ncomparison logic is needed. The custom \u003ccode\u003eSimpleRankingDataComparator\u003c/code\u003e can\nbe injected via a new constructor of \u003ccode\u003eDefaultPreloadManager.Builder\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eReduce the OOM risk of\n\u003ccode\u003eDefaultLoadControl.prioritizeTimeOverSizeThresholds\u003c/code\u003e by falling back to\nbuffer byte size limits if available heap memory seems tight.\u003c/li\u003e\n\u003cli\u003eAlign handling of still images when \u003ccode\u003eMediaItem.imageDurationUs\u003c/code\u003e is not\nset: JPEG and HEIC still images now 'play' with a very short default\nduration (the same way PNG and other images previously behaved).\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eMediaSource.prepareSource(MediaSourceCaller, PlayerId, BandwidthMeter)\u003c/code\u003e to plumb \u003ccode\u003eBandwidthMeter\u003c/code\u003e to \u003ccode\u003eMediaSource\u003c/code\u003e. The\ndeprecated method with custom implementation will still be called by\ndefault though, it is recommended to implement the new method and use\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/2bc207851df311340767e913931ca7b28cab1794\"\u003e\u003ccode\u003e2bc2078\u003c/code\u003e\u003c/a\u003e Merge branch 'release' into release-3.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/e156aec119c304d3de70a2fa69e08dc585b9d92b\"\u003e\u003ccode\u003ee156aec\u003c/code\u003e\u003c/a\u003e Update RELEASENOTES.md for the Media3 1.11.0 stable release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/458b232a5cd2e0114a0911a1ec1ee2e1f871086e\"\u003e\u003ccode\u003e458b232\u003c/code\u003e\u003c/a\u003e Update Media3 library version to 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/a51f7e92dd415c91e9ab3008d73ab19c2394830c\"\u003e\u003ccode\u003ea51f7e9\u003c/code\u003e\u003c/a\u003e Update release notes for 1.11.0-rc01\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/1c241543fb0df700f2221b1839e0f1886c268be2\"\u003e\u003ccode\u003e1c24154\u003c/code\u003e\u003c/a\u003e Bump version number for 1.11.0-rc01\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/fc38c2cda8789db646ae6a01e06494de059a2495\"\u003e\u003ccode\u003efc38c2c\u003c/code\u003e\u003c/a\u003e Fix unexpected onMediaItemTransition event on seek within same item\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/bb3d9921f14d900a2e76528f2d97cf82e925a499\"\u003e\u003ccode\u003ebb3d992\u003c/code\u003e\u003c/a\u003e Gate detached surface workaround on vendor API level\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/b33316303d3ef5ad0ede57cbc9dab6d8ab1e63a6\"\u003e\u003ccode\u003eb333163\u003c/code\u003e\u003c/a\u003e Catch ForegroundServiceStartNotAllowedException in stopSelfSafely.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/66d8d7a612ba4018ae073001168526592b60f32a\"\u003e\u003ccode\u003e66d8d7a\u003c/code\u003e\u003c/a\u003e Move workarounds disabling logic to DashHostedTest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/b220203994462ac7a8655a596afcfb45a68eaa10\"\u003e\u003ccode\u003eb220203\u003c/code\u003e\u003c/a\u003e Fix content resume offset calculation for asset list interstitials\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/androidx/media/compare/1.5.1...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.media3:media3-datasource-okhttp` from 1.5.1 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/releases\"\u003eandroidx.media3:media3-datasource-okhttp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.channelMask\u003c/code\u003e to explicitly represent the audio channel mask, and a new \u003ccode\u003eUtil.getAudioTrackChannelConfig(Format)\u003c/code\u003e overload to safely resolve it.\u003c/li\u003e\n\u003cli\u003eUpgrade Kotlin from 2.0.20 to 2.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix a timing-dependent concurrency bug that could cause an \u003ccode\u003eIllegalStateException\u003c/code\u003e or \u003ccode\u003eIndexOutOfBoundsException\u003c/code\u003e in ExoPlayer.\u003c/li\u003e\n\u003cli\u003eRelax ad group count checks in \u003ccode\u003eAdsMediaSource\u003c/code\u003e to allow the ad group count to decrease when an ad group is fully processed\n(\u003ccode\u003ehasUnplayedAds()\u003c/code\u003e is \u003ccode\u003efalse\u003c/code\u003e), accommodating dynamic ad group resizing during reset workflows.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egetFlags()\u003c/code\u003e and \u003ccode\u003eFLAG_STRICT_DURATION\u003c/code\u003e to \u003ccode\u003eSampleStream\u003c/code\u003e to allow streams to report flags, and update renderers to check these flags dynamically.\u003c/li\u003e\n\u003cli\u003eFall back to the frame rate estimator in \u003ccode\u003eMediaCodecVideoRenderer\u003c/code\u003e and to the codec output format in \u003ccode\u003eMediaCodecAudioRenderer\u003c/code\u003e to calculate the codec operating rate when the stream formats do not provide a valid value, and avoid unnecessary codec resets.\u003c/li\u003e\n\u003cli\u003eRemove clipping of content for client-side inserted ads in the core player. Instead, \u003ccode\u003eAdsMediaSource\u003c/code\u003e takes care of the clipping logic. Custom client-side inserted ads sources need to be updated to implement the content clipping internally.\u003c/li\u003e\n\u003cli\u003eMark tracks with a well-formed but unrecognized codec profile or level as \u003ccode\u003esupported=NO_EXCEEDS_CAPABILITIES\u003c/code\u003e instead of \u003ccode\u003esupported=YES\u003c/code\u003e (which is how tracks with missing or malformed profile or level info are marked). This ensures these tracks (which are unlikely to be supported by the device) are not selected when there are better-supported alternatives.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eDefaultPreloadManager.SimpleRankingDataComparator\u003c/code\u003e, which is a \u003ccode\u003eRankingDataComparator\u003c/code\u003e that compares the ranks of the media items based on their distances to the index of the current playing media item. Apps can override its \u003ccode\u003ecompare(Integer, Integer)\u003c/code\u003e method if a more fine-tuned comparison logic is needed. The custom \u003ccode\u003eSimpleRankingDataComparator\u003c/code\u003e can be injected via a new constructor of \u003ccode\u003eDefaultPreloadManager.Builder\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eReduce the OOM risk of \u003ccode\u003eDefaultLoadControl.prioritizeTimeOverSizeThresholds\u003c/code\u003e by falling back to buffer byte size limits if available heap memory seems tight.\u003c/li\u003e\n\u003cli\u003eAlign handling of still images when \u003ccode\u003eMediaItem.imageDurationUs\u003c/code\u003e is not set: JPEG and HEIC still images now 'play' with a very short default duration (the same way PNG and other images previously behaved).\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eMediaSource.prepareSource(MediaSourceCaller, PlayerId, BandwidthMeter)\u003c/code\u003e to plumb \u003ccode\u003eBandwidthMeter\u003c/code\u003e to \u003ccode\u003eMediaSource\u003c/code\u003e. The deprecated method with custom implementation will still be called by default though, it is recommended to implement the new method and use \u003ccode\u003eBandwidthMeter.getTransferListener()\u003c/code\u003e to get parity to the old method.\u003c/li\u003e\n\u003cli\u003eIn \u003ccode\u003eDefaultBandwidthMeter\u003c/code\u003e, add support for a custom \u003ccode\u003eInitialBitrateSupplier\u003c/code\u003e. This allows apps to provide their own logic for determining the initial bitrate estimate, which will be used on creation of \u003ccode\u003eDefaultBandwidthMeter\u003c/code\u003e and on network type changes. The supplier can be set via \u003ccode\u003eDefaultBandwidthMeter.Builder.setInitialBitrateSupplier()\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eEnable dynamic scheduling by default. \u003ccode\u003eExoPlayer\u003c/code\u003e playback work loop will run dynamically as opposed to on a static interval.\u003c/li\u003e\n\u003cli\u003eRemove an unnecessary reset that can occur when joining tracks with pre-roll samples to active playback.\u003c/li\u003e\n\u003cli\u003eIn \u003ccode\u003eDefaultBandwidthMeter\u003c/code\u003e, optimize \u003ccode\u003egetInitialBitrateCountryGroupAssignment\u003c/code\u003e to return the country group assignments packed into a 32-bit integer instead of an array, reducing code size and avoiding allocations.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAudioTrack\u003c/code\u003e initialization failures on some devices by ensuring the retry logic always attempts a minimum of 1 second buffer size if other retries (by halving the buffer size) are unsuccessful (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3207\"\u003e#3207\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix codec issue on some devices where the codec was swallowing all samples if previously flushed before receiving input buffers.\u003c/li\u003e\n\u003cli\u003eAdd experimental \u003ccode\u003eExoPlayer.Builder.enablePerStreamMediaProgression()\u003c/code\u003e  to allow advancing media processing on a per-stream basis. This reduces startup latency between playlist items and avoids playback becoming \u0026quot;stuck\u0026quot; with very short content (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3122\"\u003e#3122\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix race condition related to audio session id usage where the initial audio session id auto-generated by \u003ccode\u003eExoPlayer\u003c/code\u003e would be used instead of the value set by \u003ccode\u003esetAudioSessionId\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3241\"\u003e#3241\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd experimental HAGC (ST 2094-50) timed metadata playback support for progressive media (e.g. MP4, Matroska). The player automatically merges HAGC metadata tracks with the associated video track and delivers the metadata out-of-band to the decoder on API 37+ devices. This behavior can be disabled via \u003ccode\u003eDefaultMediaSourceFactory.setExperimentalEnableHagcPlayback(false)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.selectionPriority\u003c/code\u003e representing the relative preference of the \u003ccode\u003eFormat\u003c/code\u003e in track selection (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3236\"\u003e#3236\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix potential scrubbing mode issue where scrubbing could stall when seeking to 'end of stream'.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eCompositionPlayer:\n\u003cul\u003e\n\u003cli\u003eFix an issue where \u003ccode\u003eTrackSelector\u003c/code\u003e instances were not being released.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTransformer:\n\u003cul\u003e\n\u003cli\u003eFix an issue where \u003ccode\u003eExportResult.fileSizeBytes\u003c/code\u003e may be over-reported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eExpose \u003ccode\u003eBaseTrackSelection.DEFAULT_FORMAT_COMPARATOR\u003c/code\u003e and add \u003ccode\u003eAdaptiveTrackSelection.Factory.setTrackFormatComparator\u003c/code\u003e to allow custom format ordering and ABR selection priority beyond bitrate-only ordering.\u003c/li\u003e\n\u003cli\u003eFix a timing-dependent concurrency issue where rapid sequential updates to track selection parameters could result in some updates being lost or overwritten.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP4, MP3, and FLAC: Add \u003ccode\u003eFLAG_DISABLE_ARTWORK_METADATA\u003c/code\u003e to allow discarding attached pictures and cover art metadata during container parsing to reduce runtime memory consumption (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2077\"\u003e#2077\u003c/a\u003e). This can also be enabled centrally via \u003ccode\u003eDefaultExtractorsFactory.setDisableArtworkMetadata\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for extracting ITU-T T.35 (\u003ccode\u003eit35\u003c/code\u003e) timed metadata tracks.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for extracting chapter metadata (both Nero and QuickTime formats). QuickTime chapters are preferred if both are present. The extracted chapter information is exposed as \u003ccode\u003eChapter\u003c/code\u003e entries within the track's \u003ccode\u003eMetadata\u003c/code\u003e, allowing for native chapter navigation in MP4, M4A, and M4B files (such as audiobooks and podcasts) (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2803\"\u003e#2803\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eWAV, Matroska, and MP4: Add support for 64-bit floating point PCM audio (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3090\"\u003e#3090\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMatroska: Use codec bitstream metadata to populate accurate \u003ccode\u003eColorInfo\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for seeking in fragmented MP4 files using the \u003ccode\u003emfra\u003c/code\u003e box when a \u003ccode\u003esidx\u003c/code\u003e box is not present. To enable this, provide \u003ccode\u003eFLAG_READ_MFRA_FOR_SEEK_MAP\u003c/code\u003e to the \u003ccode\u003eFragmentedMp4Extractor\u003c/code\u003e, which is now done by default in \u003ccode\u003eDefaultExtractorsFactory\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3088\"\u003e#3088\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eIgnore \u003ccode\u003eav1C\u003c/code\u003e data with unsupported version.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for big-endian floating point PCM in \u003ccode\u003efpcm\u003c/code\u003e boxes.\u003c/li\u003e\n\u003cli\u003eMatroska: Parse chapter info to \u003ccode\u003eChapter\u003c/code\u003e entries in a track's \u003ccode\u003eMetadata\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eMPEG-TS: Improve extraction of DTS-HD and DTS Express streams by combining the Core and Extension Substream into a single sample, fixing playback issues where the two were previously output as separate samples (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3147\"\u003e#3147\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMP4: Prevent infinite loops and out-of-bounds reads when parsing empty \u003ccode\u003eilst\u003c/code\u003e metadata tag items (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3191\"\u003e#3191\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMPEG-TS: Ensure the last frame is rendered for streams where the last PES packet has a known length (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3206\"\u003e#3206\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMP3: Fix bitrate reporting for files with Xing and VBRI header.\u003c/li\u003e\n\u003cli\u003eMatroska: Handle tracks defined in the last cluster (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3250\"\u003e#3250\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMatroska: Add support for ALAC (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3268\"\u003e#3268\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/blob/release/RELEASENOTES.md\"\u003eandroidx.media3:media3-datasource-okhttp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e1.11.0 (2026-08-05)\u003c/h3\u003e\n\u003cp\u003eThis release includes the following changes since the\n\u003ca href=\"https://github.com/androidx/media/blob/release/#1101-2026-05-12\"\u003e1.10.1 release\u003c/a\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.channelMask\u003c/code\u003e to explicitly represent the audio channel mask,\nand a new \u003ccode\u003eUtil.getAudioTrackChannelConfig(Format)\u003c/code\u003e overload to safely\nresolve it.\u003c/li\u003e\n\u003cli\u003eUpgrade Kotlin from 2.0.20 to 2.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix a timing-dependent concurrency bug that could cause an\n\u003ccode\u003eIllegalStateException\u003c/code\u003e or \u003ccode\u003eIndexOutOfBoundsException\u003c/code\u003e in ExoPlayer.\u003c/li\u003e\n\u003cli\u003eRelax ad group count checks in \u003ccode\u003eAdsMediaSource\u003c/code\u003e to allow the ad group\ncount to decrease when an ad group is fully processed\n(\u003ccode\u003ehasUnplayedAds()\u003c/code\u003e is \u003ccode\u003efalse\u003c/code\u003e), accommodating dynamic ad group resizing\nduring reset workflows.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egetFlags()\u003c/code\u003e and \u003ccode\u003eFLAG_STRICT_DURATION\u003c/code\u003e to \u003ccode\u003eSampleStream\u003c/code\u003e to allow\nstreams to report flags, and update renderers to check these flags\ndynamically.\u003c/li\u003e\n\u003cli\u003eFall back to the frame rate estimator in \u003ccode\u003eMediaCodecVideoRenderer\u003c/code\u003e and\nto the codec output format in \u003ccode\u003eMediaCodecAudioRenderer\u003c/code\u003e to calculate the\ncodec operating rate when the stream formats do not provide a valid\nvalue, and avoid unnecessary codec resets.\u003c/li\u003e\n\u003cli\u003eRemove clipping of content for client-side inserted ads in the core\nplayer. Instead, \u003ccode\u003eAdsMediaSource\u003c/code\u003e takes care of the clipping logic.\nCustom client-side inserted ads sources need to be updated to implement\nthe content clipping internally.\u003c/li\u003e\n\u003cli\u003eMark tracks with a well-formed but unrecognized codec profile or level\nas \u003ccode\u003esupported=NO_EXCEEDS_CAPABILITIES\u003c/code\u003e instead of \u003ccode\u003esupported=YES\u003c/code\u003e (which\nis how tracks with missing or malformed profile or level info are\nmarked). This ensures these tracks (which are unlikely to be supported\nby the device) are not selected when there are better-supported\nalternatives.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eDefaultPreloadManager.SimpleRankingDataComparator\u003c/code\u003e, which is a\n\u003ccode\u003eRankingDataComparator\u003c/code\u003e that compares the ranks of the media items based\non their distances to the index of the current playing media item. Apps\ncan override its \u003ccode\u003ecompare(Integer, Integer)\u003c/code\u003e method if a more fine-tuned\ncomparison logic is needed. The custom \u003ccode\u003eSimpleRankingDataComparator\u003c/code\u003e can\nbe injected via a new constructor of \u003ccode\u003eDefaultPreloadManager.Builder\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eReduce the OOM risk of\n\u003ccode\u003eDefaultLoadControl.prioritizeTimeOverSizeThresholds\u003c/code\u003e by falling back to\nbuffer byte size limits if available heap memory seems tight.\u003c/li\u003e\n\u003cli\u003eAlign handling of still images when \u003ccode\u003eMediaItem.imageDurationUs\u003c/code\u003e is not\nset: JPEG and HEIC still images now 'play' with a very short default\nduration (the same way PNG and other images previously behaved).\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eMediaSource.prepareSource(MediaSourceCaller, PlayerId, BandwidthMeter)\u003c/code\u003e to plumb \u003ccode\u003eBandwidthMeter\u003c/code\u003e to \u003ccode\u003eMediaSource\u003c/code\u003e. The\ndeprecated method with custom implementation will still be called by\ndefault though, it is recommended to implement the new method and use\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/2bc207851df311340767e913931ca7b28cab1794\"\u003e\u003ccode\u003e2bc2078\u003c/code\u003e\u003c/a\u003e Merge branch 'release' into release-3.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/e156aec119c304d3de70a2fa69e08dc585b9d92b\"\u003e\u003ccode\u003ee156aec\u003c/code\u003e\u003c/a\u003e Update RELEASENOTES.md for the Media3 1.11.0 stable release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/458b232a5cd2e0114a0911a1ec1ee2e1f871086e\"\u003e\u003ccode\u003e458b232\u003c/code\u003e\u003c/a\u003e Update Media3 library version to 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/a51f7e92dd415c91e9ab3008d73ab19c2394830c\"\u003e\u003ccode\u003ea51f7e9\u003c/code\u003e\u003c/a\u003e Update release notes for 1.11.0-rc01\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/1c241543fb0df700f2221b1839e0f1886c268be2\"\u003e\u003ccode\u003e1c24154\u003c/code\u003e\u003c/a\u003e Bump version number for 1.11.0-rc01\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/fc38c2cda8789db646ae6a01e06494de059a2495\"\u003e\u003ccode\u003efc38c2c\u003c/code\u003e\u003c/a\u003e Fix unexpected onMediaItemTransition event on seek within same item\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/bb3d9921f14d900a2e76528f2d97cf82e925a499\"\u003e\u003ccode\u003ebb3d992\u003c/code\u003e\u003c/a\u003e Gate detached surface workaround on vendor API level\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/b33316303d3ef5ad0ede57cbc9dab6d8ab1e63a6\"\u003e\u003ccode\u003eb333163\u003c/code\u003e\u003c/a\u003e Catch ForegroundServiceStartNotAllowedException in stopSelfSafely.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/66d8d7a612ba4018ae073001168526592b60f32a\"\u003e\u003ccode\u003e66d8d7a\u003c/code\u003e\u003c/a\u003e Move workarounds disabling logic to DashHostedTest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/b220203994462ac7a8655a596afcfb45a68eaa10\"\u003e\u003ccode\u003eb220203\u003c/code\u003e\u003c/a\u003e Fix content resume offset calculation for asset list interstitials\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/androidx/media/compare/1.5.1...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.media3:media3-exoplayer-hls` from 1.5.1 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/releases\"\u003eandroidx.media3:media3-exoplayer-hls's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.channelMask\u003c/code\u003e to explicitly represent the audio channel mask, and a new \u003ccode\u003eUtil.getAudioTrackChannelConfig(Format)\u003c/code\u003e overload to safely resolve it.\u003c/li\u003e\n\u003cli\u003eUpgrade Kotlin from 2.0.20 to 2.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix a timing-dependent concurrency bug that could cause an \u003ccode\u003eIllegalStateException\u003c/code\u003e or \u003ccode\u003eIndexOutOfBoundsException\u003c/code\u003e in ExoPlayer.\u003c/li\u003e\n\u003cli\u003eRelax ad group count checks in \u003ccode\u003eAdsMediaSource\u003c/code\u003e to allow the ad group count to decrease when an ad group is fully processed\n(\u003ccode\u003ehasUnplayedAds()\u003c/code\u003e is \u003ccode\u003efalse\u003c/code\u003e), accommodating dynamic ad group resizing during reset workflows.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egetFlags()\u003c/code\u003e and \u003ccode\u003eFLAG_STRICT_DURATION\u003c/code\u003e to \u003ccode\u003eSampleStream\u003c/code\u003e to allow streams to report flags, and update renderers to check these flags dynamically.\u003c/li\u003e\n\u003cli\u003eFall back to the frame rate estimator in \u003ccode\u003eMediaCodecVideoRenderer\u003c/code\u003e and to the codec output format in \u003ccode\u003eMediaCodecAudioRenderer\u003c/code\u003e to calculate the codec operating rate when the stream formats do not provide a valid value, and avoid unnecessary codec resets.\u003c/li\u003e\n\u003cli\u003eRemove clipping of content for client-side inserted ads in the core player. Instead, \u003ccode\u003eAdsMediaSource\u003c/code\u003e takes care of the clipping logic. Custom client-side inserted ads sources need to be updated to implement the content clipping internally.\u003c/li\u003e\n\u003cli\u003eMark tracks with a well-formed but unrecognized codec profile or level as \u003ccode\u003esupported=NO_EXCEEDS_CAPABILITIES\u003c/code\u003e instead of \u003ccode\u003esupported=YES\u003c/code\u003e (which is how tracks with missing or malformed profile or level info are marked). This ensures these tracks (which are unlikely to be supported by the device) are not selected when there are better-supported alternatives.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eDefaultPreloadManager.SimpleRankingDataComparator\u003c/code\u003e, which is a \u003ccode\u003eRankingDataComparator\u003c/code\u003e that compares the ranks of the media items based on their distances to the index of the current playing media item. Apps can override its \u003ccode\u003ecompare(Integer, Integer)\u003c/code\u003e method if a more fine-tuned comparison logic is needed. The custom \u003ccode\u003eSimpleRankingDataComparator\u003c/...\n\n_Description has been truncated_","html_url":"https://github.com/rommapp/argosy-launcher/pull/394","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/rommapp%2Fargosy-launcher/issues/394","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/394/packages"},{"uuid":"5284988987","node_id":"PR_kwDOEG2zEc8AAAABBa8j2A","number":432,"state":"closed","title":"Bump the gradle-dependencies-minor group across 1 directory with 26 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-12T06:04:26.000Z","author_association":null,"state_reason":null,"created_at":"2026-08-29T06:04:38.000Z","updated_at":"2026-09-12T06:04:28.000Z","time_to_close":1209588,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"gradle-dependencies-minor","update_count":26,"packages":[{"name":"com.google.gms:google-services","old_version":"4.3.13","new_version":"4.5.0"},{"name":"io.reactivex.rxjava2:rxjava","old_version":"2.2.10","new_version":"2.2.21","repository_url":"https://github.com/ReactiveX/RxJava"},{"name":"io.reactivex.rxjava2:rxkotlin","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/ReactiveX/RxKotlin"},{"name":"androidx.recyclerview:recyclerview","old_version":"1.2.1","new_version":"1.4.0"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm","old_version":"1.6.1","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"com.amazonaws:aws-android-sdk-core","old_version":"2.43.0","new_version":"2.81.1","repository_url":"https://github.com/aws/aws-sdk-android"},{"name":"com.google.code.gson:gson","old_version":"2.9.0","new_version":"2.14.0","repository_url":"https://github.com/google/gson"},{"name":"androidx.room:room-ktx","old_version":"2.5.2","new_version":"2.8.4"},{"name":"androidx.room:room-rxjava2","old_version":"2.5.2","new_version":"2.8.4"},{"name":"androidx.room:room-compiler","old_version":"2.5.2","new_version":"2.8.4"},{"name":"org.jetbrains.kotlinx:kotlinx-serialization-json","old_version":"1.3.1","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.serialization"},{"name":"androidx.constraintlayout:constraintlayout","old_version":"2.1.4","new_version":"2.2.2"},{"name":"com.google.android.material:material","old_version":"1.6.1","new_version":"1.14.0","repository_url":"https://github.com/material-components/material-components-android"},{"name":"androidx.core:core-ktx","old_version":"1.8.0","new_version":"1.19.0"},{"name":"androidx.compose.runtime:runtime","old_version":"1.5.0","new_version":"1.7.8"},{"name":"androidx.compose.ui:ui","old_version":"1.5.0","new_version":"1.7.8"},{"name":"androidx.compose.foundation:foundation","old_version":"1.5.0","new_version":"1.7.8"},{"name":"androidx.compose.foundation:foundation-layout","old_version":"1.5.0","new_version":"1.7.8"},{"name":"androidx.compose.material:material","old_version":"1.5.0","new_version":"1.7.8"},{"name":"androidx.compose.material:material-icons-extended","old_version":"1.5.0","new_version":"1.7.8"},{"name":"androidx.compose.runtime:runtime-livedata","old_version":"1.5.0","new_version":"1.7.8"},{"name":"androidx.compose.ui:ui-tooling","old_version":"1.5.0","new_version":"1.7.8"},{"name":"androidx.appcompat:appcompat","old_version":"1.4.2","new_version":"1.8.0"},{"name":"androidx.test.ext:junit","old_version":"1.1.3","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.4.0","new_version":"3.7.0"}],"path":null,"ecosystem":"maven"},"body":"Bumps the gradle-dependencies-minor group with 25 updates in the /android directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| com.google.gms:google-services | `4.3.13` | `4.5.0` |\n| [io.reactivex.rxjava2:rxjava](https://github.com/ReactiveX/RxJava) | `2.2.10` | `2.2.21` |\n| [io.reactivex.rxjava2:rxkotlin](https://github.com/ReactiveX/RxKotlin) | `2.3.0` | `2.4.0` |\n| androidx.recyclerview:recyclerview | `1.2.1` | `1.4.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm](https://github.com/Kotlin/kotlinx.coroutines) | `1.6.1` | `1.11.0` |\n| [com.amazonaws:aws-android-sdk-core](https://github.com/aws/aws-sdk-android) | `2.43.0` | `2.81.1` |\n| [com.google.code.gson:gson](https://github.com/google/gson) | `2.9.0` | `2.14.0` |\n| androidx.room:room-ktx | `2.5.2` | `2.8.4` |\n| androidx.room:room-rxjava2 | `2.5.2` | `2.8.4` |\n| androidx.room:room-compiler | `2.5.2` | `2.8.4` |\n| [org.jetbrains.kotlinx:kotlinx-serialization-json](https://github.com/Kotlin/kotlinx.serialization) | `1.3.1` | `1.11.0` |\n| androidx.constraintlayout:constraintlayout | `2.1.4` | `2.2.2` |\n| [com.google.android.material:material](https://github.com/material-components/material-components-android) | `1.6.1` | `1.14.0` |\n| androidx.core:core-ktx | `1.8.0` | `1.19.0` |\n| androidx.compose.runtime:runtime | `1.5.0` | `1.7.8` |\n| androidx.compose.ui:ui | `1.5.0` | `1.7.8` |\n| androidx.compose.foundation:foundation | `1.5.0` | `1.7.8` |\n| androidx.compose.foundation:foundation-layout | `1.5.0` | `1.7.8` |\n| androidx.compose.material:material | `1.5.0` | `1.7.8` |\n| androidx.compose.material:material-icons-extended | `1.5.0` | `1.7.8` |\n| androidx.compose.runtime:runtime-livedata | `1.5.0` | `1.7.8` |\n| androidx.compose.ui:ui-tooling | `1.5.0` | `1.7.8` |\n| androidx.appcompat:appcompat | `1.4.2` | `1.8.0` |\n| androidx.test.ext:junit | `1.1.3` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.4.0` | `3.7.0` |\n\n\nUpdates `com.google.gms:google-services` from 4.3.13 to 4.5.0\n\nUpdates `io.reactivex.rxjava2:rxjava` from 2.2.10 to 2.2.21\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ReactiveX/RxJava/releases\"\u003eio.reactivex.rxjava2:rxjava's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.2.21\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"http://search.maven.org/#artifactdetails%7Cio.reactivex.rxjava2%7Crxjava%7C2.2.21%7C\"\u003eMaven\u003c/a\u003e\n\u003ca href=\"http://reactivex.io/RxJava/2.x/javadoc/2.2.21\"\u003eJavaDocs\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e:warning: This is the last planned update for the 2.x version line. After \u003cstrong\u003eFebruary 28, 2021\u003c/strong\u003e, 2.x becomes \u003cstrong\u003eEnd-of-Life\u003c/strong\u003e (EoL); no further patches, bugfixes, enhancements, documentation or support will be provided by the project.\u003c/p\u003e\n\u003ch4\u003eEnhancements\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a system parameter to allow scheduled worker release in the Io \u003ccode\u003eScheduler\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/7162\"\u003e#7162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a system parameter to allow \u003ccode\u003eScheduler\u003c/code\u003es to use \u003ccode\u003eSystem.nanoTime()\u003c/code\u003e for \u003ccode\u003enow()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/7170\"\u003e#7170\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.2.20\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"http://search.maven.org/#artifactdetails%7Cio.reactivex.rxjava2%7Crxjava%7C2.2.20%7C\"\u003eMaven\u003c/a\u003e\n\u003ca href=\"http://reactivex.io/RxJava/2.x/javadoc/2.2.20\"\u003eJavaDocs\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e:warning: The 2.x version line is now in \u003cstrong\u003emaintenance mode\u003c/strong\u003e and will be supported only through bugfixes until \u003cstrong\u003eFebruary 28, 2021\u003c/strong\u003e. No new features, behavior changes or documentation adjustments will be accepted or applied to 2.x. It is recommended to migrate to \u003ca href=\"https://github.com/ReactiveX/RxJava/tree/3.x\"\u003e3.x\u003c/a\u003e within this time period.\u003c/p\u003e\n\u003ch4\u003eBugfixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eObservable.flatMap\u003c/code\u003e with \u003ccode\u003emaxConcurrency\u003c/code\u003e hangs (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/6960\"\u003e#6960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eObservable.toFlowable(ERROR)\u003c/code\u003e not cancelling upon \u003ccode\u003eMissingBackpressureException\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/7084\"\u003e#7084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eFlowable.concatMap\u003c/code\u003e backpressure with scalars. (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/7091\"\u003e#7091\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.2.19\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"http://search.maven.org/#artifactdetails%7Cio.reactivex.rxjava2%7Crxjava%7C2.2.19%7C\"\u003eMaven\u003c/a\u003e\n\u003ca href=\"http://reactivex.io/RxJava/2.x/javadoc/2.2.19\"\u003eJavaDocs\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e:warning: The 2.x version line is now in \u003cstrong\u003emaintenance mode\u003c/strong\u003e and will be supported only through bugfixes until \u003cstrong\u003eFebruary 28, 2021\u003c/strong\u003e. No new features, behavior changes or documentation adjustments will be accepted or applied to 2.x. It is recommended to migrate to \u003ca href=\"https://github.com/ReactiveX/RxJava/tree/3.x\"\u003e3.x\u003c/a\u003e within this time period.\u003c/p\u003e\n\u003ch4\u003eBugfixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxJava/commit/7980c85b18dd46ec2cd2cf49477363f1268d3a98\"\u003eCommit 7980c85b\u003c/a\u003e: Fix \u003ccode\u003eswitchMap\u003c/code\u003e not canceling properly during \u003ccode\u003eonNext\u003c/code\u003e-\u003ccode\u003ecancel\u003c/code\u003e races.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.2.18\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"http://search.maven.org/#artifactdetails%7Cio.reactivex.rxjava2%7Crxjava%7C2.2.18%7C\"\u003eMaven\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e:warning: The 2.x version line is now in \u003cstrong\u003emaintenance mode\u003c/strong\u003e and will be supported only through bugfixes until \u003cstrong\u003eFebruary 28, 2021\u003c/strong\u003e. No new features, behavior changes or documentation adjustments will be accepted or applied to 2.x. It is recommended to migrate to \u003ca href=\"https://github.com/ReactiveX/RxJava/tree/3.x\"\u003e3.x\u003c/a\u003e within this time period.\u003c/p\u003e\n\u003ch4\u003eBugfixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/pull/6894\"\u003ePull 6894\u003c/a\u003e: Fix \u003ccode\u003egroupBy\u003c/code\u003e not requesting more if a group is cancelled with buffered items.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.2.17\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"http://search.maven.org/#artifactdetails%7Cio.reactivex.rxjava2%7Crxjava%7C2.2.17%7C\"\u003eMaven\u003c/a\u003e\u003c/p\u003e\n\u003ch4\u003eBugfixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/pull/6827\"\u003ePull 6827\u003c/a\u003e: Fix \u003ccode\u003eFlowable.flatMap\u003c/code\u003e not canceling the inner sources on outer error.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ReactiveX/RxJava/blob/v2.2.21/CHANGES.md\"\u003eio.reactivex.rxjava2:rxjava's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eVersion 2.2.21 - February 10, 2021 (\u003ca href=\"http://search.maven.org/#artifactdetails%7Cio.reactivex.rxjava2%7Crxjava%7C2.2.21%7C\"\u003eMaven\u003c/a\u003e)\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"http://reactivex.io/RxJava/2.x/javadoc/2.2.21\"\u003eJavaDocs\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e:warning: This is the last planned update for the 2.x version line. After \u003cstrong\u003eFebruary 28, 2021\u003c/strong\u003e, 2.x becomes \u003cstrong\u003eEnd-of-Life\u003c/strong\u003e (EoL); no further patches, bugfixes, enhancements, documentation or support will be provided by the project.\u003c/p\u003e\n\u003ch4\u003eEnhancements\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a system parameter to allow scheduled worker release in the Io \u003ccode\u003eScheduler\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/7162\"\u003e#7162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a system parameter to allow \u003ccode\u003eScheduler\u003c/code\u003es to use \u003ccode\u003eSystem.nanoTime()\u003c/code\u003e for \u003ccode\u003enow()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/7170\"\u003e#7170\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eVersion 2.2.20 - October 6, 2020 (\u003ca href=\"http://search.maven.org/#artifactdetails%7Cio.reactivex.rxjava2%7Crxjava%7C2.2.20%7C\"\u003eMaven\u003c/a\u003e)\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"http://reactivex.io/RxJava/2.x/javadoc/2.2.20\"\u003eJavaDocs\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e:warning: The 2.x version line is now in \u003cstrong\u003emaintenance mode\u003c/strong\u003e and will be supported only through bugfixes until \u003cstrong\u003eFebruary 28, 2021\u003c/strong\u003e. No new features, behavior changes or documentation adjustments will be accepted or applied to 2.x. It is recommended to migrate to \u003ca href=\"https://github.com/ReactiveX/RxJava/tree/3.x\"\u003e3.x\u003c/a\u003e within this time period.\u003c/p\u003e\n\u003ch4\u003eBugfixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eObservable.flatMap\u003c/code\u003e with \u003ccode\u003emaxConcurrency\u003c/code\u003e hangs (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/6960\"\u003e#6960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eObservable.toFlowable(ERROR)\u003c/code\u003e not cancelling upon \u003ccode\u003eMissingBackpressureException\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/7084\"\u003e#7084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eFlowable.concatMap\u003c/code\u003e backpressure with scalars. (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/7091\"\u003e#7091\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eVersion 2.2.19 - March 14, 2020 (\u003ca href=\"http://search.maven.org/#artifactdetails%7Cio.reactivex.rxjava2%7Crxjava%7C2.2.19%7C\"\u003eMaven\u003c/a\u003e)\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"http://reactivex.io/RxJava/2.x/javadoc/2.2.19\"\u003eJavaDocs\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e:warning: The 2.x version line is now in \u003cstrong\u003emaintenance mode\u003c/strong\u003e and will be supported only through bugfixes until \u003cstrong\u003eFebruary 28, 2021\u003c/strong\u003e. No new features, behavior changes or documentation adjustments will be accepted or applied to 2.x. It is recommended to migrate to \u003ca href=\"https://github.com/ReactiveX/RxJava/tree/3.x\"\u003e3.x\u003c/a\u003e within this time period.\u003c/p\u003e\n\u003ch4\u003eBugfixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxJava/commit/7980c85b18dd46ec2cd2cf49477363f1268d3a98\"\u003eCommit 7980c85b\u003c/a\u003e: Fix \u003ccode\u003eswitchMap\u003c/code\u003e not canceling properly during \u003ccode\u003eonNext\u003c/code\u003e-\u003ccode\u003ecancel\u003c/code\u003e races.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eVersion 2.2.18 - February 21, 2020 (\u003ca href=\"http://search.maven.org/#artifactdetails%7Cio.reactivex.rxjava2%7Crxjava%7C2.2.18%7C\"\u003eMaven\u003c/a\u003e)\u003c/h3\u003e\n\u003cp\u003e:warning: The 2.x version line is now in \u003cstrong\u003emaintenance mode\u003c/strong\u003e and will be supported only through bugfixes until \u003cstrong\u003eFebruary 28, 2021\u003c/strong\u003e. No new features, behavior changes or documentation adjustments will be accepted or applied to 2.x. It is recommended to migrate to \u003ca href=\"https://github.com/ReactiveX/RxJava/tree/3.x\"\u003e3.x\u003c/a\u003e within this time period.\u003c/p\u003e\n\u003ch4\u003eBugfixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/pull/6894\"\u003ePull 6894\u003c/a\u003e: Fix \u003ccode\u003egroupBy\u003c/code\u003e not requesting more if a group is cancelled with buffered items.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eVersion 2.2.17 - January 12, 2020 (\u003ca href=\"http://search.maven.org/#artifactdetails%7Cio.reactivex.rxjava2%7Crxjava%7C2.2.17%7C\"\u003eMaven\u003c/a\u003e)\u003c/h3\u003e\n\u003ch4\u003eBugfixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/pull/6827\"\u003ePull 6827\u003c/a\u003e: Fix \u003ccode\u003eFlowable.flatMap\u003c/code\u003e not canceling the inner sources on outer error.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eVersion 2.2.16 - December 15, 2019 (\u003ca href=\"http://search.maven.org/#artifactdetails%7Cio.reactivex.rxjava2%7Crxjava%7C2.2.16%7C\"\u003eMaven\u003c/a\u003e)\u003c/h3\u003e\n\u003ch4\u003eBugfixes\u003c/h4\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxJava/commit/725ea89629568301ab7d9b21cafdf8c648a14da9\"\u003e\u003ccode\u003e725ea89\u003c/code\u003e\u003c/a\u003e Update CHANGES.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxJava/commit/776f0e55d97432799def8927c0e770154500686b\"\u003e\u003ccode\u003e776f0e5\u003c/code\u003e\u003c/a\u003e 2.x: Introduce property rx2.scheduler.use-nanotime (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/7154\"\u003e#7154\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/7170\"\u003e#7170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxJava/commit/f31aed36fd9d47edf0177164c54c64d4dc28c818\"\u003e\u003ccode\u003ef31aed3\u003c/code\u003e\u003c/a\u003e Support for scheduled release of threads in Io Scheduler (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/7162\"\u003e#7162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxJava/commit/947b05fb9d44de2231aa148ef2eb3a6edc07fcfd\"\u003e\u003ccode\u003e947b05f\u003c/code\u003e\u003c/a\u003e Release 2.2.20\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxJava/commit/3d6403be8d9ada65016762a6bec417e268f482e3\"\u003e\u003ccode\u003e3d6403b\u003c/code\u003e\u003c/a\u003e 2.x: Fix Flowable.concatMap backpressure w/ scalars (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/7091\"\u003e#7091\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxJava/commit/b13a45e161f37c927e99d8def5f156834a83befb\"\u003e\u003ccode\u003eb13a45e\u003c/code\u003e\u003c/a\u003e 2.x: Fix toFlowable(ERROR) not cancelling upon MBE (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/7084\"\u003e#7084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxJava/commit/2cb20bd41efe70556ef7d346ee60f70e20548bae\"\u003e\u003ccode\u003e2cb20bd\u003c/code\u003e\u003c/a\u003e 2.x: Fix Observable.flatMap with maxConcurrency hangs (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/6947\"\u003e#6947\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/6960\"\u003e#6960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxJava/commit/7ca43c7398810ee87c57f7f2165104822c0a4662\"\u003e\u003ccode\u003e7ca43c7\u003c/code\u003e\u003c/a\u003e Update CHANGES.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxJava/commit/7980c85b18dd46ec2cd2cf49477363f1268d3a98\"\u003e\u003ccode\u003e7980c85\u003c/code\u003e\u003c/a\u003e 2.x: Fix switchMap not canceling properly during onNext-cancel races\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxJava/commit/e2b7816f2bcf89491cad68cb35a9e36368a29d97\"\u003e\u003ccode\u003ee2b7816\u003c/code\u003e\u003c/a\u003e Release 2.2.18\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ReactiveX/RxJava/compare/v2.2.10...v2.2.21\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.reactivex.rxjava2:rxkotlin` from 2.3.0 to 2.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ReactiveX/RxKotlin/releases\"\u003eio.reactivex.rxjava2:rxkotlin's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRxKotlin 2.4.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin updated to 1.3.40\u003c/li\u003e\n\u003cli\u003eRxJava updated to 2.2.10\u003c/li\u003e\n\u003cli\u003eMigrated to Gradle 5.4.1 and Gradle Kotlin DSL\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRxKotlin 2.4.0-beta.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin updated to 1.3.40\u003c/li\u003e\n\u003cli\u003eRxJava updated to 2.2.10\u003c/li\u003e\n\u003cli\u003eMigrated to Gradle 5.4.1 and Gradle Kotlin DSL\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxKotlin/commit/7a21c3e66e726e7970917e96163581d7b8f267e0\"\u003e\u003ccode\u003e7a21c3e\u003c/code\u003e\u003c/a\u003e prepare version 2.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxKotlin/commit/f14889222a1026d8048a2ded3f70dbe3031c9dd6\"\u003e\u003ccode\u003ef148892\u003c/code\u003e\u003c/a\u003e handle compiler warnings in tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxKotlin/commit/b35000f7674308fa3de119921d5481168a06d66a\"\u003e\u003ccode\u003eb35000f\u003c/code\u003e\u003c/a\u003e specify function return types explicitly; break long functions into multiple ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxKotlin/commit/9c2893771ed53363b816505858352f6a5e6aac67\"\u003e\u003ccode\u003e9c28937\u003c/code\u003e\u003c/a\u003e change rxjava dependency from implementation to api\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxKotlin/commit/b383b81c938de3bde3b5a37f04454020a1be040b\"\u003e\u003ccode\u003eb383b81\u003c/code\u003e\u003c/a\u003e Prepare 2.4.0-beta.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxKotlin/commit/f79973a4800ecd8b1376309c6bfe3b72218212f8\"\u003e\u003ccode\u003ef79973a\u003c/code\u003e\u003c/a\u003e Update publication pom\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxKotlin/commit/704a97bdde83fade127e6a599df9856ec884e8c4\"\u003e\u003ccode\u003e704a97b\u003c/code\u003e\u003c/a\u003e Prepare 2.4.0-beta release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxKotlin/commit/acff6f4ec42b776a9c0319c1a3d902f60a138477\"\u003e\u003ccode\u003eacff6f4\u003c/code\u003e\u003c/a\u003e Update readme files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxKotlin/commit/92df626e310f2933519f1d1fa6d742fb32b15b14\"\u003e\u003ccode\u003e92df626\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ReactiveX/RxKotlin/issues/218\"\u003e#218\u003c/a\u003e from ReactiveX/2.x-migr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxKotlin/commit/c6c1133ea9195ce9bf08de131683d6e66260ddec\"\u003e\u003ccode\u003ec6c1133\u003c/code\u003e\u003c/a\u003e Minor publishing changes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ReactiveX/RxKotlin/compare/2.3.0...2.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.recyclerview:recyclerview` from 1.2.1 to 1.4.0\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm` from 1.6.1 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-core-jvm's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-core-jvm's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874\"\u003e\u003ccode\u003e8564f65\u003c/code\u003e\u003c/a\u003e Version 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c\"\u003e\u003ccode\u003ea4c6af9\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9\"\u003e\u003ccode\u003eef917b4\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd\"\u003e\u003ccode\u003e5ebc421\u003c/code\u003e\u003c/a\u003e Update the release procedure description (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80\"\u003e\u003ccode\u003e95f46a0\u003c/code\u003e\u003c/a\u003e Remove old maven repository settings (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672\"\u003e#4672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc\"\u003e\u003ccode\u003eb4f4f0a\u003c/code\u003e\u003c/a\u003e Fix package name of \u003ccode\u003eToMapCollectionSamplesTest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674\"\u003e#4674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/86738dca7dc9ac82249abc8206263fa0065ee631\"\u003e\u003ccode\u003e86738dc\u003c/code\u003e\u003c/a\u003e Added templates to the issue creation wizard (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/330fcc221fb583f0b119f34191f735a73b827378\"\u003e\u003ccode\u003e330fcc2\u003c/code\u003e\u003c/a\u003e Version 1.11.0-rc02\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/e31cef6e9f2d26794be7d75ecbf3033b6432d582\"\u003e\u003ccode\u003ee31cef6\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/dc6e9f61eaf3a67f4bf474a7987aedc3f16cef37\"\u003e\u003ccode\u003edc6e9f6\u003c/code\u003e\u003c/a\u003e Restore Promise-related functions on Wasm/JS as HIDDEN (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/compare/1.6.1...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.amazonaws:aws-android-sdk-core` from 2.43.0 to 2.81.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aws/aws-sdk-android/releases\"\u003ecom.amazonaws:aws-android-sdk-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eAWS SDK for Android 2.81.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate native libraries with 16KB page alignment support (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3677\"\u003e#3677\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMaintenance Mode Announcement (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3675\"\u003e#3675\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate rexml to 3.4.2 to resolve dependabot alert (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAWS SDK for Android 2.81.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for setting query parameters for the tokens endpoint (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3669\"\u003e#3669\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove special characters before calling xargs in notify comment (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3661\"\u003e#3661\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAWS SDK for Android 2.80.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for ap-east-2 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3665\"\u003e#3665\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate release_pr.yml (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3667\"\u003e#3667\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAWS SDK for Android 2.79.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for mx-central-1 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3656\"\u003e#3656\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAWS SDK for Android 2.78.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for ap-southeast-7 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3654\"\u003e#3654\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAWS SDK for Android 2.77.1\u003c/h2\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate rexml (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3632\"\u003e#3632\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate License to Apache 2.0 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/pull/3634\"\u003e#3634\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAWS SDK for Android 2.77.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esupport for ap-southeast-5 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3629\"\u003e#3629\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate rexml (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3623\"\u003e#3623\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate docs links for gen2 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3622\"\u003e#3622\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Conscrypt to support 16KB page size (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3627\"\u003e#3627\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake exception within UserStateDetails public (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3628\"\u003e#3628\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAWS SDK for Android 2.76.1\u003c/h2\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSet the ForegroundServiceType for TransferService (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3620\"\u003e#3620\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKVS - Add Support for More Resolution Widths (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3609\"\u003e#3609\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/blob/main/CHANGELOG.md\"\u003ecom.amazonaws:aws-android-sdk-core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/releases/tag/release_v2.81.1\"\u003eRelease 2.81.1\u003c/a\u003e\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate native libraries with 16KB page alignment support (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3677\"\u003e#3677\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMaintenance Mode Announcement (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3675\"\u003e#3675\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate rexml to 3.4.2 to resolve dependabot alert (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/compare/release_v2.81.0...release_v2.81.1\"\u003eSee all changes between 2.81.0 and 2.81.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/releases/tag/release_v2.81.0\"\u003eRelease 2.81.0\u003c/a\u003e\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for setting query parameters for the tokens endpoint (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3669\"\u003e#3669\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove special characters before calling xargs in notify comment (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3661\"\u003e#3661\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/compare/release_v2.80.0...release_v2.81.0\"\u003eSee all changes between 2.80.0 and 2.81.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/releases/tag/release_v2.80.0\"\u003eRelease 2.80.0\u003c/a\u003e\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for ap-east-2 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3665\"\u003e#3665\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate release_pr.yml (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3667\"\u003e#3667\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/compare/release_v2.79.0...release_v2.80.0\"\u003eSee all changes between 2.79.0 and 2.80.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/releases/tag/release_v2.79.0\"\u003eRelease 2.79.0\u003c/a\u003e\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for mx-central-1 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3656\"\u003e#3656\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/compare/release_v2.78.0...release_v2.79.0\"\u003eSee all changes between 2.78.0 and 2.79.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/releases/tag/release_v2.78.0\"\u003eRelease 2.78.0\u003c/a\u003e\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for ap-southeast-7 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3654\"\u003e#3654\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/compare/release_v2.77.1...release_v2.78.0\"\u003eSee all changes between 2.77.1 and 2.78.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/releases/tag/release_v2.77.1\"\u003eRelease 2.77.1\u003c/a\u003e\u003c/h2\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate rexml (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3632\"\u003e#3632\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate License to Apache 2.0 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/pull/3634\"\u003e#3634\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/fabdb0623cb31b3b9a2ad7a6c5797ec3dc5c1edb\"\u003e\u003ccode\u003efabdb06\u003c/code\u003e\u003c/a\u003e release: AWS SDK for Android 2.81.1 (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3678\"\u003e#3678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/979d48837686a2f28ff3d99c0f88130ea1a2e9e9\"\u003e\u003ccode\u003e979d488\u003c/code\u003e\u003c/a\u003e fix: Update native libraries with 16KB page alignment support (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3677\"\u003e#3677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/99c4f87bd5193bdc609622d875a5c9d518e79417\"\u003e\u003ccode\u003e99c4f87\u003c/code\u003e\u003c/a\u003e Update rexml to 3.4.2 to resolve dependabot alert (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/5db7cfd67c1cf898eb85b0a4636ee490bdbb5e4e\"\u003e\u003ccode\u003e5db7cfd\u003c/code\u003e\u003c/a\u003e Maintenance Mode Announcement (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3675\"\u003e#3675\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/860556c52bf5f3791a97049e6ed24d2d70d8f129\"\u003e\u003ccode\u003e860556c\u003c/code\u003e\u003c/a\u003e release: AWS SDK for Android 2.81.0 (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3670\"\u003e#3670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/f76af9aeb58bd48a3489dc0d849f92a8de4689d1\"\u003e\u003ccode\u003ef76af9a\u003c/code\u003e\u003c/a\u003e Remove support for setting query parameters for the tokens endpoint (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3669\"\u003e#3669\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/4a6b0b36aa6ae4f5dfa76b047fa3f15d4b160567\"\u003e\u003ccode\u003e4a6b0b3\u003c/code\u003e\u003c/a\u003e Remove special characters before calling xargs in notify comment (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3661\"\u003e#3661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/a3cd44261211abca68cd093ca2a5b8fa34e1acea\"\u003e\u003ccode\u003ea3cd442\u003c/code\u003e\u003c/a\u003e release: AWS SDK for Android 2.80.0 (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3668\"\u003e#3668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/4f891374dc439e5eba4dee0ff5cd9d7a20a19a1a\"\u003e\u003ccode\u003e4f89137\u003c/code\u003e\u003c/a\u003e Update release_pr.yml (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3667\"\u003e#3667\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/4b8b0a04fedfb92060bb7f9171dcf81076877a08\"\u003e\u003ccode\u003e4b8b0a0\u003c/code\u003e\u003c/a\u003e feat: Support for ap-east-2 (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3665\"\u003e#3665\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aws/aws-sdk-android/compare/release_v2.43.0...release_v2.81.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.amazonaws:aws-android-sdk-iot` from 2.43.0 to 2.81.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aws/aws-sdk-android/releases\"\u003ecom.amazonaws:aws-android-sdk-iot's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eAWS SDK for Android 2.81.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate native libraries with 16KB page alignment support (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3677\"\u003e#3677\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMaintenance Mode Announcement (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3675\"\u003e#3675\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate rexml to 3.4.2 to resolve dependabot alert (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAWS SDK for Android 2.81.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for setting query parameters for the tokens endpoint (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3669\"\u003e#3669\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove special characters before calling xargs in notify comment (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3661\"\u003e#3661\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAWS SDK for Android 2.80.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for ap-east-2 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3665\"\u003e#3665\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate release_pr.yml (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3667\"\u003e#3667\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAWS SDK for Android 2.79.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for mx-central-1 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3656\"\u003e#3656\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAWS SDK for Android 2.78.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for ap-southeast-7 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3654\"\u003e#3654\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAWS SDK for Android 2.77.1\u003c/h2\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate rexml (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3632\"\u003e#3632\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate License to Apache 2.0 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/pull/3634\"\u003e#3634\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAWS SDK for Android 2.77.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esupport for ap-southeast-5 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3629\"\u003e#3629\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate rexml (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3623\"\u003e#3623\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate docs links for gen2 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3622\"\u003e#3622\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Conscrypt to support 16KB page size (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3627\"\u003e#3627\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake exception within UserStateDetails public (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3628\"\u003e#3628\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAWS SDK for Android 2.76.1\u003c/h2\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSet the ForegroundServiceType for TransferService (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3620\"\u003e#3620\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKVS - Add Support for More Resolution Widths (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3609\"\u003e#3609\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/blob/main/CHANGELOG.md\"\u003ecom.amazonaws:aws-android-sdk-iot's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/releases/tag/release_v2.81.1\"\u003eRelease 2.81.1\u003c/a\u003e\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate native libraries with 16KB page alignment support (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3677\"\u003e#3677\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMaintenance Mode Announcement (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3675\"\u003e#3675\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate rexml to 3.4.2 to resolve dependabot alert (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/compare/release_v2.81.0...release_v2.81.1\"\u003eSee all changes between 2.81.0 and 2.81.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/releases/tag/release_v2.81.0\"\u003eRelease 2.81.0\u003c/a\u003e\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for setting query parameters for the tokens endpoint (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3669\"\u003e#3669\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove special characters before calling xargs in notify comment (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3661\"\u003e#3661\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/compare/release_v2.80.0...release_v2.81.0\"\u003eSee all changes between 2.80.0 and 2.81.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/releases/tag/release_v2.80.0\"\u003eRelease 2.80.0\u003c/a\u003e\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for ap-east-2 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3665\"\u003e#3665\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate release_pr.yml (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3667\"\u003e#3667\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/compare/release_v2.79.0...release_v2.80.0\"\u003eSee all changes between 2.79.0 and 2.80.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/releases/tag/release_v2.79.0\"\u003eRelease 2.79.0\u003c/a\u003e\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for mx-central-1 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3656\"\u003e#3656\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/compare/release_v2.78.0...release_v2.79.0\"\u003eSee all changes between 2.78.0 and 2.79.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/releases/tag/release_v2.78.0\"\u003eRelease 2.78.0\u003c/a\u003e\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for ap-southeast-7 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3654\"\u003e#3654\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/compare/release_v2.77.1...release_v2.78.0\"\u003eSee all changes between 2.77.1 and 2.78.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/releases/tag/release_v2.77.1\"\u003eRelease 2.77.1\u003c/a\u003e\u003c/h2\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate rexml (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3632\"\u003e#3632\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate License to Apache 2.0 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/pull/3634\"\u003e#3634\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/fabdb0623cb31b3b9a2ad7a6c5797ec3dc5c1edb\"\u003e\u003ccode\u003efabdb06\u003c/code\u003e\u003c/a\u003e release: AWS SDK for Android 2.81.1 (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3678\"\u003e#3678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/979d48837686a2f28ff3d99c0f88130ea1a2e9e9\"\u003e\u003ccode\u003e979d488\u003c/code\u003e\u003c/a\u003e fix: Update native libraries with 16KB page alignment support (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3677\"\u003e#3677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/99c4f87bd5193bdc609622d875a5c9d518e79417\"\u003e\u003ccode\u003e99c4f87\u003c/code\u003e\u003c/a\u003e Update rexml to 3.4.2 to resolve dependabot alert (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/5db7cfd67c1cf898eb85b0a4636ee490bdbb5e4e\"\u003e\u003ccode\u003e5db7cfd\u003c/code\u003e\u003c/a\u003e Maintenance Mode Announcement (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3675\"\u003e#3675\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/860556c52bf5f3791a97049e6ed24d2d70d8f129\"\u003e\u003ccode\u003e860556c\u003c/code\u003e\u003c/a\u003e release: AWS SDK for Android 2.81.0 (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3670\"\u003e#3670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/f76af9aeb58bd48a3489dc0d849f92a8de4689d1\"\u003e\u003ccode\u003ef76af9a\u003c/code\u003e\u003c/a\u003e Remove support for setting query parameters for the tokens endpoint (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3669\"\u003e#3669\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/4a6b0b36aa6ae4f5dfa76b047fa3f15d4b160567\"\u003e\u003ccode\u003e4a6b0b3\u003c/code\u003e\u003c/a\u003e Remove special characters before calling xargs in notify comment (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3661\"\u003e#3661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/a3cd44261211abca68cd093ca2a5b8fa34e1acea\"\u003e\u003ccode\u003ea3cd442\u003c/code\u003e\u003c/a\u003e release: AWS SDK for Android 2.80.0 (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3668\"\u003e#3668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/4f891374dc439e5eba4dee0ff5cd9d7a20a19a1a\"\u003e\u003ccode\u003e4f89137\u003c/code\u003e\u003c/a\u003e Update release_pr.yml (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3667\"\u003e#3667\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/4b8b0a04fedfb92060bb7f9171dcf81076877a08\"\u003e\u003ccode\u003e4b8b0a0\u003c/code\u003e\u003c/a\u003e feat: Support for ap-east-2 (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3665\"\u003e#3665\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aws/aws-sdk-android/compare/release_v2.43.0...release_v2.81.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.code.gson:gson` from 2.9.0 to 2.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/gson/releases\"\u003ecom.google.code.gson:gson's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eGson 2.14.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type adapters for \u003ccode\u003ejava.time\u003c/code\u003e classes by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2948\"\u003egoogle/gson#2948\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWhen the \u003ccode\u003ejava.time\u003c/code\u003e API is available, Gson automatically can read and write instances of classes like \u003ccode\u003eInstant\u003c/code\u003e and \u003ccode\u003eDuration\u003c/code\u003e. The format it uses essentially freezes the JSON representation that \u003ccode\u003eReflectiveTypeAdapterFactory\u003c/code\u003e established by default, based on the private fields of \u003ccode\u003ejava.time\u003c/code\u003e classes. That's not a great representation, but it is understandable. Changing it to anything else would break compatibility with systems that are expecting the current format.\u003c/p\u003e\n\u003cp\u003eWith this change, Gson no longer tries to access private fields of these classes using reflection. So it is no longer necessary to run with \u003ccode\u003e--add-opens\u003c/code\u003e for these classes on recent JDKs.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003ecom.google.gson.graph\u003c/code\u003e by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2990\"\u003egoogle/gson#2990\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis package was not part of any released artifact and depended on Gson internals in potentially problematic ways.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eValidate that strings being parsed as integers consist of ASCII characters by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2995\"\u003egoogle/gson#2995\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003ePreviously, strings could contain non-ASCII Unicode digits and still be parsed as integers. That's inconsistent with how JSON numbers are treated.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix duplicate key detection when first value is null by \u003ca href=\"https://github.com/andrewstellman\"\u003e\u003ccode\u003e@​andrewstellman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/3006\"\u003egoogle/gson#3006\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis could potentially break code that was relying on the incorrect behaviour. For example, this JSON string was previously accepted but will no longer be: \u003ccode\u003e{\u0026quot;foo\u0026quot;: null, \u0026quot;foo\u0026quot;: bar}\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003eSerializable\u003c/code\u003e from internal \u003ccode\u003eType\u003c/code\u003e implementation classes. by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/3011\"\u003egoogle/gson#3011\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe nested classes \u003ccode\u003eParameterizedTypeImpl\u003c/code\u003e, \u003ccode\u003eGenericArrayTypeImpl\u003c/code\u003e, and \u003ccode\u003eWildcardTypeImpl\u003c/code\u003e in \u003ccode\u003eGsonTypes\u003c/code\u003e are implementations of the corresponding types (without \u003ccode\u003eImpl\u003c/code\u003e) in \u003ccode\u003ejava.lang.reflect\u003c/code\u003e. For some reason, they were serializable, even though the \u003ccode\u003ejava.lang.reflect\u003c/code\u003e implementations are not. Having unnecessarily serializable classes could \u003cem\u003econceivably\u003c/em\u003e have been a security problem if they were part of a larger exploit using serialization. (We do not consider this a likely scenario and do not suggest that you need to update Gson just to get this change.)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eLegacyProtoTypeAdapterFactory\u003c/code\u003e. by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/3014\"\u003egoogle/gson#3014\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is not part of any released artifact, but may be of use when trying to fix code that is currently accessing the internals of protobuf classes via reflection.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake AppendableWriter do flush and close if delegation object supports by \u003ca href=\"https://github.com/MukjepScarlet\"\u003e\u003ccode\u003e@​MukjepScarlet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2925\"\u003egoogle/gson#2925\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther less visible changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd default capacity to EnumTypeAdapter maps by \u003ca href=\"https://github.com/MukjepScarlet\"\u003e\u003ccode\u003e@​MukjepScarlet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2959\"\u003egoogle/gson#2959\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: move derived adapters from Gson to TypeAdapters by \u003ca href=\"https://github.com/MukjepScarlet\"\u003e\u003ccode\u003e@​MukjepScarlet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2951\"\u003egoogle/gson#2951\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOptimize \u003ccode\u003enew Gson()\u003c/code\u003e by \u003ca href=\"https://github.com/MukjepScarlet\"\u003e\u003ccode\u003e@​MukjepScarlet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2864\"\u003egoogle/gson#2864\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ThirdGoddess\"\u003e\u003ccode\u003e@​ThirdGoddess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/google/gson/pull/2944\"\u003egoogle/gson#2944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lmj798\"\u003e\u003ccode\u003e@​lmj798\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/google/gson/pull/2988\"\u003egoogle/gson#2988\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Eng-YasminKotb\"\u003e\u003ccode\u003e@​Eng-YasminKotb\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/google/gson/pull/3005\"\u003egoogle/gson#3005\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/andrewstellman\"\u003e\u003ccode\u003e@​andrewstellman\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/google/gson/pull/3006\"\u003egoogle/gson#3006\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/gson/compare/gson-parent-2.13.2...gson-parent-2.14.0\"\u003ehttps://github.com/google/gson/compare/gson-parent-2.13.2...gson-parent-2.14.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eGson 2.13.2\u003c/h2\u003e\n\u003cp\u003eThe main changes in this release are just newer dependencies.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/gson/blob/main/CHANGELOG.md\"\u003ecom.google.code.gson:gson's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChange Log\u003c/h1\u003e\n\u003cp\u003eThe change log for versions newer than 2.10 is available only on the \u003ca href=\"https://github.com/google/gson/releases\"\u003eGitHub Releases page\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eVersion 2.10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for serializing and deserializing Java records, on Java ≥ 16. (\u003ca href=\"https://redirect.github.com/google/gson/pull/2201\"\u003egoogle/gson#2201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eJsonArray.asList\u003c/code\u003e and \u003ccode\u003eJsonObject.asMap\u003c/code\u003e view methods (\u003ca href=\"https://redirect.github.com/google/gson/pull/2225\"\u003egoogle/gson#2225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeAdapterRuntimeTypeWrapper\u003c/code\u003e not detecting reflective \u003ccode\u003eTreeTypeAdapter\u003c/code\u003e and \u003ccode\u003eFutureTypeAdapter\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/gson/pull/1787\"\u003egoogle/gson#1787\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003eJsonReader.skipValue()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/gson/pull/2062\"\u003egoogle/gson#2062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePerform numeric conversion for primitive numeric type adapters (\u003ca href=\"https://redirect.github.com/google/gson/pull/2158\"\u003egoogle/gson#2158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eGson.fromJson(..., TypeToken)\u003c/code\u003e overloads (\u003ca href=\"https://redirect.github.com/google/gson/pull/1700\"\u003egoogle/gson#1700\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix changes to \u003ccode\u003eGsonBuilder\u003c/code\u003e affecting existing \u003ccode\u003eGson\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/google/gson/pull/1815\"\u003egoogle/gson#1815\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eJsonElement\u003c/code\u003e conversion methods more consistent and fix javadoc (\u003ca href=\"https://redirect.github.com/google/gson/pull/2178\"\u003egoogle/gson#2178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eThrow \u003ccode\u003eUnsupportedOperationException\u003c/code\u003e when \u003ccode\u003eJsonWriter.jsonValue\u003c/code\u003e is not supported (\u003ca href=\"https://redirect.github.com/google/gson/pull/1651\"\u003egoogle/gson#1651\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisallow \u003ccode\u003eJsonObject\u003c/code\u003e \u003ccode\u003eEntry.setValue(null)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/gson/pull/2167\"\u003egoogle/gson#2167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeAdapter.toJson\u003c/code\u003e throwing AssertionError for custom IOException (\u003ca href=\"https://redirect.github.com/google/gson/pull/2172\"\u003egoogle/gson#2172\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eConvert null to JsonNull for \u003ccode\u003eJsonArray.set\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/gson/pull/2170\"\u003egoogle/gson#2170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed nullSafe usage. (\u003ca href=\"https://redirect.github.com/google/gson/pull/1555\"\u003egoogle/gson#1555\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eValidate \u003ccode\u003eTypeToken.getParameterized\u003c/code\u003e arguments (\u003ca href=\"https://redirect.github.com/google/gson/pull/2166\"\u003egoogle/gson#2166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/google/gson/issues/1702\"\u003e#1702\u003c/a\u003e: Gson.toJson creates CharSequence which does not implement toString (\u003ca href=\"https://redirect.github.com/google/gson/pull/1703\"\u003egoogle/gson#1703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrefer existing adapter for concurrent \u003ccode\u003eGson.getAdapter\u003c/code\u003e calls (\u003ca href=\"https://redirect.github.com/google/gson/pull/2153\"\u003egoogle/gson#2153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003eArrayTypeAdapter\u003c/code\u003e for \u003ccode\u003eObject[]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/gson/pull/1716\"\u003egoogle/gson#1716\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003eAppendableWriter\u003c/code\u003e performance (\u003ca href=\"https://redirect.github.com/google/gson/pull/1706\"\u003egoogle/gson#1706\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.9.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003eObject\u003c/code\u003e and \u003ccode\u003eJsonElement\u003c/code\u003e deserialization iterative rather than\nrecursive (\u003ca href=\"https://redirect.github.com/google/gson/pull/1912\"\u003egoogle/gson#1912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded parsing support for enum that has overridden toString() method (\u003ca href=\"https://redirect.github.com/google/gson/pull/1950\"\u003egoogle/gson#1950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved support for building Gson with Gradle (\u003ca href=\"https://redirect.github.com/google/gson/pull/2081\"\u003egoogle/gson#2081\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved obsolete \u003ccode\u003ecodegen\u003c/code\u003e hierarchy (\u003ca href=\"https://redirect.github.com/google/gson/pull/2099\"\u003egoogle/gson#2099\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for reflection access filter (\u003ca href=\"https://redirect.github.com/google/gson/pull/1905\"\u003egoogle/gson#1905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003eTypeToken\u003c/code\u003e creation validation (\u003ca href=\"https://redirect.github.com/google/gson/pull/2072\"\u003egoogle/gson#2072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd explicit support for \u003ccode\u003efloat\u003c/code\u003e in \u003ccode\u003eJsonWriter\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/gson/pull/2130\"\u003egoogle/gson#2130\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/gson/pull/2132\"\u003egoogle/gson#2132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFail when parsing invalid local date (\u003ca href=\"https://redirect.github.com/google/gson/pull/2134\"\u003egoogle/gson#2134\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAlso many small improvements to javadoc.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/3ff35d6269894901ab8006258395aafc4b9765cd\"\u003e\u003ccode\u003e3ff35d6\u003c/code\u003e\u003c/a\u003e [maven-release-plugin] prepare release gson-parent-2.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/a3024fde2a5c12b9a9a0b6b914ae4899aa574d81\"\u003e\u003ccode\u003ea3024fd\u003c/code\u003e\u003c/a\u003e Bump the maven group with 13 updates (\u003ca href=\"https://redirect.github.com/google/gson/issues/3002\"\u003e#3002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/5689ffe44952ca6ed44c595886b9043286311b23\"\u003e\u003ccode\u003e5689ffe\u003c/code\u003e\u003c/a\u003e Bump the github-actions group across 1 directory with 3 updates (\u003ca href=\"https://redirect.github.com/google/gson/issues/3018\"\u003e#3018\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/48db33cbf93af6b2f5b117dfdfd826de47f7229c\"\u003e\u003ccode\u003e48db33c\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eLegacyProtoTypeAdapterFactory\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/google/gson/issues/3014\"\u003e#3014\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/53d703ee76ca3e951fa4a727307c1f28dbcaf3aa\"\u003e\u003ccode\u003e53d703e\u003c/code\u003e\u003c/a\u003e Update outdated comment regarding serializable types (\u003ca href=\"https://redirect.github.com/google/gson/issues/3012\"\u003e#3012\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/0189b727761f31596d1a27b7c60b42478dc9f331\"\u003e\u003ccode\u003e0189b72\u003c/code\u003e\u003c/a\u003e Remove \u003ccode\u003eSerializable\u003c/code\u003e from internal \u003ccode\u003eType\u003c/code\u003e implementation classes. (\u003ca href=\"https://redirect.github.com/google/gson/issues/3011\"\u003e#3011\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/f4d371d29c04066dbe7fdb31f642831f9c7f40cd\"\u003e\u003ccode\u003ef4d371d\u003c/code\u003e\u003c/a\u003e Fix duplicate key detection when first value is null (\u003ca href=\"https://redirect.github.com/google/gson/issues/3006\"\u003e#3006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/27d9ba1eeeeb156540cf5397504a4f9f256e911f\"\u003e\u003ccode\u003e27d9ba1\u003c/code\u003e\u003c/a\u003e Fix typo in README (JPMS dependencies section) (\u003ca href=\"https://redirect.github.com/google/gson/issues/3005\"\u003e#3005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/1fa9b7a0a994b006b3be00e2df9de778e71e6807\"\u003e\u003ccode\u003e1fa9b7a\u003c/code\u003e\u003c/a\u003e Validate that strings being parsed as integers consist of ASCII characters (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/b7d59549188867deb42e46073fb38735a5beda1c\"\u003e\u003ccode\u003eb7d5954\u003c/code\u003e\u003c/a\u003e Add iterator fail-fast tests for LinkedTreeMap.clear() (\u003ca href=\"https://redirect.github.com/google/gson/issues/2992\"\u003e#2992\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/gson/compare/gson-parent-2.9.0...gson-parent-2.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.room:room-ktx` from 2.5.2 to 2.8.4\n\nUpdates `androidx.room:room-rxjava2` from 2.5.2 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.5.2 to 2.8.4\n\nUpdates `androidx.room:room-rxjava2` from 2.5.2 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.5.2 to 2.8.4\n\nUpdates `org.jetbrains.kotlinx:kotlinx-serialization-json` from 1.3.1 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-serialization-json's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.20 and provides a new Json exceptions API and some bugfixes and improvements.\u003c/p\u003e\n\u003ch2\u003eExpose Json exceptions structure\u003c/h2\u003e\n\u003cp\u003eTo make working with exceptions easier and providing proper error codes in e.g., R...\n\n_Description has been truncated_","html_url":"https://github.com/dlrgsbz/beachist/pull/432","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/dlrgsbz%2Fbeachist/issues/432","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/432/packages"},{"uuid":"5284417555","node_id":"PR_kwDOTKxwZ88AAAABBaf2Jw","number":6,"state":"closed","title":"Bump the dependencies group with 97 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-09-12T03:25:45.000Z","author_association":null,"state_reason":null,"created_at":"2026-08-29T03:53:02.000Z","updated_at":"2026-09-12T03:25:47.000Z","time_to_close":1207963,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"dependencies","update_count":97,"packages":[{"name":"gradle-wrapper","old_version":"8.14.2","new_version":"9.7.1","repository_url":"https://github.com/gradle/gradle"},{"name":"com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin","old_version":"2.2.0-2.0.2","new_version":"2.3.11","repository_url":"https://github.com/google/ksp"},{"name":"com.google.devtools.ksp","old_version":"2.2.0-2.0.2","new_version":"2.3.11","repository_url":"https://github.com/google/ksp"},{"name":"org.jetbrains.kotlin:kotlin-gradle-plugin","old_version":"2.2.0","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin:kotlin-annotation-processing-embeddable","old_version":"2.2.0","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin:kotlin-compiler-embeddable","old_version":"2.2.0","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin:kotlin-reflect","old_version":"2.2.0","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin:kotlin-stdlib-jdk8","old_version":"2.2.0","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin:kotlin-serialization","old_version":"2.2.0","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin:compose-compiler-gradle-plugin","old_version":"2.2.0","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin:kotlin-test","old_version":"2.2.0","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.android","old_version":"2.2.0","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.2.0","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.2.0","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-android","old_version":"1.10.2","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-play-services","old_version":"1.10.2","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-test","old_version":"1.10.2","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-swing","old_version":"1.10.2","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"org.jetbrains.kotlinx:kotlinx-serialization-json","old_version":"1.9.0","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.serialization"},{"name":"org.jetbrains.kotlinx:kotlinx-collections-immutable","old_version":"0.4.0","new_version":"0.5.1","repository_url":"https://github.com/Kotlin/kotlinx.collections.immutable"},{"name":"org.jetbrains.kotlinx:kotlinx-datetime","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/Kotlin/kotlinx-datetime"},{"name":"com.google.protobuf:protobuf-gradle-plugin","old_version":"0.9.5","new_version":"0.10.0","repository_url":"https://github.com/google/protobuf-gradle-plugin"},{"name":"com.google.protobuf","old_version":"0.9.5","new_version":"0.10.0"},{"name":"com.braisgabin.detekt:kotlin-compiler-wrapper","old_version":"0.0.4","new_version":"0.1.0","repository_url":"https://github.com/BraisGabin/detekt-compiler-rules"},{"name":"io.nlopez.compose.rules:detekt","old_version":"0.4.22","new_version":"0.6.4","repository_url":"https://github.com/mrmans0n/compose-rules"},{"name":"uk.kulikov.detekt.decompose:decompose-detekt-rules","old_version":"1.0.1","new_version":"2.0.0","repository_url":"https://github.com/LionZXY/detekt-decompose-rule"},{"name":"androidx.core:core-splashscreen","old_version":"1.1.0-rc01","new_version":"1.2.0"},{"name":"com.google.android.material:material","old_version":"1.12.0","new_version":"1.14.0","repository_url":"https://github.com/material-components/material-components-android"},{"name":"com.google.android.horologist:horologist-compose-layout","old_version":"0.6.23","new_version":"0.7.15","repository_url":"https://github.com/google/horologist"},{"name":"tech.annexflow.compose:constraintlayout-compose-multiplatform","old_version":"0.6.0","new_version":"0.8.2","repository_url":"https://github.com/Lavmee/constraintlayout-compose-multiplatform"},{"name":"androidx.paging:paging-compose","old_version":"3.3.6","new_version":"3.5.1"},{"name":"org.jetbrains.compose:compose-gradle-plugin","old_version":"1.8.2","new_version":"1.12.0","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"io.coil-kt.coil3:coil","old_version":"3.2.0","new_version":"3.5.0","repository_url":"https://github.com/coil-kt/coil"},{"name":"io.coil-kt.coil3:coil-compose","old_version":"3.2.0","new_version":"3.5.0","repository_url":"https://github.com/coil-kt/coil"},{"name":"io.coil-kt.coil3:coil-svg","old_version":"3.2.0","new_version":"3.5.0","repository_url":"https://github.com/coil-kt/coil"},{"name":"io.coil-kt.coil3:coil-network-ktor3","old_version":"3.2.0","new_version":"3.5.0","repository_url":"https://github.com/coil-kt/coil"},{"name":"com.vladsch.flexmark:flexmark","old_version":"0.42.14","new_version":"0.64.8","repository_url":"https://github.com/vsch/flexmark-java"},{"name":"com.mikepenz:multiplatform-markdown-renderer","old_version":"0.35.0","new_version":"0.44.0","repository_url":"https://github.com/mikepenz/multiplatform-markdown-renderer"},{"name":"androidx.room:room-runtime","old_version":"2.7.2","new_version":"2.8.4"},{"name":"androidx.room:room-compiler","old_version":"2.7.2","new_version":"2.8.4"},{"name":"androidx.room:room-ktx","old_version":"2.7.2","new_version":"2.8.4"},{"name":"com.google.dagger:dagger","old_version":"2.56.2","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"com.google.dagger:dagger-compiler","old_version":"2.56.2","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"me.gulya.anvil:annotations","old_version":"0.3.0-beta03","new_version":"0.4.0","repository_url":"https://github.com/IlyaGulya/anvil-utils"},{"name":"me.gulya.anvil:compiler","old_version":"0.3.0-beta03","new_version":"0.4.0","repository_url":"https://github.com/IlyaGulya/anvil-utils"},{"name":"dev.zacsweers.anvil:annotations","old_version":"0.4.1","new_version":"0.5.4","repository_url":"https://github.com/zacsweers/anvil"},{"name":"dev.zacsweers.anvil:compiler-api","old_version":"0.4.1","new_version":"0.5.4","repository_url":"https://github.com/zacsweers/anvil"},{"name":"dev.zacsweers.anvil:compiler","old_version":"0.4.1","new_version":"0.5.4","repository_url":"https://github.com/zacsweers/anvil"},{"name":"dev.zacsweers.anvil:compiler-utils","old_version":"0.4.1","new_version":"0.5.4","repository_url":"https://github.com/zacsweers/anvil"},{"name":"dev.zacsweers.anvil:gradle-plugin","old_version":"0.4.1","new_version":"0.5.4","repository_url":"https://github.com/zacsweers/anvil"},{"name":"dev.zacsweers.anvil","old_version":"0.4.1","new_version":"0.5.4","repository_url":"https://github.com/zacsweers/anvil"},{"name":"io.sentry:sentry-android","old_version":"8.16.0","new_version":"8.53.0","repository_url":"https://github.com/getsentry/sentry-java"},{"name":"io.sentry:sentry-android-timber","old_version":"8.16.0","new_version":"8.53.0","repository_url":"https://github.com/getsentry/sentry-java"},{"name":"io.sentry:sentry-android-gradle-plugin","old_version":"5.8.0","new_version":"6.19.0","repository_url":"https://github.com/getsentry/sentry-android-gradle-plugin"},{"name":"net.lingala.zip4j:zip4j","old_version":"2.11.5","new_version":"2.11.6","repository_url":"https://github.com/srikanth-lingala/zip4j"},{"name":"ly.count.android:sdk","old_version":"25.4.2","new_version":"26.1.5","repository_url":"https://github.com/Countly/countly-sdk-android"},{"name":"org.slf4j:slf4j-api","old_version":"1.7.36","new_version":"2.0.18"},{"name":"androidx.core:core-ktx","old_version":"1.16.0","new_version":"1.19.0"},{"name":"androidx.test.ext:junit","old_version":"1.2.1","new_version":"1.3.0"},{"name":"it.unimi.dsi:fastutil","old_version":"8.5.16","new_version":"8.5.19","repository_url":"https://github.com/vigna/fastutil"},{"name":"androidx.appcompat:appcompat","old_version":"1.7.1","new_version":"1.8.0"},{"name":"androidx.core:core","old_version":"1.16.0","new_version":"1.19.0"},{"name":"io.ktor:ktor-client-android","old_version":"3.1.2","new_version":"3.5.2","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-content-negotiation","old_version":"3.1.2","new_version":"3.5.2","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-serialization-kotlinx-json","old_version":"3.1.2","new_version":"3.5.2","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-logging-jvm","old_version":"3.1.2","new_version":"3.5.2","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-mock","old_version":"3.1.2","new_version":"3.5.2","repository_url":"https://github.com/ktorio/ktor"},{"name":"org.apache.commons:commons-compress","old_version":"1.27.1","new_version":"1.28.0","repository_url":"https://github.com/apache/commons-compress"},{"name":"commons-codec:commons-codec","old_version":"1.18.0","new_version":"1.22.1","repository_url":"https://github.com/apache/commons-codec"},{"name":"no.nordicsemi.android:ble","old_version":"2.10.1","new_version":"2.11.0","repository_url":"https://github.com/NordicSemiconductor/Android-BLE-Library"},{"name":"no.nordicsemi.android:ble-common","old_version":"2.10.1","new_version":"2.11.0","repository_url":"https://github.com/NordicSemiconductor/Android-BLE-Library"},{"name":"com.fazecast:jSerialComm","old_version":"2.11.2","new_version":"2.11.4","repository_url":"https://github.com/Fazecast/jSerialComm"},{"name":"com.airbnb.android:lottie-compose","old_version":"6.6.7","new_version":"6.7.1","repository_url":"https://github.com/airbnb/lottie-android"},{"name":"com.google.protobuf:protobuf-kotlin-lite","old_version":"4.31.1","new_version":"4.36.0"},{"name":"com.google.protobuf:protoc","old_version":"4.31.1","new_version":"4.36.0","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"org.mockito.kotlin:mockito-kotlin","old_version":"5.4.0","new_version":"6.3.0","repository_url":"https://github.com/mockito/mockito-kotlin"},{"name":"org.robolectric:robolectric","old_version":"4.15.1","new_version":"4.16.1","repository_url":"https://github.com/robolectric/robolectric"},{"name":"io.mockk:mockk","old_version":"1.14.4","new_version":"1.14.11","repository_url":"https://github.com/mockk/mockk"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.6.1","new_version":"3.7.0"},{"name":"androidx.test.uiautomator:uiautomator","old_version":"2.3.0","new_version":"2.4.0"},{"name":"androidx.wear:wear","old_version":"1.3.0","new_version":"1.4.0"},{"name":"com.google.android.gms:play-services-wearable","old_version":"19.0.0","new_version":"20.0.1"},{"name":"androidx.wear:wear-phone-interactions","old_version":"1.1.0","new_version":"1.1.1"},{"name":"com.google.firebase:firebase-messaging","old_version":"24.1.2","new_version":"25.1.2","repository_url":"https://github.com/firebase/firebase-android-sdk"},{"name":"com.arkivanov.decompose:decompose","old_version":"3.3.0","new_version":"3.5.0","repository_url":"https://github.com/arkivanov/Decompose"},{"name":"com.arkivanov.decompose:extensions-compose","old_version":"3.3.0","new_version":"3.5.0","repository_url":"https://github.com/arkivanov/Decompose"},{"name":"net.engawapg.lib:zoomable","old_version":"2.8.1","new_version":"2.13.0","repository_url":"https://github.com/usuiat/Zoomable"},{"name":"com.squareup.okio:okio","old_version":"3.14.0","new_version":"3.18.1","repository_url":"https://github.com/lysine-dev/okio"},{"name":"com.squareup.okio:okio-fakefilesystem","old_version":"3.14.0","new_version":"3.18.1","repository_url":"https://github.com/lysine-dev/okio"},{"name":"com.android.tools.build:gradle","old_version":"8.11.0","new_version":"9.3.2"},{"name":"com.android.application","old_version":"8.11.0","new_version":"9.3.2"},{"name":"com.android.library","old_version":"8.11.0","new_version":"9.3.2"},{"name":"com.android.test","old_version":"8.11.0","new_version":"9.3.2"},{"name":"com.google.gms.google-services","old_version":"4.4.3","new_version":"4.5.0"},{"name":"androidx.baselineprofile","old_version":"1.3.4","new_version":"1.4.1"},{"name":"com.github.gmazzo.buildconfig","old_version":"5.6.7","new_version":"6.0.10","repository_url":"https://github.com/gmazzo/gradle-buildconfig-plugin"},{"name":"com.squareup.wire","old_version":"5.3.3","new_version":"6.4.7","repository_url":"https://github.com/square/wire"}],"path":null,"ecosystem":"maven"},"body":"Bumps the dependencies group with 97 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `8.14.2` | `9.7.1` |\n| [com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin](https://github.com/google/ksp) | `2.2.0-2.0.2` | `2.3.11` |\n| [com.google.devtools.ksp](https://github.com/google/ksp) | `2.2.0-2.0.2` | `2.3.11` |\n| [org.jetbrains.kotlin:kotlin-gradle-plugin](https://github.com/JetBrains/kotlin) | `2.2.0` | `2.4.10` |\n| [org.jetbrains.kotlin:kotlin-annotation-processing-embeddable](https://github.com/JetBrains/kotlin) | `2.2.0` | `2.4.10` |\n| [org.jetbrains.kotlin:kotlin-compiler-embeddable](https://github.com/JetBrains/kotlin) | `2.2.0` | `2.4.10` |\n| [org.jetbrains.kotlin:kotlin-reflect](https://github.com/JetBrains/kotlin) | `2.2.0` | `2.4.10` |\n| [org.jetbrains.kotlin:kotlin-stdlib-jdk8](https://github.com/JetBrains/kotlin) | `2.2.0` | `2.4.10` |\n| [org.jetbrains.kotlin:kotlin-serialization](https://github.com/JetBrains/kotlin) | `2.2.0` | `2.4.10` |\n| [org.jetbrains.kotlin:compose-compiler-gradle-plugin](https://github.com/JetBrains/kotlin) | `2.2.0` | `2.4.10` |\n| [org.jetbrains.kotlin:kotlin-test](https://github.com/JetBrains/kotlin) | `2.2.0` | `2.4.10` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.2.0` | `2.4.10` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.2.0` | `2.4.10` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.2.0` | `2.4.10` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-android](https://github.com/Kotlin/kotlinx.coroutines) | `1.10.2` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-play-services](https://github.com/Kotlin/kotlinx.coroutines) | `1.10.2` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-test](https://github.com/Kotlin/kotlinx.coroutines) | `1.10.2` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-swing](https://github.com/Kotlin/kotlinx.coroutines) | `1.10.2` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-serialization-json](https://github.com/Kotlin/kotlinx.serialization) | `1.9.0` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-collections-immutable](https://github.com/Kotlin/kotlinx.collections.immutable) | `0.4.0` | `0.5.1` |\n| [org.jetbrains.kotlinx:kotlinx-datetime](https://github.com/Kotlin/kotlinx-datetime) | `0.7.0` | `0.8.0` |\n| [com.google.protobuf:protobuf-gradle-plugin](https://github.com/google/protobuf-gradle-plugin) | `0.9.5` | `0.10.0` |\n| com.google.protobuf | `0.9.5` | `0.10.0` |\n| [com.braisgabin.detekt:kotlin-compiler-wrapper](https://github.com/BraisGabin/detekt-compiler-rules) | `0.0.4` | `0.1.0` |\n| [io.nlopez.compose.rules:detekt](https://github.com/mrmans0n/compose-rules) | `0.4.22` | `0.6.4` |\n| [uk.kulikov.detekt.decompose:decompose-detekt-rules](https://github.com/LionZXY/detekt-decompose-rule) | `1.0.1` | `2.0.0` |\n| androidx.core:core-splashscreen | `1.1.0-rc01` | `1.2.0` |\n| [com.google.android.material:material](https://github.com/material-components/material-components-android) | `1.12.0` | `1.14.0` |\n| [com.google.android.horologist:horologist-compose-layout](https://github.com/google/horologist) | `0.6.23` | `0.7.15` |\n| [tech.annexflow.compose:constraintlayout-compose-multiplatform](https://github.com/Lavmee/constraintlayout-compose-multiplatform) | `0.6.0` | `0.8.2` |\n| androidx.paging:paging-compose | `3.3.6` | `3.5.1` |\n| [org.jetbrains.compose:compose-gradle-plugin](https://github.com/JetBrains/compose-multiplatform) | `1.8.2` | `1.12.0` |\n| [io.coil-kt.coil3:coil](https://github.com/coil-kt/coil) | `3.2.0` | `3.5.0` |\n| [io.coil-kt.coil3:coil-compose](https://github.com/coil-kt/coil) | `3.2.0` | `3.5.0` |\n| [io.coil-kt.coil3:coil-svg](https://github.com/coil-kt/coil) | `3.2.0` | `3.5.0` |\n| [io.coil-kt.coil3:coil-network-ktor3](https://github.com/coil-kt/coil) | `3.2.0` | `3.5.0` |\n| [com.vladsch.flexmark:flexmark](https://github.com/vsch/flexmark-java) | `0.42.14` | `0.64.8` |\n| [com.mikepenz:multiplatform-markdown-renderer](https://github.com/mikepenz/multiplatform-markdown-renderer) | `0.35.0` | `0.44.0` |\n| androidx.room:room-runtime | `2.7.2` | `2.8.4` |\n| androidx.room:room-compiler | `2.7.2` | `2.8.4` |\n| androidx.room:room-ktx | `2.7.2` | `2.8.4` |\n| [com.google.dagger:dagger](https://github.com/google/dagger) | `2.56.2` | `2.60.1` |\n| [com.google.dagger:dagger-compiler](https://github.com/google/dagger) | `2.56.2` | `2.60.1` |\n| [me.gulya.anvil:annotations](https://github.com/IlyaGulya/anvil-utils) | `0.3.0-beta03` | `0.4.0` |\n| [me.gulya.anvil:compiler](https://github.com/IlyaGulya/anvil-utils) | `0.3.0-beta03` | `0.4.0` |\n| [dev.zacsweers.anvil:annotations](https://github.com/zacsweers/anvil) | `0.4.1` | `0.5.4` |\n| [dev.zacsweers.anvil:compiler-api](https://github.com/zacsweers/anvil) | `0.4.1` | `0.5.4` |\n| [dev.zacsweers.anvil:compiler](https://github.com/zacsweers/anvil) | `0.4.1` | `0.5.4` |\n| [dev.zacsweers.anvil:compiler-utils](https://github.com/zacsweers/anvil) | `0.4.1` | `0.5.4` |\n| [dev.zacsweers.anvil:gradle-plugin](https://github.com/zacsweers/anvil) | `0.4.1` | `0.5.4` |\n| [dev.zacsweers.anvil](https://github.com/zacsweers/anvil) | `0.4.1` | `0.5.4` |\n| [io.sentry:sentry-android](https://github.com/getsentry/sentry-java) | `8.16.0` | `8.53.0` |\n| [io.sentry:sentry-android-timber](https://github.com/getsentry/sentry-java) | `8.16.0` | `8.53.0` |\n| [io.sentry:sentry-android-gradle-plugin](https://github.com/getsentry/sentry-android-gradle-plugin) | `5.8.0` | `6.19.0` |\n| [net.lingala.zip4j:zip4j](https://github.com/srikanth-lingala/zip4j) | `2.11.5` | `2.11.6` |\n| [ly.count.android:sdk](https://github.com/Countly/countly-sdk-android) | `25.4.2` | `26.1.5` |\n| org.slf4j:slf4j-api | `1.7.36` | `2.0.18` |\n| androidx.core:core-ktx | `1.16.0` | `1.19.0` |\n| androidx.test.ext:junit | `1.2.1` | `1.3.0` |\n| [it.unimi.dsi:fastutil](https://github.com/vigna/fastutil) | `8.5.16` | `8.5.19` |\n| androidx.appcompat:appcompat | `1.7.1` | `1.8.0` |\n| androidx.core:core | `1.16.0` | `1.19.0` |\n| [io.ktor:ktor-client-android](https://github.com/ktorio/ktor) | `3.1.2` | `3.5.2` |\n| [io.ktor:ktor-client-content-negotiation](https://github.com/ktorio/ktor) | `3.1.2` | `3.5.2` |\n| [io.ktor:ktor-serialization-kotlinx-json](https://github.com/ktorio/ktor) | `3.1.2` | `3.5.2` |\n| [io.ktor:ktor-client-logging-jvm](https://github.com/ktorio/ktor) | `3.1.2` | `3.5.2` |\n| [io.ktor:ktor-client-mock](https://github.com/ktorio/ktor) | `3.1.2` | `3.5.2` |\n| [org.apache.commons:commons-compress](https://github.com/apache/commons-compress) | `1.27.1` | `1.28.0` |\n| [commons-codec:commons-codec](https://github.com/apache/commons-codec) | `1.18.0` | `1.22.1` |\n| [no.nordicsemi.android:ble](https://github.com/NordicSemiconductor/Android-BLE-Library) | `2.10.1` | `2.11.0` |\n| [no.nordicsemi.android:ble-common](https://github.com/NordicSemiconductor/Android-BLE-Library) | `2.10.1` | `2.11.0` |\n| [com.fazecast:jSerialComm](https://github.com/Fazecast/jSerialComm) | `2.11.2` | `2.11.4` |\n| [com.airbnb.android:lottie-compose](https://github.com/airbnb/lottie-android) | `6.6.7` | `6.7.1` |\n| com.google.protobuf:protobuf-kotlin-lite | `4.31.1` | `4.36.0` |\n| [com.google.protobuf:protoc](https://github.com/protocolbuffers/protobuf) | `4.31.1` | `4.36.0` |\n| [org.mockito.kotlin:mockito-kotlin](https://github.com/mockito/mockito-kotlin) | `5.4.0` | `6.3.0` |\n| [org.robolectric:robolectric](https://github.com/robolectric/robolectric) | `4.15.1` | `4.16.1` |\n| [io.mockk:mockk](https://github.com/mockk/mockk) | `1.14.4` | `1.14.11` |\n| androidx.test.espresso:espresso-core | `3.6.1` | `3.7.0` |\n| androidx.test.uiautomator:uiautomator | `2.3.0` | `2.4.0` |\n| androidx.wear:wear | `1.3.0` | `1.4.0` |\n| com.google.android.gms:play-services-wearable | `19.0.0` | `20.0.1` |\n| androidx.wear:wear-phone-interactions | `1.1.0` | `1.1.1` |\n| [com.google.firebase:firebase-messaging](https://github.com/firebase/firebase-android-sdk) | `24.1.2` | `25.1.2` |\n| [com.arkivanov.decompose:decompose](https://github.com/arkivanov/Decompose) | `3.3.0` | `3.5.0` |\n| [com.arkivanov.decompose:extensions-compose](https://github.com/arkivanov/Decompose) | `3.3.0` | `3.5.0` |\n| [net.engawapg.lib:zoomable](https://github.com/usuiat/Zoomable) | `2.8.1` | `2.13.0` |\n| [com.squareup.okio:okio](https://github.com/lysine-dev/okio) | `3.14.0` | `3.18.1` |\n| [com.squareup.okio:okio-fakefilesystem](https://github.com/lysine-dev/okio) | `3.14.0` | `3.18.1` |\n| com.android.tools.build:gradle | `8.11.0` | `9.3.2` |\n| com.android.application | `8.11.0` | `9.3.2` |\n| com.android.library | `8.11.0` | `9.3.2` |\n| com.android.test | `8.11.0` | `9.3.2` |\n| com.google.gms.google-services | `4.4.3` | `4.5.0` |\n| androidx.baselineprofile | `1.3.4` | `1.4.1` |\n| [com.github.gmazzo.buildconfig](https://github.com/gmazzo/gradle-buildconfig-plugin) | `5.6.7` | `6.0.10` |\n| [com.squareup.wire](https://github.com/square/wire) | `5.3.3` | `6.4.7` |\n\nUpdates `gradle-wrapper` from 8.14.2 to 9.7.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gradle/gradle/releases\"\u003egradle-wrapper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.7.1\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.7.1.\u003c/p\u003e\n\u003cp\u003eThis is a patch release for 9.7.0. We recommend using 9.7.1 instead of 9.7.0.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of 9.7.0 release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIsolated Projects graduates to incubating\u003c/li\u003e\n\u003cli\u003eBroader Configuration Cache compatibility\u003c/li\u003e\n\u003cli\u003eResilient Sync helps you fix broken builds\u003c/li\u003e\n\u003cli\u003eMore source locations in problem reports\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gradle.org/9.7.1/release-notes.html\"\u003eRead the Release Notes\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe would like to thank the following community members for their contributions to this release of Gradle:\n\u003ca href=\"https://github.com/aSemy\"\u003eAdam\u003c/a\u003e,\n\u003ca href=\"https://github.com/Gautam-aman\"\u003eAman Gautam\u003c/a\u003e,\n\u003ca href=\"https://github.com/YukiCodepth\"\u003eAman Kumar\u003c/a\u003e,\n\u003ca href=\"https://github.com/adubrouski\"\u003eAnton Dubrouski\u003c/a\u003e,\n\u003ca href=\"https://github.com/liutikas\"\u003eAurimas\u003c/a\u003e,\n\u003ca href=\"https://github.com/gbhavya07\"\u003egbhavya07\u003c/a\u003e,\n\u003ca href=\"https://github.com/joshfriend\"\u003eJosh Friend\u003c/a\u003e,\n\u003ca href=\"https://github.com/nicklauslittle-gov\"\u003enicklauslittle-gov\u003c/a\u003e,\n\u003ca href=\"https://github.com/psoni674\"\u003ePragati\u003c/a\u003e,\n\u003ca href=\"https://github.com/Project516\"\u003eproject516\u003c/a\u003e,\n\u003ca href=\"https://github.com/Uomocapra\"\u003eQin Mi\u003c/a\u003e,\n\u003ca href=\"https://github.com/rkdfx\"\u003eRavi\u003c/a\u003e,\n\u003ca href=\"https://github.com/sk-reddy17\"\u003esk-reddy17\u003c/a\u003e,\n\u003ca href=\"https://github.com/Suvrat1629\"\u003eSuvrat Acharya\u003c/a\u003e,\n\u003ca href=\"https://github.com/ShreckYe\"\u003eYongshun Ye\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eUpgrade instructions\u003c/h2\u003e\n\u003cp\u003eSwitch your build to use Gradle 9.7.1 by updating your wrapper:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./gradlew :wrapper --gradle-version=9.7.1 \u0026amp;\u0026amp; ./gradlew :wrapper\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the Gradle \u003ca href=\"https://docs.gradle.org/9.7.1/userguide/upgrading_version_9.html\"\u003e9.x upgrade guide\u003c/a\u003e to learn about deprecations, breaking changes and other considerations when upgrading.\u003c/p\u003e\n\u003cp\u003eFor Java, Groovy, Kotlin and Android compatibility, see the \u003ca href=\"https://docs.gradle.org/9.7.1/userguide/compatibility.html\"\u003efull compatibility notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReporting problems\u003c/h2\u003e\n\u003cp\u003eIf you find a problem with this release, please file a bug on \u003ca href=\"https://github.com/gradle/gradle/issues\"\u003eGitHub Issues\u003c/a\u003e adhering to our issue guidelines.\nIf you're not sure you're encountering a bug, please use the \u003ca href=\"https://discuss.gradle.org/c/help-discuss\"\u003eforum\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe hope you will build happiness with Gradle, and we look forward to your feedback via \u003ca href=\"https://twitter.com/gradle\"\u003eTwitter\u003c/a\u003e or on \u003ca href=\"https://github.com/gradle\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e9.7.0\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.7.0.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/92f0512e7f06d84621afba191f75e265363890cf\"\u003e\u003ccode\u003e92f0512\u003c/code\u003e\u003c/a\u003e update fixed issues for 9.7.1 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38892\"\u003e#38892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/820ee75a99a179bbffa41bcedc6477b685fabb9f\"\u003e\u003ccode\u003e820ee75\u003c/code\u003e\u003c/a\u003e update fixed issues for 9.7.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/82c23f9bd2a89b4cc644e1f90a28a8668feb3dee\"\u003e\u003ccode\u003e82c23f9\u003c/code\u003e\u003c/a\u003e Fix annotation parameter ordering problem in KTS (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38878\"\u003e#38878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/ef11a7268fe8cc8d6ab849ec911aa11220180553\"\u003e\u003ccode\u003eef11a72\u003c/code\u003e\u003c/a\u003e Fix annotation parameter ordering issue\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/bb0d8a974a71b1003efea41e4046e98855cd5ff8\"\u003e\u003ccode\u003ebb0d8a9\u003c/code\u003e\u003c/a\u003e Make relevant tests polyglot (run for multiple DSLs)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/336e129d7f95c03486acafc97abf59734acfed48\"\u003e\u003ccode\u003e336e129\u003c/code\u003e\u003c/a\u003e Update signing configuration (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38874\"\u003e#38874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/4bdf0da2dad9884d089a6062a45ea7183e7d735d\"\u003e\u003ccode\u003e4bdf0da\u003c/code\u003e\u003c/a\u003e Update signing configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/cd9b92c1b82856248cf1dc58b50378238bec7b52\"\u003e\u003ccode\u003ecd9b92c\u003c/code\u003e\u003c/a\u003e List issues resolved in 9.7.1 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38839\"\u003e#38839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/5f4e381964897ad8d6b99e5a7c77f26dba3259fb\"\u003e\u003ccode\u003e5f4e381\u003c/code\u003e\u003c/a\u003e List issues resolved in 9.7.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/1e08ab551367aeb5fb48b26e72807e1d2b27c939\"\u003e\u003ccode\u003e1e08ab5\u003c/code\u003e\u003c/a\u003e Keep type-use annotations in extracted ABI classes (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38810\"\u003e#38810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gradle/gradle/compare/v8.14.2...v9.7.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin` from 2.2.0-2.0.2 to 2.3.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/ksp/releases\"\u003ecom.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.3.11\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eorg.gradle.isolated-projects\u003c/code\u003e for project isolation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3051\"\u003e#3051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix premature \u003ccode\u003ekspDebugAndroidTest\u003c/code\u003e task skipping on Android library modules (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix missing parent declaration exception for \u003ccode\u003e@NotNull\u003c/code\u003e annotations during incremental compilation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3030\"\u003e#3030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClean output directories instead of skipping tasks when processor classpath transitions to empty (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3046\"\u003e#3046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix build cache misses by marking \u003ccode\u003eKspGradleConfig.logLevel\u003c/code\u003e as \u003ccode\u003e@Internal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3039\"\u003e#3039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eorg.gradle.isolated-projects=true\u003c/code\u003e to KSP Gradle properties reference table (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3076\"\u003e#3076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd KSP Gradle properties reference table to README documentation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3070\"\u003e#3070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument collection values in \u003ccode\u003eKSValueArgument.value\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3069\"\u003e#3069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate error messaging for \u003ccode\u003eksp.useKSP2\u003c/code\u003e deprecation notice (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3066\"\u003e#3066\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThanks to \u003ca href=\"https://github.com/simonlebras\"\u003e\u003ccode\u003e@​simonlebras\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/ChristianKatzmann\"\u003e\u003ccode\u003e@​ChristianKatzmann\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/Yong-yuan-X\"\u003e\u003ccode\u003e@​Yong-yuan-X\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/bacecek\"\u003e\u003ccode\u003e@​bacecek\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/KlyneChrysler\"\u003e\u003ccode\u003e@​KlyneChrysler\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/Shaurya2k06\"\u003e\u003ccode\u003e@​Shaurya2k06\u003c/code\u003e\u003c/a\u003e, and everyone who reported bugs and participated in discussions!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/ksp/compare/2.3.10...2.3.11\"\u003ehttps://github.com/google/ksp/compare/2.3.10...2.3.11\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.3.10\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix OOMs caused by unstopped coroutine Dispatcher threads by moving KSP task cache to a gradle build service (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2817\"\u003e#2817\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSanitize ':' in internal-name module suffix so KSP works with Kotlin 2.4.0 default module names (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2964\"\u003e#2964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFilter source file trees in KspAATask to restore NO-SOURCE skipping behaviour (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2947\"\u003e#2947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix R-class resolution in KSP when AGP 9 built-in Kotlin is enabled (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2857\"\u003e#2857\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix KSP2 incremental cache path normalization mismatch (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2854\"\u003e#2854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize line endings for KspAATask source roots to prevent cross-platform remote build cache misses (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2849\"\u003e#2849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bug where KSP incremental compilation does not consider library class references in annotations (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3011\"\u003e#3011\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eConsume all Kotlin sources in KSP to support other code generators (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3001\"\u003e#3001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix configuration cache invalidation in klib cross-compilation check (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3014\"\u003e#3014\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMemoized hash code for \u003ccode\u003eKSTypeImpl\u003c/code\u003e to speed up processing (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2896\"\u003e#2896\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix incorrect name generation for data classes annotated with \u003ccode\u003e@JvmRecord\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2813\"\u003e#2813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInclude \u003ccode\u003ekotlinx.coroutines\u003c/code\u003e in the distributed uber jar \u003ccode\u003esymbol-processing-aa-embeddable\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2938\"\u003e#2938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew debugging features for incremental compilation, including additional logging and dependency graph visualization (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3015\"\u003e#3015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeprecate the \u003ccode\u003eksp(...)\u003c/code\u003e Gradle configuration in Kotlin Multiplatform (KMP) projects in favor of target-specific configurations (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2956\"\u003e#2956\u003c/a\u003e). Note: Non-KMP projects are also affected. For migration details, see the \u003ca href=\"https://kotlinlang.org/docs/ksp-multiplatform.html#avoid-the-ksp-configuration-on-ksp-1-0-1\"\u003edocumentation\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThanks to \u003ca href=\"https://github.com/mvanhorn\"\u003e\u003ccode\u003e@​mvanhorn\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/Yong-yuan-X\"\u003e\u003ccode\u003e@​Yong-yuan-X\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/MariusVolkhart\"\u003e\u003ccode\u003e@​MariusVolkhart\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/shmuelr\"\u003e\u003ccode\u003e@​shmuelr\u003c/code\u003e\u003c/a\u003e and everyone who reported bugs and participated in discussions!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/ksp/compare/2.3.9...2.3.10\"\u003ehttps://github.com/google/ksp/compare/2.3.9...2.3.10\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.3.9\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleaned up native cross-compilation support checks to prevent Gradle Configuration Cache invalidation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2953\"\u003e#2953\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a compilation performance regression in in PsiResolutionStrategy introduced in 2.3.8  (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2948\"\u003e#2948\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThanks to everyone who reported bugs and participated in discussions!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/ksp/compare/2.3.8...2.3.9\"\u003ehttps://github.com/google/ksp/compare/2.3.8...2.3.9\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/c44fd9a91192679e07a1d905dda022796e32bbbe\"\u003e\u003ccode\u003ec44fd9a\u003c/code\u003e\u003c/a\u003e Rename coroutines core-jvm alias to coreJvm per review\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/5cec34dab94b81371fca720ff188fb42c38c108f\"\u003e\u003ccode\u003e5cec34d\u003c/code\u003e\u003c/a\u003e Move root build plugin versions to the version catalog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/b956e6b1f856717db7cbd1a24e23f73a7216c998\"\u003e\u003ccode\u003eb956e6b\u003c/code\u003e\u003c/a\u003e Move remaining kotlin-analysis-api versions to the version catalog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/9aed49722363306f8dc75c193b9c1f956907a628\"\u003e\u003ccode\u003e9aed497\u003c/code\u003e\u003c/a\u003e Do not cherry-pick conflicting commits in CI auto-merge workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/145dcd65fc7227a5fbb32a0e993681ac925f1a93\"\u003e\u003ccode\u003e145dcd6\u003c/code\u003e\u003c/a\u003e Update gradle wrapper to 9.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/68762a9376230007f02d1091e582f0265710bd80\"\u003e\u003ccode\u003e68762a9\u003c/code\u003e\u003c/a\u003e Check for valid gradle wrapper jar in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/336a2e4de3a3e0f47a3851eaa94b07975c667568\"\u003e\u003ccode\u003e336a2e4\u003c/code\u003e\u003c/a\u003e Regenerate gradle wrapper\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/94d5e09231902706719a409537e034b3088e7481\"\u003e\u003ccode\u003e94d5e09\u003c/code\u003e\u003c/a\u003e Use gh cli for release asset upload\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/d244982946ec314f25099cca39f1fcaeaf348b11\"\u003e\u003ccode\u003ed244982\u003c/code\u003e\u003c/a\u003e Disable all permissions in main workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/b88bc0d453b478a0c486ad987e6bb8876ae207ff\"\u003e\u003ccode\u003eb88bc0d\u003c/code\u003e\u003c/a\u003e Pin actions/upload-release-asset at v1.0.2 SHA\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/ksp/compare/2.2.0-2.0.2...2.3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.devtools.ksp` from 2.2.0-2.0.2 to 2.3.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/ksp/releases\"\u003ecom.google.devtools.ksp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.3.11\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eorg.gradle.isolated-projects\u003c/code\u003e for project isolation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3051\"\u003e#3051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix premature \u003ccode\u003ekspDebugAndroidTest\u003c/code\u003e task skipping on Android library modules (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix missing parent declaration exception for \u003ccode\u003e@NotNull\u003c/code\u003e annotations during incremental compilation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3030\"\u003e#3030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClean output directories instead of skipping tasks when processor classpath transitions to empty (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3046\"\u003e#3046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix build cache misses by marking \u003ccode\u003eKspGradleConfig.logLevel\u003c/code\u003e as \u003ccode\u003e@Internal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3039\"\u003e#3039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eorg.gradle.isolated-projects=true\u003c/code\u003e to KSP Gradle properties reference table (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3076\"\u003e#3076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd KSP Gradle properties reference table to README documentation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3070\"\u003e#3070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument collection values in \u003ccode\u003eKSValueArgument.value\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3069\"\u003e#3069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate error messaging for \u003ccode\u003eksp.useKSP2\u003c/code\u003e deprecation notice (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3066\"\u003e#3066\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThanks to \u003ca href=\"https://github.com/simonlebras\"\u003e\u003ccode\u003e@​simonlebras\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/ChristianKatzmann\"\u003e\u003ccode\u003e@​ChristianKatzmann\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/Yong-yuan-X\"\u003e\u003ccode\u003e@​Yong-yuan-X\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/bacecek\"\u003e\u003ccode\u003e@​bacecek\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/KlyneChrysler\"\u003e\u003ccode\u003e@​KlyneChrysler\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/Shaurya2k06\"\u003e\u003ccode\u003e@​Shaurya2k06\u003c/code\u003e\u003c/a\u003e, and everyone who reported bugs and participated in discussions!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/ksp/compare/2.3.10...2.3.11\"\u003ehttps://github.com/google/ksp/compare/2.3.10...2.3.11\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.3.10\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix OOMs caused by unstopped coroutine Dispatcher threads by moving KSP task cache to a gradle build service (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2817\"\u003e#2817\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSanitize ':' in internal-name module suffix so KSP works with Kotlin 2.4.0 default module names (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2964\"\u003e#2964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFilter source file trees in KspAATask to restore NO-SOURCE skipping behaviour (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2947\"\u003e#2947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix R-class resolution in KSP when AGP 9 built-in Kotlin is enabled (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2857\"\u003e#2857\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix KSP2 incremental cache path normalization mismatch (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2854\"\u003e#2854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize line endings for KspAATask source roots to prevent cross-platform remote build cache misses (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2849\"\u003e#2849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bug where KSP incremental compilation does not consider library class references in annotations (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3011\"\u003e#3011\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eConsume all Kotlin sources in KSP to support other code generators (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3001\"\u003e#3001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix configuration cache invalidation in klib cross-compilation check (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3014\"\u003e#3014\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMemoized hash code for \u003ccode\u003eKSTypeImpl\u003c/code\u003e to speed up processing (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2896\"\u003e#2896\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix incorrect name generation for data classes annotated with \u003ccode\u003e@JvmRecord\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2813\"\u003e#2813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInclude \u003ccode\u003ekotlinx.coroutines\u003c/code\u003e in the distributed uber jar \u003ccode\u003esymbol-processing-aa-embeddable\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2938\"\u003e#2938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew debugging features for incremental compilation, including additional logging and dependency graph visualization (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3015\"\u003e#3015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeprecate the \u003ccode\u003eksp(...)\u003c/code\u003e Gradle configuration in Kotlin Multiplatform (KMP) projects in favor of target-specific configurations (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2956\"\u003e#2956\u003c/a\u003e). Note: Non-KMP projects are also affected. For migration details, see the \u003ca href=\"https://kotlinlang.org/docs/ksp-multiplatform.html#avoid-the-ksp-configuration-on-ksp-1-0-1\"\u003edocumentation\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThanks to \u003ca href=\"https://github.com/mvanhorn\"\u003e\u003ccode\u003e@​mvanhorn\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/Yong-yuan-X\"\u003e\u003ccode\u003e@​Yong-yuan-X\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/MariusVolkhart\"\u003e\u003ccode\u003e@​MariusVolkhart\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/shmuelr\"\u003e\u003ccode\u003e@​shmuelr\u003c/code\u003e\u003c/a\u003e and everyone who reported bugs and participated in discussions!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/ksp/compare/2.3.9...2.3.10\"\u003ehttps://github.com/google/ksp/compare/2.3.9...2.3.10\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.3.9\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleaned up native cross-compilation support checks to prevent Gradle Configuration Cache invalidation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2953\"\u003e#2953\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a compilation performance regression in in PsiResolutionStrategy introduced in 2.3.8  (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2948\"\u003e#2948\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThanks to everyone who reported bugs and participated in discussions!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/ksp/compare/2.3.8...2.3.9\"\u003ehttps://github.com/google/ksp/compare/2.3.8...2.3.9\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/c44fd9a91192679e07a1d905dda022796e32bbbe\"\u003e\u003ccode\u003ec44fd9a\u003c/code\u003e\u003c/a\u003e Rename coroutines core-jvm alias to coreJvm per review\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/5cec34dab94b81371fca720ff188fb42c38c108f\"\u003e\u003ccode\u003e5cec34d\u003c/code\u003e\u003c/a\u003e Move root build plugin versions to the version catalog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/b956e6b1f856717db7cbd1a24e23f73a7216c998\"\u003e\u003ccode\u003eb956e6b\u003c/code\u003e\u003c/a\u003e Move remaining kotlin-analysis-api versions to the version catalog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/9aed49722363306f8dc75c193b9c1f956907a628\"\u003e\u003ccode\u003e9aed497\u003c/code\u003e\u003c/a\u003e Do not cherry-pick conflicting commits in CI auto-merge workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/145dcd65fc7227a5fbb32a0e993681ac925f1a93\"\u003e\u003ccode\u003e145dcd6\u003c/code\u003e\u003c/a\u003e Update gradle wrapper to 9.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/68762a9376230007f02d1091e582f0265710bd80\"\u003e\u003ccode\u003e68762a9\u003c/code\u003e\u003c/a\u003e Check for valid gradle wrapper jar in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/336a2e4de3a3e0f47a3851eaa94b07975c667568\"\u003e\u003ccode\u003e336a2e4\u003c/code\u003e\u003c/a\u003e Regenerate gradle wrapper\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/94d5e09231902706719a409537e034b3088e7481\"\u003e\u003ccode\u003e94d5e09\u003c/code\u003e\u003c/a\u003e Use gh cli for release asset upload\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/d244982946ec314f25099cca39f1fcaeaf348b11\"\u003e\u003ccode\u003ed244982\u003c/code\u003e\u003c/a\u003e Disable all permissions in main workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/b88bc0d453b478a0c486ad987e6bb8876ae207ff\"\u003e\u003ccode\u003eb88bc0d\u003c/code\u003e\u003c/a\u003e Pin actions/upload-release-asset at v1.0.2 SHA\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/ksp/compare/2.2.0-2.0.2...2.3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin:kotlin-gradle-plugin` from 2.2.0 to 2.4.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin:kotlin-gradle-plugin's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.10\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eKotlin 2.4.10-RC2\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin:kotlin-gradle-plugin's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.10\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.4.0\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83867\"\u003e\u003ccode\u003eKT-83867\u003c/code\u003e\u003c/a\u003e OVERLOAD_RESOLUTION_AMBIGUITY false positive with assertEquals in IJ repo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83723\"\u003e\u003ccode\u003eKT-83723\u003c/code\u003e\u003c/a\u003e [Analysis API] Enable experimental KDoc resolver by default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83388\"\u003e\u003ccode\u003eKT-83388\u003c/code\u003e\u003c/a\u003e Analysis API: properly support KMP in KotlinPackageProvider\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/5687445832cd835b4509b9fbc264cdf1a8201093\"\u003e\u003ccode\u003e5687445\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ba30392c459dd7c1ae74c1501e83453144416bc9\"\u003e\u003ccode\u003eba30392\u003c/code\u003e\u003c/a\u003e [Wasm] Support regenerate unchanged modules flag on KGP\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6307e7310d14eef05f199ebccd9518379772d3a7\"\u003e\u003ccode\u003e6307e73\u003c/code\u003e\u003c/a\u003e [Wasm] Implement Xwasm-IC-generate-unchanged-modules flag\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/39d7aee8470b7ce61fea8f76c317456e2756f7c0\"\u003e\u003ccode\u003e39d7aee\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a2956bed85f99752b78881075665d81a82e98ab2\"\u003e\u003ccode\u003ea2956be\u003c/code\u003e\u003c/a\u003e [Gradle] Update karma.conf.js to use 'require(...)' instead plain strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9b1361ce7a6cfd2edd6f8cdb05198573fb839b61\"\u003e\u003ccode\u003e9b1361c\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Updated regression test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a4c153af52ad4694c0cca14c25812db54b19f90e\"\u003e\u003ccode\u003ea4c153a\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Fix toochain to 2.4.0 for abiValidation compat config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bc04b90d245cd27d8339fe51bd43a90dd4c04e9f\"\u003e\u003ccode\u003ebc04b90\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bbcb94baa2eed1cc5ccb39147dcf5a5a184d7a14\"\u003e\u003ccode\u003ebbcb94b\u003c/code\u003e\u003c/a\u003e [CRI] explicitly disable CRI generation for non-JVM targets to avoid false-po...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6c2c458f1d2e4b4f8638fb16f12ff1dd375c4ae2\"\u003e\u003ccode\u003e6c2c458\u003c/code\u003e\u003c/a\u003e Scripting: fix jvmTarget processing from script annotations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.2.0...v2.4.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin:kotlin-annotation-processing-embeddable` from 2.2.0 to 2.4.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin:kotlin-annotation-processing-embeddable's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.10\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eKotlin 2.4.10-RC2\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin:kotlin-annotation-processing-embeddable's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.10\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.4.0\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83867\"\u003e\u003ccode\u003eKT-83867\u003c/code\u003e\u003c/a\u003e OVERLOAD_RESOLUTION_AMBIGUITY false positive with assertEquals in IJ repo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83723\"\u003e\u003ccode\u003eKT-83723\u003c/code\u003e\u003c/a\u003e [Analysis API] Enable experimental KDoc resolver by default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83388\"\u003e\u003ccode\u003eKT-83388\u003c/code\u003e\u003c/a\u003e Analysis API: properly support KMP in KotlinPackageProvider\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/5687445832cd835b4509b9fbc264cdf1a8201093\"\u003e\u003ccode\u003e5687445\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ba30392c459dd7c1ae74c1501e83453144416bc9\"\u003e\u003ccode\u003eba30392\u003c/code\u003e\u003c/a\u003e [Wasm] Support regenerate unchanged modules flag on KGP\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6307e7310d14eef05f199ebccd9518379772d3a7\"\u003e\u003ccode\u003e6307e73\u003c/code\u003e\u003c/a\u003e [Wasm] Implement Xwasm-IC-generate-unchanged-modules flag\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/39d7aee8470b7ce61fea8f76c317456e2756f7c0\"\u003e\u003ccode\u003e39d7aee\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a2956bed85f99752b78881075665d81a82e98ab2\"\u003e\u003ccode\u003ea2956be\u003c/code\u003e\u003c/a\u003e [Gradle] Update karma.conf.js to use 'require(...)' instead plain strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9b1361ce7a6cfd2edd6f8cdb05198573fb839b61\"\u003e\u003ccode\u003e9b1361c\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Updated regression test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a4c153af52ad4694c0cca14c25812db54b19f90e\"\u003e\u003ccode\u003ea4c153a\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Fix toochain to 2.4.0 for abiValidation compat config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bc04b90d245cd27d8339fe51bd43a90dd4c04e9f\"\u003e\u003ccode\u003ebc04b90\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bbcb94baa2eed1cc5ccb39147dcf5a5a184d7a14\"\u003e\u003ccode\u003ebbcb94b\u003c/code\u003e\u003c/a\u003e [CRI] explicitly disable CRI generation for non-JVM targets to avoid false-po...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6c2c458f1d2e4b4f8638fb16f12ff1dd375c4ae2\"\u003e\u003ccode\u003e6c2c458\u003c/code\u003e\u003c/a\u003e Scripting: fix jvmTarget processing from script annotations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.2.0...v2.4.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin:kotlin-compiler-embeddable` from 2.2.0 to 2.4.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin:kotlin-compiler-embeddable's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.10\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eKotlin 2.4.10-RC2\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin:kotlin-compiler-embeddable's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.10\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.4.0\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83867\"\u003e\u003ccode\u003eKT-83867\u003c/code\u003e\u003c/a\u003e OVERLOAD_RESOLUTION_AMBIGUITY false positive with assertEquals in IJ repo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83723\"\u003e\u003ccode\u003eKT-83723\u003c/code\u003e\u003c/a\u003e [Analysis API] Enable experimental KDoc resolver by default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83388\"\u003e\u003ccode\u003eKT-83388\u003c/code\u003e\u003c/a\u003e Analysis API: properly support KMP in KotlinPackageProvider\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/5687445832cd835b4509b9fbc264cdf1a8201093\"\u003e\u003ccode\u003e5687445\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ba30392c459dd7c1ae74c1501e83453144416bc9\"\u003e\u003ccode\u003eba30392\u003c/code\u003e\u003c/a\u003e [Wasm] Support regenerate unchanged modules flag on KGP\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6307e7310d14eef05f199ebccd9518379772d3a7\"\u003e\u003ccode\u003e6307e73\u003c/code\u003e\u003c/a\u003e [Wasm] Implement Xwasm-IC-generate-unchanged-modules flag\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/39d7aee8470b7ce61fea8f76c317456e2756f7c0\"\u003e\u003ccode\u003e39d7aee\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a2956bed85f99752b78881075665d81a82e98ab2\"\u003e\u003ccode\u003ea2956be\u003c/code\u003e\u003c/a\u003e [Gradle] Update karma.conf.js to use 'require(...)' instead plain strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9b1361ce7a6cfd2edd6f8cdb05198573fb839b61\"\u003e\u003ccode\u003e9b1361c\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Updated regression test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a4c153af52ad4694c0cca14c25812db54b19f90e\"\u003e\u003ccode\u003ea4c153a\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Fix toochain to 2.4.0 for abiValidation compat config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bc04b90d245cd27d8339fe51bd43a90dd4c04e9f\"\u003e\u003ccode\u003ebc04b90\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bbcb94baa2eed1cc5ccb39147dcf5a5a184d7a14\"\u003e\u003ccode\u003ebbcb94b\u003c/code\u003e\u003c/a\u003e [CRI] explicitly disable CRI generation for non-JVM targets to avoid false-po...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6c2c458f1d2e4b4f8638fb16f12ff1dd375c4ae2\"\u003e\u003ccode\u003e6c2c458\u003c/code\u003e\u003c/a\u003e Scripting: fix jvmTarget processing from script annotations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.2.0...v2.4.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin:kotlin-reflect` from 2.2.0 to 2.4.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin:kotlin-reflect's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.10\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eKotlin 2.4.10-RC2\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin:kotlin-reflect's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.10\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbr...\n\n_Description has been truncated_","html_url":"https://github.com/SimbaPlayTT/Flipper-Android-App-custom-theme/pull/6","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/SimbaPlayTT%2FFlipper-Android-App-custom-theme/issues/6","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/6/packages"},{"uuid":"5029559409","node_id":"PR_kwDOSyQXzc75AjYi","number":25,"state":"closed","title":"chore(deps): bump the android-deps group in /android with 28 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-07-31T18:11:30.000Z","author_association":null,"state_reason":null,"created_at":"2026-07-31T12:27:35.000Z","updated_at":"2026-07-31T18:11:31.000Z","time_to_close":20635,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"android-deps","update_count":28,"packages":[{"name":"com.android.application","old_version":"8.13.0","new_version":"9.3.1"},{"name":"org.jetbrains.kotlin.android","old_version":"1.9.22","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.google.dagger.hilt.android","old_version":"2.50","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"com.google.gms.google-services","old_version":"4.4.0","new_version":"4.5.0"},{"name":"com.google.firebase.crashlytics","old_version":"2.9.9","new_version":"3.0.7"},{"name":"androidx.core:core-ktx","old_version":"1.12.0","new_version":"1.19.0"},{"name":"androidx.lifecycle:lifecycle-runtime-ktx","old_version":"2.7.0","new_version":"2.11.0"},{"name":"androidx.activity:activity-compose","old_version":"1.8.2","new_version":"1.13.0"},{"name":"androidx.compose:compose-bom","old_version":"2023.10.01","new_version":"2026.06.01"},{"name":"com.google.android.material:material","old_version":"1.11.0","new_version":"1.14.0","repository_url":"https://github.com/material-components/material-components-android"},{"name":"com.google.dagger:hilt-android","old_version":"2.50","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"com.google.dagger:hilt-compiler","old_version":"2.50","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"androidx.hilt:hilt-navigation-compose","old_version":"1.1.0","new_version":"1.4.0"},{"name":"androidx.hilt:hilt-work","old_version":"1.1.0","new_version":"1.4.0"},{"name":"androidx.hilt:hilt-compiler","old_version":"1.1.0","new_version":"1.4.0"},{"name":"com.squareup.retrofit2:retrofit","old_version":"2.11.0","new_version":"3.0.0","repository_url":"https://github.com/square/retrofit"},{"name":"com.squareup.retrofit2:converter-gson","old_version":"2.11.0","new_version":"3.0.0","repository_url":"https://github.com/square/retrofit"},{"name":"com.squareup.okhttp3:logging-interceptor","old_version":"4.12.0","new_version":"5.4.0","repository_url":"https://github.com/square/okhttp"},{"name":"androidx.room:room-runtime","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-ktx","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-compiler","old_version":"2.6.1","new_version":"2.8.4"},{"name":"io.coil-kt:coil-compose","old_version":"2.5.0","new_version":"2.7.0","repository_url":"https://github.com/coil-kt/coil"},{"name":"androidx.security:security-crypto","old_version":"1.1.0-alpha06","new_version":"1.1.0"},{"name":"com.google.android.libraries.identity.googleid:googleid","old_version":"1.1.1","new_version":"1.2.0"},{"name":"androidx.exifinterface:exifinterface","old_version":"1.3.7","new_version":"1.4.2"},{"name":"androidx.test.ext:junit","old_version":"1.1.5","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.5.1","new_version":"3.7.0"},{"name":"gradle-wrapper","old_version":"8.13","new_version":"9.6.1","repository_url":"https://github.com/gradle/gradle"}],"path":"/android","ecosystem":"maven"},"body":"Bumps the android-deps group in /android with 28 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| com.android.application | `8.13.0` | `9.3.1` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `1.9.22` | `2.4.10` |\n| [com.google.dagger.hilt.android](https://github.com/google/dagger) | `2.50` | `2.60.1` |\n| com.google.gms.google-services | `4.4.0` | `4.5.0` |\n| com.google.firebase.crashlytics | `2.9.9` | `3.0.7` |\n| androidx.core:core-ktx | `1.12.0` | `1.19.0` |\n| androidx.lifecycle:lifecycle-runtime-ktx | `2.7.0` | `2.11.0` |\n| androidx.activity:activity-compose | `1.8.2` | `1.13.0` |\n| androidx.compose:compose-bom | `2023.10.01` | `2026.06.01` |\n| [com.google.android.material:material](https://github.com/material-components/material-components-android) | `1.11.0` | `1.14.0` |\n| [com.google.dagger:hilt-android](https://github.com/google/dagger) | `2.50` | `2.60.1` |\n| [com.google.dagger:hilt-compiler](https://github.com/google/dagger) | `2.50` | `2.60.1` |\n| androidx.hilt:hilt-navigation-compose | `1.1.0` | `1.4.0` |\n| androidx.hilt:hilt-work | `1.1.0` | `1.4.0` |\n| androidx.hilt:hilt-compiler | `1.1.0` | `1.4.0` |\n| [com.squareup.retrofit2:retrofit](https://github.com/square/retrofit) | `2.11.0` | `3.0.0` |\n| [com.squareup.retrofit2:converter-gson](https://github.com/square/retrofit) | `2.11.0` | `3.0.0` |\n| [com.squareup.okhttp3:logging-interceptor](https://github.com/square/okhttp) | `4.12.0` | `5.4.0` |\n| androidx.room:room-runtime | `2.6.1` | `2.8.4` |\n| androidx.room:room-ktx | `2.6.1` | `2.8.4` |\n| androidx.room:room-compiler | `2.6.1` | `2.8.4` |\n| [io.coil-kt:coil-compose](https://github.com/coil-kt/coil) | `2.5.0` | `2.7.0` |\n| androidx.security:security-crypto | `1.1.0-alpha06` | `1.1.0` |\n| com.google.android.libraries.identity.googleid:googleid | `1.1.1` | `1.2.0` |\n| androidx.exifinterface:exifinterface | `1.3.7` | `1.4.2` |\n| androidx.test.ext:junit | `1.1.5` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.5.1` | `3.7.0` |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `8.13` | `9.6.1` |\n\nUpdates `com.android.application` from 8.13.0 to 9.3.1\n\nUpdates `org.jetbrains.kotlin.android` from 1.9.22 to 2.4.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.10\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eKotlin 2.4.10-RC2\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.10\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.4.0\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83867\"\u003e\u003ccode\u003eKT-83867\u003c/code\u003e\u003c/a\u003e OVERLOAD_RESOLUTION_AMBIGUITY false positive with assertEquals in IJ repo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83723\"\u003e\u003ccode\u003eKT-83723\u003c/code\u003e\u003c/a\u003e [Analysis API] Enable experimental KDoc resolver by default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83388\"\u003e\u003ccode\u003eKT-83388\u003c/code\u003e\u003c/a\u003e Analysis API: properly support KMP in KotlinPackageProvider\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/5687445832cd835b4509b9fbc264cdf1a8201093\"\u003e\u003ccode\u003e5687445\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ba30392c459dd7c1ae74c1501e83453144416bc9\"\u003e\u003ccode\u003eba30392\u003c/code\u003e\u003c/a\u003e [Wasm] Support regenerate unchanged modules flag on KGP\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6307e7310d14eef05f199ebccd9518379772d3a7\"\u003e\u003ccode\u003e6307e73\u003c/code\u003e\u003c/a\u003e [Wasm] Implement Xwasm-IC-generate-unchanged-modules flag\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/39d7aee8470b7ce61fea8f76c317456e2756f7c0\"\u003e\u003ccode\u003e39d7aee\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a2956bed85f99752b78881075665d81a82e98ab2\"\u003e\u003ccode\u003ea2956be\u003c/code\u003e\u003c/a\u003e [Gradle] Update karma.conf.js to use 'require(...)' instead plain strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9b1361ce7a6cfd2edd6f8cdb05198573fb839b61\"\u003e\u003ccode\u003e9b1361c\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Updated regression test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a4c153af52ad4694c0cca14c25812db54b19f90e\"\u003e\u003ccode\u003ea4c153a\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Fix toochain to 2.4.0 for abiValidation compat config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bc04b90d245cd27d8339fe51bd43a90dd4c04e9f\"\u003e\u003ccode\u003ebc04b90\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bbcb94baa2eed1cc5ccb39147dcf5a5a184d7a14\"\u003e\u003ccode\u003ebbcb94b\u003c/code\u003e\u003c/a\u003e [CRI] explicitly disable CRI generation for non-JVM targets to avoid false-po...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6c2c458f1d2e4b4f8638fb16f12ff1dd375c4ae2\"\u003e\u003ccode\u003e6c2c458\u003c/code\u003e\u003c/a\u003e Scripting: fix jvmTarget processing from script annotations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v1.9.22...v2.4.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger.hilt.android` from 2.50 to 2.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger.hilt.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5203\"\u003e#5203\u003c/a\u003e: Fixes regression in Dagger 2.60 where the Hilt compiler options (like fastInit) failed to propagate to the Hilt aggregation compilation tasks. (e181a0d88)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5204\"\u003e#5204\u003c/a\u003e: Fixes \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e import error by removing the annotation from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e (3f2dd8fba)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7a89b6cea7d47167f2d5f9912f61f3fee333d88\"\u003e\u003ccode\u003ef7a89b6\u003c/code\u003e\u003c/a\u003e 2.60.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/76780171d7c3ff0dc0240644f703cf181fd8b8e8\"\u003e\u003ccode\u003e7678017\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/974fe294b70f2a3ea43731a4f5b95e75c2bcb38d\"\u003e\u003ccode\u003e974fe29\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/823484c63fbdcc61d413bba40d164272f22e51a8\"\u003e\u003ccode\u003e823484c\u003c/code\u003e\u003c/a\u003e Make Android*InjectionTest$ApplicationReturnsNull public.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/c26f8d7be8ff1856667ddb3b070a410b3aeabfcc\"\u003e\u003ccode\u003ec26f8d7\u003c/code\u003e\u003c/a\u003e Add test for \u003ccode\u003e@AssistedFactory\u003c/code\u003e compilations without compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e181a0d884a3f14c8a7967af5d45f0a8c9a600ac\"\u003e\u003ccode\u003ee181a0d\u003c/code\u003e\u003c/a\u003e Fix Hilt compiler option propagation to Hilt aggregation tasks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/812e2f337718a79dd45ab8488398b5a893291ae8\"\u003e\u003ccode\u003e812e2f3\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3f2dd8fbab0a71ec09dc4f9dc543d89ec108c7f0\"\u003e\u003ccode\u003e3f2dd8f\u003c/code\u003e\u003c/a\u003e Delete \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e90e102c73d67ccb3aaad1835391e6cee2a17b42\"\u003e\u003ccode\u003ee90e102\u003c/code\u003e\u003c/a\u003e Update Dagger version in yml config and REAME.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.50...dagger-2.60.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.gms.google-services` from 4.4.0 to 4.5.0\n\nUpdates `com.google.firebase.crashlytics` from 2.9.9 to 3.0.7\n\nUpdates `androidx.core:core-ktx` from 1.12.0 to 1.19.0\n\nUpdates `androidx.lifecycle:lifecycle-runtime-ktx` from 2.7.0 to 2.11.0\n\nUpdates `androidx.activity:activity-compose` from 1.8.2 to 1.13.0\n\nUpdates `androidx.compose:compose-bom` from 2023.10.01 to 2026.06.01\n\nUpdates `com.google.android.material:material` from 1.11.0 to 1.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/material-components/material-components-android/releases\"\u003ecom.google.android.material:material's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.14.0\u003c/h2\u003e\n\u003ch1\u003eNew in 1.14.0!\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eExpressive Themes (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/getting-started.md#material3expressive-themes\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Lists (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/List.md\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Button Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/CommonButton.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Icon Button Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/IconButton.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Button Group Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/ButtonGroup.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive FAB Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/FloatingActionButton.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Top App Bar Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/TopAppBar.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Navigation Bar (BottomNavigationView) Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/BottomNavigation.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Navigation Rail Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/NavigationRail.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Search Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/Search.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Progress Indicator Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/ProgressIndicator.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Slider Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/Slider.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEmphasized Typescale (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/theming/Typography.md#emphasized-scale\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImportant\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRequired \u003ccode\u003eminSdkVersion\u003c/code\u003e is now 23 or higher, for Material and \u003ca href=\"https://developer.android.com/jetpack/androidx/versions#version-table\"\u003eAndroidX\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eLibrary is now built with Android Gradle Plugin (AGP) 8.11.1 and Gradle 8.13.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDependency Updates\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eDependency\u003c/th\u003e\n\u003cth\u003ePrevious version\u003c/th\u003e\n\u003cth\u003eNew version\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.constraintlayout:constraintlayout\u003c/td\u003e\n\u003ctd\u003e2.1.0\u003c/td\u003e\n\u003ctd\u003e2.2.1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.core:core\u003c/td\u003e\n\u003ctd\u003e1.6.0\u003c/td\u003e\n\u003ctd\u003e1.16.0\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.customview:customview\u003c/td\u003e\n\u003ctd\u003eN/A\u003c/td\u003e\n\u003ctd\u003e1.2.0\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ecom.android.tools.build:gradle\u003c/td\u003e\n\u003ctd\u003e8.7.3\u003c/td\u003e\n\u003ctd\u003e8.11.1\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eLibrary Updates\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eAppBar\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eFixed the bug that setBackground will reset the internal MaterialShapeDrawable for lift-on-scroll feature. (1adc50110ed6491661f89aa535355b1480fac73a)\u003c/li\u003e\n\u003cli\u003eAdd support for navigation button with circle background (015e0534e1a6205224097f258102f913832f99ed)\u003c/li\u003e\n\u003cli\u003eImprove keyboard navigation in TopAppBar catalog demos (98a73a61d272d3e38ee87dd4b322f7787c374a9c)\u003c/li\u003e\n\u003cli\u003eRemoved special key shortcut and keyboard navigation cluster for top app bar for correct keyboard navigation a11y. (ee52adbf051f744f2345ec5b7f4ab4df3b101d4d)\u003c/li\u003e\n\u003cli\u003eUpdated ripple color on actions in M3 toolbar. (3b971c9fe9d6ae9a175d96a448a2e740fa97996f)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBottomAppBar\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eRemove special key shortcut and keyboard navigation cluster for bottom app bar for correct keyboard navigation a11y. (5c73d7a9284fb8e8409452bb95751bf70912acfd)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBottomNavigationView\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eFix navigation item layout in non-compact windows (78189012dada1fae4516eaccab7b8f75c481aa73)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBottomSheet\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecated enableEdgeToEdge for bottom sheet dialogs on API 35+. (603f1ef9d5223fc06fa432c4175473eda2138330)\u003c/li\u003e\n\u003cli\u003ePrevent ACTION_DOWN events on the BottomSheetHandleDragView from setting touchingScrollChild to true. (af7f254bf660704368d46e630d34a81c479fa1c7)\u003c/li\u003e\n\u003cli\u003eFixed keyboard animation on Android 14 (a0b4dfa8769f98851efe97569c900f75eb0d5ef2)\u003c/li\u003e\n\u003cli\u003eFixed crash when protections are set before setContentView is called (d2119098489f6f6b55d77f2c7966b8ddf16c90ed)\u003c/li\u003e\n\u003cli\u003eAdded half-expanded state description for accessibility (95e7b452088d88005982a3f29ec212ef7ee8696d)\u003c/li\u003e\n\u003cli\u003eAdded support for androidx.core ProtectionLayout API and update dependency to 1.16 (e7f9f639d2f4a3b9f619ce704df82cbb14e49222)\u003c/li\u003e\n\u003cli\u003eMake handle respond to keyboard input (1ee07687af2c4c84f515e45c1b809d65aeecbbf4)\u003c/li\u003e\n\u003cli\u003eDelete duplicate \u0026quot;Handling insets and fullscreen\u0026quot; section (5e7e8238f7be448af6b4db4b2ad6128737c0bc50)\u003c/li\u003e\n\u003cli\u003eAdded support for Nested Scrolling with multiple nested scroll children. (4e4e8f3388beb7e82a87cb67142aa34444a79740)\u003c/li\u003e\n\u003cli\u003eMake behavior_draggableOnNestedScroll public (a67afdff0d207239d0f427a37e44074936db3166)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/66c334b7946dabf33adfe1a2b7cad6bcaa4ea3ad\"\u003e\u003ccode\u003e66c334b\u003c/code\u003e\u003c/a\u003e [Release] Update library version to 1.14.0 stable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/12e57b5143609a96de8516426336bcf3b3e321f7\"\u003e\u003ccode\u003e12e57b5\u003c/code\u003e\u003c/a\u003e [Focus Rings] Add setters and getters for stroke widths and inner inset\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/f4652d6af613395835b17ce329ceb03f43fc4a84\"\u003e\u003ccode\u003ef4652d6\u003c/code\u003e\u003c/a\u003e [NavigationView] Improve focus saving when opening NavigationView\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/14b9ac97b0863fa7fea6f59954441cea9f4e7e14\"\u003e\u003ccode\u003e14b9ac9\u003c/code\u003e\u003c/a\u003e [Focus Rings] Add setters for outer and inner stroke colors and for refreshin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/d6de1da0f5532090d8b7de697e13c180f56e11e1\"\u003e\u003ccode\u003ed6de1da\u003c/code\u003e\u003c/a\u003e [A11y][BottomSheet] Auto-expand when a focused view is off-screen in non-touc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/41cfb65e8393cd7ff0f9dc082b400c852405e9cc\"\u003e\u003ccode\u003e41cfb65\u003c/code\u003e\u003c/a\u003e [A11y][NavigationView] Request and restore focus when opened and closed in Dr...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/8f63e9485bf6da5a9a0aaefa4bbf26c8ec1364a5\"\u003e\u003ccode\u003e8f63e94\u003c/code\u003e\u003c/a\u003e [Catalog] Fix lift on scroll glitchiness in All Components demo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/80aa0cc0233af0e81a846271de0d5218beeceeaf\"\u003e\u003ccode\u003e80aa0cc\u003c/code\u003e\u003c/a\u003e [Release] Update library version to 1.14.0-rc01\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/fd44c9d58699e18de06ca5de8687fe79f390568b\"\u003e\u003ccode\u003efd44c9d\u003c/code\u003e\u003c/a\u003e [Button] [SplitButton] Fix inset and optical centering issue for SplitButton ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/e6ae416e7fc791d733eedde96ffea66d313ef231\"\u003e\u003ccode\u003ee6ae416\u003c/code\u003e\u003c/a\u003e [SearchView] Make sure IME is hidden when EditText loses focus\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/material-components/material-components-android/compare/1.11.0...1.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger:hilt-android` from 2.50 to 2.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5203\"\u003e#5203\u003c/a\u003e: Fixes regression in Dagger 2.60 where the Hilt compiler options (like fastInit) failed to propagate to the Hilt aggregation compilation tasks. (e181a0d88)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5204\"\u003e#5204\u003c/a\u003e: Fixes \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e import error by removing the annotation from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e (3f2dd8fba)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7a89b6cea7d47167f2d5f9912f61f3fee333d88\"\u003e\u003ccode\u003ef7a89b6\u003c/code\u003e\u003c/a\u003e 2.60.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/76780171d7c3ff0dc0240644f703cf181fd8b8e8\"\u003e\u003ccode\u003e7678017\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/974fe294b70f2a3ea43731a4f5b95e75c2bcb38d\"\u003e\u003ccode\u003e974fe29\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/823484c63fbdcc61d413bba40d164272f22e51a8\"\u003e\u003ccode\u003e823484c\u003c/code\u003e\u003c/a\u003e Make Android*InjectionTest$ApplicationReturnsNull public.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/c26f8d7be8ff1856667ddb3b070a410b3aeabfcc\"\u003e\u003ccode\u003ec26f8d7\u003c/code\u003e\u003c/a\u003e Add test for \u003ccode\u003e@AssistedFactory\u003c/code\u003e compilations without compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e181a0d884a3f14c8a7967af5d45f0a8c9a600ac\"\u003e\u003ccode\u003ee181a0d\u003c/code\u003e\u003c/a\u003e Fix Hilt compiler option propagation to Hilt aggregation tasks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/812e2f337718a79dd45ab8488398b5a893291ae8\"\u003e\u003ccode\u003e812e2f3\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3f2dd8fbab0a71ec09dc4f9dc543d89ec108c7f0\"\u003e\u003ccode\u003e3f2dd8f\u003c/code\u003e\u003c/a\u003e Delete \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e90e102c73d67ccb3aaad1835391e6cee2a17b42\"\u003e\u003ccode\u003ee90e102\u003c/code\u003e\u003c/a\u003e Update Dagger version in yml config and REAME.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.50...dagger-2.60.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger:hilt-compiler` from 2.50 to 2.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5203\"\u003e#5203\u003c/a\u003e: Fixes regression in Dagger 2.60 where the Hilt compiler options (like fastInit) failed to propagate to the Hilt aggregation compilation tasks. (e181a0d88)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5204\"\u003e#5204\u003c/a\u003e: Fixes \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e import error by removing the annotation from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e (3f2dd8fba)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7a89b6cea7d47167f2d5f9912f61f3fee333d88\"\u003e\u003ccode\u003ef7a89b6\u003c/code\u003e\u003c/a\u003e 2.60.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/76780171d7c3ff0dc0240644f703cf181fd8b8e8\"\u003e\u003ccode\u003e7678017\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/974fe294b70f2a3ea43731a4f5b95e75c2bcb38d\"\u003e\u003ccode\u003e974fe29\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/823484c63fbdcc61d413bba40d164272f22e51a8\"\u003e\u003ccode\u003e823484c\u003c/code\u003e\u003c/a\u003e Make Android*InjectionTest$ApplicationReturnsNull public.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/c26f8d7be8ff1856667ddb3b070a410b3aeabfcc\"\u003e\u003ccode\u003ec26f8d7\u003c/code\u003e\u003c/a\u003e Add test for \u003ccode\u003e@AssistedFactory\u003c/code\u003e compilations without compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e181a0d884a3f14c8a7967af5d45f0a8c9a600ac\"\u003e\u003ccode\u003ee181a0d\u003c/code\u003e\u003c/a\u003e Fix Hilt compiler option propagation to Hilt aggregation tasks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/812e2f337718a79dd45ab8488398b5a893291ae8\"\u003e\u003ccode\u003e812e2f3\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3f2dd8fbab0a71ec09dc4f9dc543d89ec108c7f0\"\u003e\u003ccode\u003e3f2dd8f\u003c/code\u003e\u003c/a\u003e Delete \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e90e102c73d67ccb3aaad1835391e6cee2a17b42\"\u003e\u003ccode\u003ee90e102\u003c/code\u003e\u003c/a\u003e Update Dagger version in yml config and REAME.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.50...dagger-2.60.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.hilt:hilt-navigation-compose` from 1.1.0 to 1.4.0\n\nUpdates `androidx.hilt:hilt-work` from 1.1.0 to 1.4.0\n\nUpdates `androidx.hilt:hilt-compiler` from 1.1.0 to 1.4.0\n\nUpdates `com.squareup.retrofit2:retrofit` from 2.11.0 to 3.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/square/retrofit/releases\"\u003ecom.squareup.retrofit2:retrofit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eChanged\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to OkHttp 4.12 (from 3.14).\u003c/p\u003e\n\u003cp\u003eThis is the version of OkHttp that is written in Kotlin, and as a result Retrofit now has a transitive Kotlin dependency. However, this is also the \u003cem\u003esupported\u003c/em\u003e version of OkHttp whereas the previous version was out of support for nearly 4 years.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNote: The 3.x versions of Retrofit maintain forward binary-compatibility with the 2.x versions.\nThis means libraries compiled against 2.x can still be used with the 3.x versions.\u003c/p\u003e\n\u003ch2\u003e2.12.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFirst-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using \u003ccode\u003eCall.enqueue\u003c/code\u003e directly.\u003c/p\u003e\n\u003cp\u003eThe following converters support this feature through a new \u003ccode\u003ewithStreaming()\u003c/code\u003e factory method:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGson\u003c/li\u003e\n\u003cli\u003eJackson\u003c/li\u003e\n\u003cli\u003eMoshi\u003c/li\u003e\n\u003cli\u003eProtobuf\u003c/li\u003e\n\u003cli\u003eWire\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrimitive types used with \u003ccode\u003e@Tag\u003c/code\u003e now work by storing the value boxed with the boxed class as the key.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/lysine-dev/retrofit/blob/trunk/CHANGELOG.md\"\u003ecom.squareup.retrofit2:retrofit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/releases/tag/3.0.0\"\u003e3.0.0\u003c/a\u003e - 2025-05-15\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eChanged\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to OkHttp 4.12 (from 3.14).\u003c/p\u003e\n\u003cp\u003eThis is the version of OkHttp that is written in Kotlin, and as a result Retrofit now has a transitive Kotlin dependency. However, this is also the \u003cem\u003esupported\u003c/em\u003e version of OkHttp whereas the previous version was out of support for nearly 4 years.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNote: The 3.x versions of Retrofit maintain forward binary-compatibility with the 2.x versions.\nThis means libraries compiled against 2.x can still be used with the 3.x versions.\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/releases/tag/2.12.0\"\u003e2.12.0\u003c/a\u003e - 2025-05-15\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFirst-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using \u003ccode\u003eCall.enqueue\u003c/code\u003e directly.\u003c/p\u003e\n\u003cp\u003eThe following converters support this feature through a new \u003ccode\u003ewithStreaming()\u003c/code\u003e factory method:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGson\u003c/li\u003e\n\u003cli\u003eJackson\u003c/li\u003e\n\u003cli\u003eMoshi\u003c/li\u003e\n\u003cli\u003eProtobuf\u003c/li\u003e\n\u003cli\u003eWire\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrimitive types used with \u003ccode\u003e@Tag\u003c/code\u003e now work by storing the value boxed with the boxed class as the key.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/3ab0f1a2c18666adb79ebf4eacef6fbc40d3e801\"\u003e\u003ccode\u003e3ab0f1a\u003c/code\u003e\u003c/a\u003e Prepare version 3.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/e5c02d08f3777ce00a31fb37d77f15eecdf4e383\"\u003e\u003ccode\u003ee5c02d0\u003c/code\u003e\u003c/a\u003e Commit 2.x docs (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4378\"\u003e#4378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/5bc3f183cfa24ab1f382c2029dc82ee292caef1b\"\u003e\u003ccode\u003e5bc3f18\u003c/code\u003e\u003c/a\u003e Fix links on the proudction site (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4377\"\u003e#4377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/7c3b2290bd6cd985ebaa93bfc183abd1bf04b977\"\u003e\u003ccode\u003e7c3b229\u003c/code\u003e\u003c/a\u003e Remove compileOnly stdlib dependency (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4376\"\u003e#4376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/84185470adc33a0f1b3d8766f2d722c770e2e89a\"\u003e\u003ccode\u003e8418547\u003c/code\u003e\u003c/a\u003e Update okhttp monorepo to v4 (major) (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4375\"\u003e#4375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/06216a3b24ad828e511fd25b4858a1ed104c8719\"\u003e\u003ccode\u003e06216a3\u003c/code\u003e\u003c/a\u003e Try to fix removal of latest dir during release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/1697bdc4913a34871125c96c7be16b688c6e82bc\"\u003e\u003ccode\u003e1697bdc\u003c/code\u003e\u003c/a\u003e Prepare next development version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/5a6ce364ad5208999a8e0847de760f97d39ecffe\"\u003e\u003ccode\u003e5a6ce36\u003c/code\u003e\u003c/a\u003e Prepare version 2.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/4fb8aed0cc6ebcc581d128922768867ae14e85c1\"\u003e\u003ccode\u003e4fb8aed\u003c/code\u003e\u003c/a\u003e Fix artifact name (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4372\"\u003e#4372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/bf11ef4cfaa3c50967f79e87b3e27f33670b42bc\"\u003e\u003ccode\u003ebf11ef4\u003c/code\u003e\u003c/a\u003e Dedicated website build, final status job (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/square/retrofit/compare/2.11.0...3.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.squareup.retrofit2:converter-gson` from 2.11.0 to 3.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/square/retrofit/releases\"\u003ecom.squareup.retrofit2:converter-gson's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eChanged\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to OkHttp 4.12 (from 3.14).\u003c/p\u003e\n\u003cp\u003eThis is the version of OkHttp that is written in Kotlin, and as a result Retrofit now has a transitive Kotlin dependency. However, this is also the \u003cem\u003esupported\u003c/em\u003e version of OkHttp whereas the previous version was out of support for nearly 4 years.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNote: The 3.x versions of Retrofit maintain forward binary-compatibility with the 2.x versions.\nThis means libraries compiled against 2.x can still be used with the 3.x versions.\u003c/p\u003e\n\u003ch2\u003e2.12.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFirst-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using \u003ccode\u003eCall.enqueue\u003c/code\u003e directly.\u003c/p\u003e\n\u003cp\u003eThe following converters support this feature through a new \u003ccode\u003ewithStreaming()\u003c/code\u003e factory method:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGson\u003c/li\u003e\n\u003cli\u003eJackson\u003c/li\u003e\n\u003cli\u003eMoshi\u003c/li\u003e\n\u003cli\u003eProtobuf\u003c/li\u003e\n\u003cli\u003eWire\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrimitive types used with \u003ccode\u003e@Tag\u003c/code\u003e now work by storing the value boxed with the boxed class as the key.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/lysine-dev/retrofit/blob/trunk/CHANGELOG.md\"\u003ecom.squareup.retrofit2:converter-gson's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/releases/tag/3.0.0\"\u003e3.0.0\u003c/a\u003e - 2025-05-15\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eChanged\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to OkHttp 4.12 (from 3.14).\u003c/p\u003e\n\u003cp\u003eThis is the version of OkHttp that is written in Kotlin, and as a result Retrofit now has a transitive Kotlin dependency. However, this is also the \u003cem\u003esupported\u003c/em\u003e version of OkHttp whereas the previous version was out of support for nearly 4 years.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNote: The 3.x versions of Retrofit maintain forward binary-compatibility with the 2.x versions.\nThis means libraries compiled against 2.x can still be used with the 3.x versions.\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/releases/tag/2.12.0\"\u003e2.12.0\u003c/a\u003e - 2025-05-15\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFirst-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using \u003ccode\u003eCall.enqueue\u003c/code\u003e directly.\u003c/p\u003e\n\u003cp\u003eThe following converters support this feature through a new \u003ccode\u003ewithStreaming()\u003c/code\u003e factory method:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGson\u003c/li\u003e\n\u003cli\u003eJackson\u003c/li\u003e\n\u003cli\u003eMoshi\u003c/li\u003e\n\u003cli\u003eProtobuf\u003c/li\u003e\n\u003cli\u003eWire\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrimitive types used with \u003ccode\u003e@Tag\u003c/code\u003e now work by storing the value boxed with the boxed class as the key.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/3ab0f1a2c18666adb79ebf4eacef6fbc40d3e801\"\u003e\u003ccode\u003e3ab0f1a\u003c/code\u003e\u003c/a\u003e Prepare version 3.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/e5c02d08f3777ce00a31fb37d77f15eecdf4e383\"\u003e\u003ccode\u003ee5c02d0\u003c/code\u003e\u003c/a\u003e Commit 2.x docs (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4378\"\u003e#4378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/5bc3f183cfa24ab1f382c2029dc82ee292caef1b\"\u003e\u003ccode\u003e5bc3f18\u003c/code\u003e\u003c/a\u003e Fix links on the proudction site (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4377\"\u003e#4377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/7c3b2290bd6cd985ebaa93bfc183abd1bf04b977\"\u003e\u003ccode\u003e7c3b229\u003c/code\u003e\u003c/a\u003e Remove compileOnly stdlib dependency (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4376\"\u003e#4376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/84185470adc33a0f1b3d8766f2d722c770e2e89a\"\u003e\u003ccode\u003e8418547\u003c/code\u003e\u003c/a\u003e Update okhttp monorepo to v4 (major) (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4375\"\u003e#4375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/06216a3b24ad828e511fd25b4858a1ed104c8719\"\u003e\u003ccode\u003e06216a3\u003c/code\u003e\u003c/a\u003e Try to fix removal of latest dir during release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/1697bdc4913a34871125c96c7be16b688c6e82bc\"\u003e\u003ccode\u003e1697bdc\u003c/code\u003e\u003c/a\u003e Prepare next development version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/5a6ce364ad5208999a8e0847de760f97d39ecffe\"\u003e\u003ccode\u003e5a6ce36\u003c/code\u003e\u003c/a\u003e Prepare version 2.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/4fb8aed0cc6ebcc581d128922768867ae14e85c1\"\u003e\u003ccode\u003e4fb8aed\u003c/code\u003e\u003c/a\u003e Fix artifact name (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4372\"\u003e#4372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/bf11ef4cfaa3c50967f79e87b3e27f33670b42bc\"\u003e\u003ccode\u003ebf11ef4\u003c/code\u003e\u003c/a\u003e Dedicated website build, final status job (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/square/retrofit/compare/2.11.0...3.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.squareup.okhttp3:logging-interceptor` from 4.12.0 to 5.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/lysine-dev/okhttp/blob/main/CHANGELOG.md\"\u003ecom.squareup.okhttp3:logging-interceptor's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 5.4.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-06-08\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNew: Add superpowers to interceptors. Interceptors can now override anything settable on\n\u003ccode\u003eOkHttpClient.Builder\u003c/code\u003e, such as the cache, connection pool, socket factory, and DNS. We expect\nthis will allow most users to use interceptors everywhere, insted of mixing and matching\ninterceptors with custom \u003ccode\u003eCall.Factory\u003c/code\u003e wrappers.\u003c/li\u003e\n\u003cli\u003eFix: Limit each HTTP/2 response to 256 KiB of total headers.\u003c/li\u003e\n\u003cli\u003eUpgrade: [kotlinx.coroutines 1.11.0][coroutines_1_11_0]. This is used by the optional\n\u003ccode\u003eokhttp-coroutines\u003c/code\u003e artifact.\u003c/li\u003e\n\u003cli\u003eUpgrade: [GraalVM 25.0.3][graalvm_25].\u003c/li\u003e\n\u003cli\u003eUpgrade: [Okio 3.17.0][okio_3_17_0].\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 5.3.2\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-11-18\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: Don't delay triggering timeouts. In Okio 3.16.0 we introduced a regression that caused\ntimeouts to fire later than they were supposed to.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade: [Okio 3.16.4][okio_3_16_4].\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 5.3.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-11-16\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eThis release is the same as 5.3.0. Okio 3.16.3 didn't have a necessary fix!\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade: [Okio 3.16.3][okio_3_16_3].\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 5.3.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-10-30\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNew: Add tags to \u003ccode\u003eCall\u003c/code\u003e, including computable tags. Use this to attach application-specific\nmetadata to a \u003ccode\u003eCall\u003c/code\u003e in an \u003ccode\u003eEventListener\u003c/code\u003e or \u003ccode\u003eInterceptor\u003c/code\u003e. The tag can be read in any other\n\u003ccode\u003eEventListener\u003c/code\u003e or \u003ccode\u003eInterceptor\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"kotlin\"\u003e\u003ccode\u003e  override fun intercept(chain: Interceptor.Chain): Response {\n    chain.call().tag(MyAnalyticsTag::class) {\n      MyAnalyticsTag(...)\n    }\n\u003cpre\u003e\u003ccode\u003ereturn chain.proceed(chain.request())\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e}\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/61423f472da24e0ccc42b6a2c0863fb27932fea5\"\u003e\u003ccode\u003e61423f4\u003c/code\u003e\u003c/a\u003e Prepare for release 5.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/d7e6effcb6852ca848b5f497032546b98b0a6370\"\u003e\u003ccode\u003ed7e6eff\u003c/code\u003e\u003c/a\u003e Update eclipse.osgi to v3.24.200 (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9480\"\u003e#9480\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/7a350986e3231a7b81cbfcc6e3c185327033422b\"\u003e\u003ccode\u003e7a35098\u003c/code\u003e\u003c/a\u003e Update bnd to v7.3.0 (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9475\"\u003e#9475\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/0c5a45b1174b8f735cc251eb19faaed87b65d868\"\u003e\u003ccode\u003e0c5a45b\u003c/code\u003e\u003c/a\u003e Update dependency com.puppycrawl.tools:checkstyle to v13.5.0 (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9468\"\u003e#9468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/113ad17f70af6984a1a8b4d46024118e5409c44b\"\u003e\u003ccode\u003e113ad17\u003c/code\u003e\u003c/a\u003e Update dependency macos to v26 (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9457\"\u003e#9457\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/84f601af03d047eef3f4b2f0ca6b6f72303dcea1\"\u003e\u003ccode\u003e84f601a\u003c/code\u003e\u003c/a\u003e Update shadow.plugin to v9.4.2 (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9466\"\u003e#9466\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/7d463f4bcfca91e4466037f2c65c7c700545d64c\"\u003e\u003ccode\u003e7d463f4\u003c/code\u003e\u003c/a\u003e Update spotless.plugin to v8.6.0 (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9464\"\u003e#9464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/3bf00f52921a0727bd18997cd92112dd2e582ed7\"\u003e\u003ccode\u003e3bf00f5\u003c/code\u003e\u003c/a\u003e Update plugin com.diffplug.spotless to v8.6.0 (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9463\"\u003e#9463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/cfc45a3f146d2389797a3d51d405e9118bed56c9\"\u003e\u003ccode\u003ecfc45a3\u003c/code\u003e\u003c/a\u003e Update spotless.plugin to v8.5.1 (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9456\"\u003e#9456\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/81c5006e336c1cb67870694e38707e2c1c44fb34\"\u003e\u003ccode\u003e81c5006\u003c/code\u003e\u003c/a\u003e Apply gradle lint correctly (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9459\"\u003e#9459\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/square/okhttp/compare/parent-4.12.0...parent-5.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.room:room-runtime` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `io.coil-kt:coil-compose` from 2.5.0 to 2.7.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coil-kt/coil/releases\"\u003eio.coil-kt:coil-compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.7.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#270---july-17-2024\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e2.6.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#260---february-23-2024\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md\"\u003eio.coil-kt:coil-compose's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[2.7.0] - July 17, 2024\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSlightly optimize internal coroutines usage to improve the performance of \u003ccode\u003eImageLoader.execute\u003c/code\u003e, \u003ccode\u003eAsyncImage\u003c/code\u003e, \u003ccode\u003eSubcomposeAsyncImage\u003c/code\u003e, and \u003ccode\u003erememberAsyncImagePainter\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/2205\"\u003e#2205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix duplicate network calls for chunked responses. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/2363\"\u003e#2363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Kotlin to 2.0.0.\u003c/li\u003e\n\u003cli\u003eUpdate Compose UI to 1.6.8.\u003c/li\u003e\n\u003cli\u003eUpdate Okio to 3.9.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.0.0-alpha08] - July 8, 2024\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING\u003c/strong\u003e: Rename \u003ccode\u003eImageRequest\u003c/code\u003e and \u003ccode\u003eImageLoader\u003c/code\u003e \u003ccode\u003edispatcher\u003c/code\u003e methods to \u003ccode\u003ecoroutineContext\u003c/code\u003e. For instance, \u003ccode\u003eImageRequest.Builder.dispatcher\u003c/code\u003e is now \u003ccode\u003eImageRequest.Builder.coroutineContext\u003c/code\u003e. This was renamed as the method now accepts any \u003ccode\u003eCoroutineContext\u003c/code\u003e and no longer requires a \u003ccode\u003eDispatcher\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eFix: Fix \u003ccode\u003eIllegalStateException: Reading a state that was created after the snapshot was taken or in a snapshot that has not yet been applied\u003c/code\u003e which could occur due to a race condition.\n\u003cul\u003e\n\u003cli\u003eNOTE: This reintroduces a soft dependency on \u003ccode\u003eDispatchers.Main.immediate\u003c/code\u003e. As a result you should re-add a dependency on \u003ca href=\"https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-swing/\"\u003e\u003ccode\u003ekotlinx-coroutines-swing\u003c/code\u003e\u003c/a\u003e on JVM. If it's not imported then \u003ccode\u003eImageRequest\u003c/code\u003es won't be dispatched immediately and will have one frame of delay before setting the \u003ccode\u003eImageRequest.placeholder\u003c/code\u003e or resolving from the memory cache.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.0.0-alpha07] - June 26, 2024\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING\u003c/strong\u003e: \u003ccode\u003eAsyncImagePainter\u003c/code\u003e no longer waits for \u003ccode\u003eonDraw\u003c/code\u003e by default and instead uses \u003ccode\u003eSize.ORIGINAL\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003eThis fixes \u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/1910\"\u003ecompatibility issues with Roborazzi/Paparazzi\u003c/a\u003e and overall improves test reliability.\u003c/li\u003e\n\u003cli\u003eTo revert back to waiting for \u003ccode\u003eonDraw\u003c/code\u003e, set \u003ccode\u003eDrawScopeSizeResolver\u003c/code\u003e as your \u003ccode\u003eImageRequest.sizeResolver\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING\u003c/strong\u003e: Refactor the multiplatform \u003ccode\u003eImage\u003c/code\u003e API. Notably, \u003ccode\u003easCoilImage\u003c/code\u003e has been renamed to \u003ccode\u003easImage\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING\u003c/strong\u003e: \u003ccode\u003eAsyncImagePainter.state\u003c/code\u003e has been changed to \u003ccode\u003eStateFlow\u0026lt;AsyncImagePainter.State\u0026gt;\u003c/code\u003e. Use \u003ccode\u003ecollectAsState\u003c/code\u003e to observe its value. This improves performance.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING\u003c/strong\u003e: \u003ccode\u003eAsyncImagePainter.imageLoader\u003c/code\u003e and \u003ccode\u003eAsyncImagePainter.request\u003c/code\u003e have been combined into \u003ccode\u003eStateFlow\u0026lt;AsyncImagePainter.Inputs\u0026gt;\u003c/code\u003e. Use \u003ccode\u003ecollectAsState\u003c/code\u003e to observe its value. This improves performance.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING\u003c/strong\u003e: Remove support for \u003ccode\u003eandroid.resource://example.package.name/drawable/image\u003c/code\u003e URIs as it prevents resource shrinking optimizations.\n\u003cul\u003e\n\u003cli\u003eIf you still needs its functionality you can \u003ca href=\"https://github.com/coil-kt/coil/blob/main/coil-core/src/androidInstrumentedTest/kotlin/coil3/map/ResourceUriMapper.kt\"\u003emanually include \u003ccode\u003eResourceUriMapper\u003c/code\u003e in your component registry\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNew\u003c/strong\u003e: Introduce \u003ccode\u003eAsyncImagePreviewHandler\u003c/code\u003e to support controlling \u003ccode\u003eAsyncImagePainter\u003c/code\u003e's preview rendering behavior.\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003eLocalAsyncImagePreviewHandler\u003c/code\u003e to override the preview behavior.\u003c/li\u003e\n\u003cli\u003eAs part of this change and other \u003ccode\u003ecoil-compose\u003c/code\u003e improvements, \u003ccode\u003eAsyncImagePainter\u003c/code\u003e now attempts to execute execute the \u003ccode\u003eImageRequest\u003c/code\u003e by default instead of defaulting to displaying \u003ccode\u003eImageRequest.placeholder\u003c/code\u003e. \u003ca href=\"https://developer.android.com/develop/ui/compose/tooling/previews#preview-limitations\"\u003eRequests that use the network or files are expected to fail\u003c/a\u003e in the preview environment, however Android resources should work.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNew\u003c/strong\u003e: Support extracting video image by frame index. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/2183\"\u003e#2183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNew\u003c/strong\u003e: Support passing \u003ccode\u003eCoroutineContext\u003c/code\u003e to any \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e methods. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/2241\"\u003e#2241\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNew\u003c/strong\u003e: Support the weak reference memory cache on JS and WASM JS.\u003c/li\u003e\n\u003cli\u003eDon't dispatch to \u003ccode\u003eDispatchers.Main.immediate\u003c/code\u003e in Compose. As a side-effect, \u003ca href=\"https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-swing/\"\u003e\u003ccode\u003ekotlinx-coroutines-swing\u003c/code\u003e\u003c/a\u003e no longer needs to be imported on JVM.\u003c/li\u003e\n\u003cli\u003eDon't call \u003ccode\u003easync\u003c/code\u003e and create a disposable in Compose to improve performance (thanks \u003ca href=\"https://github.com/mlykotom\"\u003e\u003ccode\u003e@​mlykotom\u003c/code\u003e\u003c/a\u003e!). (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/2205\"\u003e#2205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix passing global \u003ccode\u003eImageLoader\u003c/code\u003e extras to \u003ccode\u003eOptions\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/2223\"\u003e#2223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecrossfade(false)\u003c/code\u003e not working on non-Android targets.\u003c/li\u003e\n\u003cli\u003eFix VP8X feature flags byte offset (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/2199\"\u003e#2199\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eConvert \u003ccode\u003eSvgDecoder\u003c/code\u003e on non-Android targets to render to a bitmap instead of render the image at draw-time. This improves performance.\n\u003cul\u003e\n\u003cli\u003eThis behavior can be controlled using \u003ccode\u003eSvgDecoder(renderToBitmap)\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eMove \u003ccode\u003eScaleDrawable\u003c/code\u003e from ...\n\n_Description has been truncated_","html_url":"https://github.com/pranaypr6/Moment/pull/25","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/pranaypr6%2FMoment/issues/25","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/25/packages"},{"uuid":"4809340163","node_id":"PR_kwDOStSw1c7t33T8","number":56,"state":"closed","title":"Bump the gradle group in /android with 22 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-07-04T14:57:46.000Z","author_association":null,"state_reason":null,"created_at":"2026-07-04T14:29:08.000Z","updated_at":"2026-07-04T14:58:18.000Z","time_to_close":1718,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"gradle","update_count":22,"packages":[{"name":"gradle-wrapper","old_version":"8.14.3","new_version":"8.14.5","repository_url":"https://github.com/gradle/gradle"},{"name":"androidx.core:core-ktx","old_version":"1.13.1","new_version":"1.19.0"},{"name":"androidx.lifecycle:lifecycle-runtime-ktx","old_version":"2.8.0","new_version":"2.11.0"},{"name":"androidx.lifecycle:lifecycle-viewmodel-compose","old_version":"2.8.0","new_version":"2.11.0"},{"name":"androidx.activity:activity-compose","old_version":"1.9.0","new_version":"1.13.0"},{"name":"androidx.navigation:navigation-compose","old_version":"2.7.7","new_version":"2.9.8"},{"name":"com.google.dagger:hilt-android","old_version":"2.51.1","new_version":"2.60","repository_url":"https://github.com/google/dagger"},{"name":"com.google.dagger:hilt-compiler","old_version":"2.51.1","new_version":"2.60","repository_url":"https://github.com/google/dagger"},{"name":"com.google.dagger.hilt.android","old_version":"2.51.1","new_version":"2.60","repository_url":"https://github.com/google/dagger"},{"name":"androidx.hilt:hilt-navigation-compose","old_version":"1.2.0","new_version":"1.4.0"},{"name":"androidx.room:room-runtime","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-ktx","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-compiler","old_version":"2.6.1","new_version":"2.8.4"},{"name":"com.squareup.retrofit2:retrofit","old_version":"2.11.0","new_version":"2.12.0","repository_url":"https://github.com/square/retrofit"},{"name":"androidx.datastore:datastore-preferences","old_version":"1.1.1","new_version":"1.2.1"},{"name":"nl.dionsegijn:konfetti-compose","old_version":"2.0.4","new_version":"2.0.5","repository_url":"https://github.com/DanielMartinus/Konfetti"},{"name":"androidx.test.ext:junit","old_version":"1.1.5","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.5.1","new_version":"3.7.0"},{"name":"org.robolectric:robolectric","old_version":"4.14.1","new_version":"4.16.1","repository_url":"https://github.com/robolectric/robolectric"},{"name":"io.github.takahirom.roborazzi:roborazzi","old_version":"1.32.0","new_version":"1.65.0","repository_url":"https://github.com/takahirom/roborazzi"},{"name":"io.github.takahirom.roborazzi:roborazzi-compose","old_version":"1.32.0","new_version":"1.65.0","repository_url":"https://github.com/takahirom/roborazzi"},{"name":"io.github.takahirom.roborazzi:roborazzi-junit-rule","old_version":"1.32.0","new_version":"1.65.0","repository_url":"https://github.com/takahirom/roborazzi"}],"path":"/android","ecosystem":"maven"},"body":"[//]: # (dependabot-start)\n⚠️  **Dependabot is rebasing this PR** ⚠️ \n\nRebasing might not happen immediately, so don't worry if this takes some time.\n\nNote: if you make any changes to this PR yourself, they will take precedence over the rebase.\n\n---\n\n[//]: # (dependabot-end)\n\nBumps the gradle group in /android with 22 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `8.14.3` | `8.14.5` |\n| androidx.core:core-ktx | `1.13.1` | `1.19.0` |\n| androidx.lifecycle:lifecycle-runtime-ktx | `2.8.0` | `2.11.0` |\n| androidx.lifecycle:lifecycle-viewmodel-compose | `2.8.0` | `2.11.0` |\n| androidx.activity:activity-compose | `1.9.0` | `1.13.0` |\n| androidx.navigation:navigation-compose | `2.7.7` | `2.9.8` |\n| [com.google.dagger:hilt-android](https://github.com/google/dagger) | `2.51.1` | `2.60` |\n| [com.google.dagger:hilt-compiler](https://github.com/google/dagger) | `2.51.1` | `2.60` |\n| [com.google.dagger.hilt.android](https://github.com/google/dagger) | `2.51.1` | `2.60` |\n| androidx.hilt:hilt-navigation-compose | `1.2.0` | `1.4.0` |\n| androidx.room:room-runtime | `2.6.1` | `2.8.4` |\n| androidx.room:room-ktx | `2.6.1` | `2.8.4` |\n| androidx.room:room-compiler | `2.6.1` | `2.8.4` |\n| [com.squareup.retrofit2:retrofit](https://github.com/square/retrofit) | `2.11.0` | `2.12.0` |\n| androidx.datastore:datastore-preferences | `1.1.1` | `1.2.1` |\n| [nl.dionsegijn:konfetti-compose](https://github.com/DanielMartinus/Konfetti) | `2.0.4` | `2.0.5` |\n| androidx.test.ext:junit | `1.1.5` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.5.1` | `3.7.0` |\n| [org.robolectric:robolectric](https://github.com/robolectric/robolectric) | `4.14.1` | `4.16.1` |\n| [io.github.takahirom.roborazzi:roborazzi](https://github.com/takahirom/roborazzi) | `1.32.0` | `1.65.0` |\n| [io.github.takahirom.roborazzi:roborazzi-compose](https://github.com/takahirom/roborazzi) | `1.32.0` | `1.65.0` |\n| [io.github.takahirom.roborazzi:roborazzi-junit-rule](https://github.com/takahirom/roborazzi) | `1.32.0` | `1.65.0` |\n\nUpdates `gradle-wrapper` from 8.14.3 to 8.14.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gradle/gradle/releases\"\u003egradle-wrapper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.14.5\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 8.14.5.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eJava 24 support\u003c/li\u003e\n\u003cli\u003eGraalVM Native Image toolchain selection\u003c/li\u003e\n\u003cli\u003eEnhancements to test reporting\u003c/li\u003e\n\u003cli\u003eBuild Authoring improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gradle.org/8.14.5/release-notes.html\"\u003eRead the Release Notes\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe would like to thank the following community members for their contributions to this release of Gradle:\n\u003ca href=\"https://github.com/liutikas\"\u003eAurimas\u003c/a\u003e,\n\u003ca href=\"https://github.com/benjamin-bader\"\u003eBen Bader\u003c/a\u003e,\n\u003ca href=\"https://github.com/Vampire\"\u003eBjörn Kautler\u003c/a\u003e,\n\u003ca href=\"https://github.com/chandre92\"\u003echandre92\u003c/a\u003e,\n\u003ca href=\"https://github.com/dlehammer\"\u003eDaniel Hammer\u003c/a\u003e,\n\u003ca href=\"https://github.com/danishnawab\"\u003eDanish Nawab\u003c/a\u003e,\n\u003ca href=\"https://github.com/DreierF\"\u003eFlorian Dreier\u003c/a\u003e,\n\u003ca href=\"https://github.com/Mengmeiivy\"\u003eIvy Chen\u003c/a\u003e,\n\u003ca href=\"https://github.com/jjohannes\"\u003eJendrik Johannes\u003c/a\u003e,\n\u003ca href=\"https://github.com/jimmy1995-gu\"\u003ejimmy1995-gu\u003c/a\u003e,\n\u003ca href=\"https://github.com/vmadalin\"\u003eMadalin Valceleanu\u003c/a\u003e,\n\u003ca href=\"https://github.com/NaMinhyeok\"\u003eNa Minhyeok\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eUpgrade instructions\u003c/h2\u003e\n\u003cp\u003eSwitch your build to use Gradle 8.14.5 by updating your wrapper:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./gradlew wrapper --gradle-version=8.14.5 \u0026amp;\u0026amp; ./gradlew wrapper\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the Gradle \u003ca href=\"https://docs.gradle.org/8.14.5/userguide/upgrading_version_8.html\"\u003e8.x upgrade guide\u003c/a\u003e to learn about deprecations, breaking changes and other considerations when upgrading.\u003c/p\u003e\n\u003cp\u003eFor Java, Groovy, Kotlin and Android compatibility, see the \u003ca href=\"https://docs.gradle.org/8.14.5/userguide/compatibility.html\"\u003efull compatibility notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReporting problems\u003c/h2\u003e\n\u003cp\u003eIf you find a problem with this release, please file a bug on \u003ca href=\"https://github.com/gradle/gradle/issues\"\u003eGitHub Issues\u003c/a\u003e adhering to our issue guidelines.\nIf you're not sure you're encountering a bug, please use the \u003ca href=\"https://discuss.gradle.org/c/help-discuss\"\u003eforum\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe hope you will build happiness with Gradle, and we look forward to your feedback via \u003ca href=\"https://twitter.com/gradle\"\u003eTwitter\u003c/a\u003e or on \u003ca href=\"https://github.com/gradle\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e8.14.4\u003c/h2\u003e\n\u003cp\u003eThis is a patch release for 8.14. We recommend using 8.14.4 instead of 8.14.\u003c/p\u003e\n\u003cp\u003eThis release addresses two security vulnerabilities:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/security/advisories/GHSA-mqwm-5m85-gmcv\"\u003eFailure to disable repositories failing to answer can expose builds to malicious artifacts\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/security/advisories/GHSA-w78c-w6vf-rw82\"\u003eFailure to disable repositories with unknown host can expose builds to malicious artifacts\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/62345becae08b13e793521816d585102fea66398\"\u003e\u003ccode\u003e62345be\u003c/code\u003e\u003c/a\u003e Finalize release notes for 8.14.5 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37829\"\u003e#37829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/38049c286691bf85cee542f8b2f8dc1cc54dd25d\"\u003e\u003ccode\u003e38049c2\u003c/code\u003e\u003c/a\u003e Finalize release notes for 8.14.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/f3781397d4ad84fcc034f239efe7dc350f564741\"\u003e\u003ccode\u003ef378139\u003c/code\u003e\u003c/a\u003e Update jdks.yaml (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37780\"\u003e#37780\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/4e739b5959a5b0f1c5962cd387143c91b27343d3\"\u003e\u003ccode\u003e4e739b5\u003c/code\u003e\u003c/a\u003e Update jdks.yaml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/d94136aadaa292280b860e5032e7dddc6e116112\"\u003e\u003ccode\u003ed94136a\u003c/code\u003e\u003c/a\u003e Update jdks.yaml (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37704\"\u003e#37704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/a2f6942e453c80634fca32ba0e11a9ce8b7baf48\"\u003e\u003ccode\u003ea2f6942\u003c/code\u003e\u003c/a\u003e Update jdks.yaml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/28df2639ea8752218176288ef6a9e678c779f73b\"\u003e\u003ccode\u003e28df263\u003c/code\u003e\u003c/a\u003e Backport exclude bugfix (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37559\"\u003e#37559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/e03dca12e7b77f5f6ec00f7d81eb8734f7596d52\"\u003e\u003ccode\u003ee03dca1\u003c/code\u003e\u003c/a\u003e Upgrade BouncyCastle to 1.84 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37656\"\u003e#37656\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/987d1a32e4f3d97b14413e9ee2742df820ec6beb\"\u003e\u003ccode\u003e987d1a3\u003c/code\u003e\u003c/a\u003e Bump the Jackson version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/56e392c0f0b9f16bcba1c03f7bd0bae08a82556a\"\u003e\u003ccode\u003e56e392c\u003c/code\u003e\u003c/a\u003e Bump Bouncycastle to 1.84\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gradle/gradle/compare/v8.14.3...v8.14.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.core:core-ktx` from 1.13.1 to 1.19.0\n\nUpdates `androidx.lifecycle:lifecycle-runtime-ktx` from 2.8.0 to 2.11.0\n\nUpdates `androidx.lifecycle:lifecycle-viewmodel-compose` from 2.8.0 to 2.11.0\n\nUpdates `androidx.lifecycle:lifecycle-viewmodel-compose` from 2.8.0 to 2.11.0\n\nUpdates `androidx.activity:activity-compose` from 1.9.0 to 1.13.0\n\nUpdates `androidx.navigation:navigation-compose` from 2.7.7 to 2.9.8\n\nUpdates `com.google.dagger:hilt-android` from 2.51.1 to 2.60\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003ch3\u003eBug fixes/features:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/4944\"\u003e#4944\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/4979\"\u003e#4979\u003c/a\u003e: Support AGP 9 in HiltGradlePlugin (6afd7ea5a0fb84a38f2d23c990ddbd95e728a39d)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.58\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 support was held back from this release (\u003ca href=\"https://redirect.github.com/google/dagger/pull/5061/commits/0a5b42cf910be11752c4b958c4735715bf57c564\"\u003egoogle/dagger#5061\u003c/a\u003e) because it forces users onto AGP 9. It will be available in the next Dagger release (e92e3f392).\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/d9ccdc70e7f68cffcdad04f90463963bd6713043\"\u003e\u003ccode\u003ed9ccdc7\u003c/code\u003e\u003c/a\u003e 2.60 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e820a704ca51606575dc35d78eedcfcfe24061c4\"\u003e\u003ccode\u003ee820a70\u003c/code\u003e\u003c/a\u003e Refactor: Inline library sources directly within MembersInjectionValidationTest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/4bedb4b6417e61184a84070389fff453926b17c3\"\u003e\u003ccode\u003e4bedb4b\u003c/code\u003e\u003c/a\u003e Support nullable type annotations with a flag.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/445e6f01f505a4e5b6dff8edb564b2c8205376e4\"\u003e\u003ccode\u003e445e6f0\u003c/code\u003e\u003c/a\u003e Fix wording on ProducerMonitor methodStarting and ready javadocs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/5b8b2bdbed4b048087fad859aeced2539b04a1fd\"\u003e\u003ccode\u003e5b8b2bd\u003c/code\u003e\u003c/a\u003e Enable Guava BetaApi checks in Dagger's Bazel build.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/639cd2b7dbc87414e463ec9519911fb3c77696c0\"\u003e\u003ccode\u003e639cd2b\u003c/code\u003e\u003c/a\u003e Temporarily disable a few KSP tests before updating XProcessing artifacts.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/5988296e5bca4c2c7cae8e291c724b22d2adb35f\"\u003e\u003ccode\u003e5988296\u003c/code\u003e\u003c/a\u003e Handle \u003ccode\u003eRuntimeException\u003c/code\u003es in \u003ccode\u003eDaggerSuperficialValidation\u003c/code\u003e getMessage / trac...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/2227e7023b162f4889773b7d9b004e36b5b70cf2\"\u003e\u003ccode\u003e2227e70\u003c/code\u003e\u003c/a\u003e Remove unused ProcessorErrors methods.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7daaec5a969591650101a612d580eef93a65d59b\"\u003e\u003ccode\u003e7daaec5\u003c/code\u003e\u003c/a\u003e Update Kotlin and KSP versions to 2.3.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.51.1...dagger-2.60\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger:hilt-compiler` from 2.51.1 to 2.60\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003ch3\u003eBug fixes/features:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/4944\"\u003e#4944\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/4979\"\u003e#4979\u003c/a\u003e: Support AGP 9 in HiltGradlePlugin (6afd7ea5a0fb84a38f2d23c990ddbd95e728a39d)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.58\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 support was held back from this release (\u003ca href=\"https://redirect.github.com/google/dagger/pull/5061/commits/0a5b42cf910be11752c4b958c4735715bf57c564\"\u003egoogle/dagger#5061\u003c/a\u003e) because it forces users onto AGP 9. It will be available in the next Dagger release (e92e3f392).\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/d9ccdc70e7f68cffcdad04f90463963bd6713043\"\u003e\u003ccode\u003ed9ccdc7\u003c/code\u003e\u003c/a\u003e 2.60 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e820a704ca51606575dc35d78eedcfcfe24061c4\"\u003e\u003ccode\u003ee820a70\u003c/code\u003e\u003c/a\u003e Refactor: Inline library sources directly within MembersInjectionValidationTest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/4bedb4b6417e61184a84070389fff453926b17c3\"\u003e\u003ccode\u003e4bedb4b\u003c/code\u003e\u003c/a\u003e Support nullable type annotations with a flag.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/445e6f01f505a4e5b6dff8edb564b2c8205376e4\"\u003e\u003ccode\u003e445e6f0\u003c/code\u003e\u003c/a\u003e Fix wording on ProducerMonitor methodStarting and ready javadocs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/5b8b2bdbed4b048087fad859aeced2539b04a1fd\"\u003e\u003ccode\u003e5b8b2bd\u003c/code\u003e\u003c/a\u003e Enable Guava BetaApi checks in Dagger's Bazel build.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/639cd2b7dbc87414e463ec9519911fb3c77696c0\"\u003e\u003ccode\u003e639cd2b\u003c/code\u003e\u003c/a\u003e Temporarily disable a few KSP tests before updating XProcessing artifacts.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/5988296e5bca4c2c7cae8e291c724b22d2adb35f\"\u003e\u003ccode\u003e5988296\u003c/code\u003e\u003c/a\u003e Handle \u003ccode\u003eRuntimeException\u003c/code\u003es in \u003ccode\u003eDaggerSuperficialValidation\u003c/code\u003e getMessage / trac...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/2227e7023b162f4889773b7d9b004e36b5b70cf2\"\u003e\u003ccode\u003e2227e70\u003c/code\u003e\u003c/a\u003e Remove unused ProcessorErrors methods.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7daaec5a969591650101a612d580eef93a65d59b\"\u003e\u003ccode\u003e7daaec5\u003c/code\u003e\u003c/a\u003e Update Kotlin and KSP versions to 2.3.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.51.1...dagger-2.60\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger.hilt.android` from 2.51.1 to 2.60\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger.hilt.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003ch3\u003eBug fixes/features:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/4944\"\u003e#4944\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/4979\"\u003e#4979\u003c/a\u003e: Support AGP 9 in HiltGradlePlugin (6afd7ea5a0fb84a38f2d23c990ddbd95e728a39d)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.58\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 support was held back from this release (\u003ca href=\"https://redirect.github.com/google/dagger/pull/5061/commits/0a5b42cf910be11752c4b958c4735715bf57c564\"\u003egoogle/dagger#5061\u003c/a\u003e) because it forces users onto AGP 9. It will be available in the next Dagger release (e92e3f392).\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/d9ccdc70e7f68cffcdad04f90463963bd6713043\"\u003e\u003ccode\u003ed9ccdc7\u003c/code\u003e\u003c/a\u003e 2.60 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e820a704ca51606575dc35d78eedcfcfe24061c4\"\u003e\u003ccode\u003ee820a70\u003c/code\u003e\u003c/a\u003e Refactor: Inline library sources directly within MembersInjectionValidationTest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/4bedb4b6417e61184a84070389fff453926b17c3\"\u003e\u003ccode\u003e4bedb4b\u003c/code\u003e\u003c/a\u003e Support nullable type annotations with a flag.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/445e6f01f505a4e5b6dff8edb564b2c8205376e4\"\u003e\u003ccode\u003e445e6f0\u003c/code\u003e\u003c/a\u003e Fix wording on ProducerMonitor methodStarting and ready javadocs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/5b8b2bdbed4b048087fad859aeced2539b04a1fd\"\u003e\u003ccode\u003e5b8b2bd\u003c/code\u003e\u003c/a\u003e Enable Guava BetaApi checks in Dagger's Bazel build.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/639cd2b7dbc87414e463ec9519911fb3c77696c0\"\u003e\u003ccode\u003e639cd2b\u003c/code\u003e\u003c/a\u003e Temporarily disable a few KSP tests before updating XProcessing artifacts.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/5988296e5bca4c2c7cae8e291c724b22d2adb35f\"\u003e\u003ccode\u003e5988296\u003c/code\u003e\u003c/a\u003e Handle \u003ccode\u003eRuntimeException\u003c/code\u003es in \u003ccode\u003eDaggerSuperficialValidation\u003c/code\u003e getMessage / trac...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/2227e7023b162f4889773b7d9b004e36b5b70cf2\"\u003e\u003ccode\u003e2227e70\u003c/code\u003e\u003c/a\u003e Remove unused ProcessorErrors methods.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7daaec5a969591650101a612d580eef93a65d59b\"\u003e\u003ccode\u003e7daaec5\u003c/code\u003e\u003c/a\u003e Update Kotlin and KSP versions to 2.3.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.51.1...dagger-2.60\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger:hilt-compiler` from 2.51.1 to 2.60\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003ch3\u003eBug fixes/features:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/4944\"\u003e#4944\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/4979\"\u003e#4979\u003c/a\u003e: Support AGP 9 in HiltGradlePlugin (6afd7ea5a0fb84a38f2d23c990ddbd95e728a39d)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.58\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 support was held back from this release (\u003ca href=\"https://redirect.github.com/google/dagger/pull/5061/commits/0a5b42cf910be11752c4b958c4735715bf57c564\"\u003egoogle/dagger#5061\u003c/a\u003e) because it forces users onto AGP 9. It will be available in the next Dagger release (e92e3f392).\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/d9ccdc70e7f68cffcdad04f90463963bd6713043\"\u003e\u003ccode\u003ed9ccdc7\u003c/code\u003e\u003c/a\u003e 2.60 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e820a704ca51606575dc35d78eedcfcfe24061c4\"\u003e\u003ccode\u003ee820a70\u003c/code\u003e\u003c/a\u003e Refactor: Inline library sources directly within MembersInjectionValidationTest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/4bedb4b6417e61184a84070389fff453926b17c3\"\u003e\u003ccode\u003e4bedb4b\u003c/code\u003e\u003c/a\u003e Support nullable type annotations with a flag.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/445e6f01f505a4e5b6dff8edb564b2c8205376e4\"\u003e\u003ccode\u003e445e6f0\u003c/code\u003e\u003c/a\u003e Fix wording on ProducerMonitor methodStarting and ready javadocs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/5b8b2bdbed4b048087fad859aeced2539b04a1fd\"\u003e\u003ccode\u003e5b8b2bd\u003c/code\u003e\u003c/a\u003e Enable Guava BetaApi checks in Dagger's Bazel build.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/639cd2b7dbc87414e463ec9519911fb3c77696c0\"\u003e\u003ccode\u003e639cd2b\u003c/code\u003e\u003c/a\u003e Temporarily disable a few KSP tests before updating XProcessing artifacts.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/5988296e5bca4c2c7cae8e291c724b22d2adb35f\"\u003e\u003ccode\u003e5988296\u003c/code\u003e\u003c/a\u003e Handle \u003ccode\u003eRuntimeException\u003c/code\u003es in \u003ccode\u003eDaggerSuperficialValidation\u003c/code\u003e getMessage / trac...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/2227e7023b162f4889773b7d9b004e36b5b70cf2\"\u003e\u003ccode\u003e2227e70\u003c/code\u003e\u003c/a\u003e Remove unused ProcessorErrors methods.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7daaec5a969591650101a612d580eef93a65d59b\"\u003e\u003ccode\u003e7daaec5\u003c/code\u003e\u003c/a\u003e Update Kotlin and KSP versions to 2.3.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.51.1...dagger-2.60\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.hilt:hilt-navigation-compose` from 1.2.0 to 1.4.0\n\nUpdates `androidx.room:room-runtime` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `com.squareup.retrofit2:retrofit` from 2.11.0 to 2.12.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/square/retrofit/releases\"\u003ecom.squareup.retrofit2:retrofit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.12.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFirst-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using \u003ccode\u003eCall.enqueue\u003c/code\u003e directly.\u003c/p\u003e\n\u003cp\u003eThe following converters support this feature through a new \u003ccode\u003ewithStreaming()\u003c/code\u003e factory method:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGson\u003c/li\u003e\n\u003cli\u003eJackson\u003c/li\u003e\n\u003cli\u003eMoshi\u003c/li\u003e\n\u003cli\u003eProtobuf\u003c/li\u003e\n\u003cli\u003eWire\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrimitive types used with \u003ccode\u003e@Tag\u003c/code\u003e now work by storing the value boxed with the boxed class as the key.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/square/retrofit/blob/trunk/CHANGELOG.md\"\u003ecom.squareup.retrofit2:retrofit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/square/retrofit/releases/tag/2.12.0\"\u003e2.12.0\u003c/a\u003e - 2025-05-15\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFirst-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using \u003ccode\u003eCall.enqueue\u003c/code\u003e directly.\u003c/p\u003e\n\u003cp\u003eThe following converters support this feature through a new \u003ccode\u003ewithStreaming()\u003c/code\u003e factory method:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGson\u003c/li\u003e\n\u003cli\u003eJackson\u003c/li\u003e\n\u003cli\u003eMoshi\u003c/li\u003e\n\u003cli\u003eProtobuf\u003c/li\u003e\n\u003cli\u003eWire\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrimitive types used with \u003ccode\u003e@Tag\u003c/code\u003e now work by storing the value boxed with the boxed class as the key.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/5a6ce364ad5208999a8e0847de760f97d39ecffe\"\u003e\u003ccode\u003e5a6ce36\u003c/code\u003e\u003c/a\u003e Prepare version 2.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/4fb8aed0cc6ebcc581d128922768867ae14e85c1\"\u003e\u003ccode\u003e4fb8aed\u003c/code\u003e\u003c/a\u003e Fix artifact name (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4372\"\u003e#4372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/bf11ef4cfaa3c50967f79e87b3e27f33670b42bc\"\u003e\u003ccode\u003ebf11ef4\u003c/code\u003e\u003c/a\u003e Dedicated website build, final status job (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/152cef59f2769c8d5bf102209fcf9565f0805a5e\"\u003e\u003ccode\u003e152cef5\u003c/code\u003e\u003c/a\u003e Update dependency sharp to ^0.34.0 (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4369\"\u003e#4369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/87a1de000541244c6db4c83cf414a6166bd70e93\"\u003e\u003ccode\u003e87a1de0\u003c/code\u003e\u003c/a\u003e Update dependency astro to v5.7.13 (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4364\"\u003e#4364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/7dac3926f247edb3673a650bf6d78b6eda1eaac0\"\u003e\u003ccode\u003e7dac392\u003c/code\u003e\u003c/a\u003e Update dependency \u003ccode\u003e@​astrojs/starlight\u003c/code\u003e to v0.34.3 (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4362\"\u003e#4362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/e8986a004bc7d44b9b6d373350b822de7717f949\"\u003e\u003ccode\u003ee8986a0\u003c/code\u003e\u003c/a\u003e Update dependency com.vanniktech:gradle-maven-publish-plugin to v0.32.0 (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4368\"\u003e#4368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/93084eb985b93b81093b14d3afa0760256a740c2\"\u003e\u003ccode\u003e93084eb\u003c/code\u003e\u003c/a\u003e Specify site and base in website config (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4367\"\u003e#4367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/924e202af9f035a25a3ccdaa1e8fe7603715b66f\"\u003e\u003ccode\u003e924e202\u003c/code\u003e\u003c/a\u003e Run website commands in website dir (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4365\"\u003e#4365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/f3a8fe8d2a5f46bd9fcf6e36b0f10a078779d29f\"\u003e\u003ccode\u003ef3a8fe8\u003c/code\u003e\u003c/a\u003e New website (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4359\"\u003e#4359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/square/retrofit/compare/2.11.0...2.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.datastore:datastore-preferences` from 1.1.1 to 1.2.1\n\nUpdates `nl.dionsegijn:konfetti-compose` from 2.0.4 to 2.0.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/DanielMartinus/Konfetti/releases\"\u003enl.dionsegijn:konfetti-compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.5\u003c/h2\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/DanielMartinus/Konfetti/pull/333\"\u003eDanielMartinus/Konfetti#333\u003c/a\u003e) and issue \u003ca href=\"https://redirect.github.com/DanielMartinus/Konfetti/issues/306\"\u003eDanielMartinus/Konfetti#306\u003c/a\u003e \u003cstrong\u003eReplace withFrameMillis with withInfiniteAnimationFrameMillis\u003c/strong\u003e - fixes instrumentation tests with Konfetti-compose implementation in them (\u003ccode\u003eIdling resource timed out: possibly due to compose being busy.\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/crowleysimon\"\u003e\u003ccode\u003e@​crowleysimon\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/lupuuss\"\u003e\u003ccode\u003e@​lupuuss\u003c/code\u003e\u003c/a\u003e for investigating this issue and \u003ca href=\"https://github.com/matthewbartos\"\u003e\u003ccode\u003e@​matthewbartos\u003c/code\u003e\u003c/a\u003e for getting it on my radar\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DanielMartinus/Konfetti/commit/bacc389dbdac31313a2acd2702793f32fdaeb10a\"\u003e\u003ccode\u003ebacc389\u003c/code\u003e\u003c/a\u003e Bump version 2.0.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DanielMartinus/Konfetti/commit/6dbc42e5fe677f2d3d601a6b39bcc592ac4cc432\"\u003e\u003ccode\u003e6dbc42e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/DanielMartinus/Konfetti/issues/333\"\u003e#333\u003c/a\u003e from lupuuss/compose-konfetti-view-tests-support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DanielMartinus/Konfetti/commit/c4ccd6b291a1ae103b3f8965dbdccfbf2482cb31\"\u003e\u003ccode\u003ec4ccd6b\u003c/code\u003e\u003c/a\u003e Replace withFrameMillis with withInfiniteAnimationFrameMillis to run Konfetti...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DanielMartinus/Konfetti/commit/6183596b5fbdd2c1fc6ea2656c85da8f883f3f51\"\u003e\u003ccode\u003e6183596\u003c/code\u003e\u003c/a\u003e Update LICENSE\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DanielMartinus/Konfetti/commit/1ebaf94b1dc257ba0d453c9413cb49b4d0c653e3\"\u003e\u003ccode\u003e1ebaf94\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/DanielMartinus/Konfetti/issues/322\"\u003e#322\u003c/a\u003e from DanielMartinus/update-spotless\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DanielMartinus/Konfetti/commit/1a1373f613b8e37ec5cf66d5318529b14f48131a\"\u003e\u003ccode\u003e1a1373f\u003c/code\u003e\u003c/a\u003e Run spotless\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DanielMartinus/Konfetti/commit/892f480ff2195048c0519f79a29257f95cdb0cc1\"\u003e\u003ccode\u003e892f480\u003c/code\u003e\u003c/a\u003e Add .editorconfig to make it work with compose class capitalization\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DanielMartinus/Konfetti/commit/fa17150be4516586094393f4bd816bf9af3d69c7\"\u003e\u003ccode\u003efa17150\u003c/code\u003e\u003c/a\u003e Bump ktlint and spotless version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DanielMartinus/Konfetti/commit/0425c22ee0633bcd0d528bd797e8ad146dbbcc67\"\u003e\u003ccode\u003e0425c22\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/DanielMartinus/Konfetti/issues/321\"\u003e#321\u003c/a\u003e from DanielMartinus/migrate-core-to-jvm-only-module\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DanielMartinus/Konfetti/commit/5a4ba383fad86a3079300cbcc0f899b236479049\"\u003e\u003ccode\u003e5a4ba38\u003c/code\u003e\u003c/a\u003e Include javadoc for sonatype\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/DanielMartinus/Konfetti/compare/v2.0.4...v2.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.test.ext:junit` from 1.1.5 to 1.3.0\n\nUpdates `androidx.test.espresso:espresso-core` from 3.5.1 to 3.7.0\n\nUpdates `org.robolectric:robolectric` from 4.14.1 to 4.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/robolectric/robolectric/releases\"\u003eorg.robolectric:robolectric's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eRobolectric 4.16.1 is a minor release that fixes some issues when Robolectric is used for Android Platform development. Most notably, it is updated to support the deletion of \u003ca href=\"https://developer.android.com/reference/android/hardware/fingerprint/FingerprintManager\"\u003eFingerprintManager\u003c/a\u003e in the Android Framework, as well as some improvements to the \u003ccode\u003eVirtualDeviceManager\u003c/code\u003e shadow.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/robolectric/robolectric/compare/robolectric-4.16...robolectric-4.16.1\"\u003ehttps://github.com/robolectric/robolectric/compare/robolectric-4.16...robolectric-4.16.1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eRobolectric 4.16 supports Android Baklava (SDK 36), and you need to use JDK 21 if running tests with SDK 36 target. It also removes support for Android L (SDK 21 and 22).\u003c/p\u003e\n\u003cp\u003eOne exciting new feature is native resources (ResourcesMode.NATIVE). Note this is currently only available in SDK 36.\u003c/p\u003e\n\u003cp\u003eIf you have any issues, please file them \u003ca href=\"https://github.com/robolectric/robolectric/issues\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReuse \u003ccode\u003eShadowUIModeManager\u003c/code\u003e in \u003ccode\u003eShadowUIModeManagerTest\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10368\"\u003erobolectric/robolectric#10368\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate AndroidX by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10373\"\u003erobolectric/robolectric#10373\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency gradle to v8.14.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10372\"\u003erobolectric/robolectric#10372\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency com.googlecode.libphonenumber:libphonenumber to v9.0.7 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10371\"\u003erobolectric/robolectric#10371\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency org.bouncycastle:bcprov-jdk18on to v1.81 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10374\"\u003erobolectric/robolectric#10374\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ApplicationInfo inconsistencies in Robolectric. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10375\"\u003erobolectric/robolectric#10375\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd shadow for new resolveActivityAsUser variant. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10377\"\u003erobolectric/robolectric#10377\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdjust to indevelopment SDK changes. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10379\"\u003erobolectric/robolectric#10379\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding support to the Simulator for picking up the device configuration from a Configurer. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10381\"\u003erobolectric/robolectric#10381\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClean up SDK ranges for shadow methods in Baklava. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10380\"\u003erobolectric/robolectric#10380\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a shadow for Equalizer in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10384\"\u003erobolectric/robolectric#10384\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate example to be consistent with robolectric.org by \u003ca href=\"https://github.com/seadowg\"\u003e\u003ccode\u003e@​seadowg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/7475\"\u003erobolectric/robolectric#7475\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate the \u003ccode\u003esimulator-gradle-plugin\u003c/code\u003e to depends on AGP \u003ccode\u003egradle-api\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10386\"\u003erobolectric/robolectric#10386\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace custom \u003ccode\u003egetOrDefault()\u003c/code\u003e with the corresponding Java method by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10370\"\u003erobolectric/robolectric#10370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Javadoc for \u003ccode\u003eShadowPausedLooper\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10387\"\u003erobolectric/robolectric#10387\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix condition in \u003ccode\u003eResourceHelper#parseFloatAttribute()\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10369\"\u003erobolectric/robolectric#10369\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eValidate listener in \u003ccode\u003eShadowAccountManager#addOnAccountsUpdatedListener()\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10361\"\u003erobolectric/robolectric#10361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for UiModeManager.setNightMode(UiModeManager.MODE_NIGHT_CUSTOM) in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10390\"\u003erobolectric/robolectric#10390\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLazily register the simulator plugin by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10391\"\u003erobolectric/robolectric#10391\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable stricter plugin validation by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10388\"\u003erobolectric/robolectric#10388\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the VirtualDeviceManager#getVirtualDevice(int deviceId) to the ShadowVirtualDeviceManager. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10395\"\u003erobolectric/robolectric#10395\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix various small warnings by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10394\"\u003erobolectric/robolectric#10394\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd shadow implement of AccessibilityService#getRootInActiveWindow in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10397\"\u003erobolectric/robolectric#10397\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd more information to the generated POM file by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10392\"\u003erobolectric/robolectric#10392\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange ShadowChoreographer.getDefaultFrameDelay into a shadow method. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10404\"\u003erobolectric/robolectric#10404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRestore removed methods from \u003ccode\u003eConfig\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10406\"\u003erobolectric/robolectric#10406\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd shadow override for Network SocketFactory. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10409\"\u003erobolectric/robolectric#10409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing deprecations to some \u003ccode\u003eConfig.Builder\u003c/code\u003e methods by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10408\"\u003erobolectric/robolectric#10408\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003etestDebugUnitTest\u003c/code\u003e from the dependencies of the \u003ccode\u003esimulator\u003c/code\u003e task by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10413\"\u003erobolectric/robolectric#10413\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMerge branch 'google' into 'master' by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10414\"\u003erobolectric/robolectric#10414\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the snapshot version to 4.16 by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10415\"\u003erobolectric/robolectric#10415\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ability to specify is80211azNtbMeasurement to ShadowRangingResult in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10410\"\u003erobolectric/robolectric#10410\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded implementation for Path.op by \u003ca href=\"https://github.com/GisoBartels\"\u003e\u003ccode\u003e@​GisoBartels\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10288\"\u003erobolectric/robolectric#10288\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix massive code warnings of ShadowVirtualDeviceManagerTest by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10399\"\u003erobolectric/robolectric#10399\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove redundant String concatenation by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10417\"\u003erobolectric/robolectric#10417\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigrate deprecated APIs to idleMainLooper for ShadowVirtualDeviceManagerTest by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10418\"\u003erobolectric/robolectric#10418\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace Stream#toList to Stream#collect(Collectors.toList()) by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10420\"\u003erobolectric/robolectric#10420\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport Java 11 in the simulator gradle plugin by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10421\"\u003erobolectric/robolectric#10421\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate AndroidX by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10422\"\u003erobolectric/robolectric#10422\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/524ea8e634ad51b39356a41fbb4a3474034dd250\"\u003e\u003ccode\u003e524ea8e\u003c/code\u003e\u003c/a\u003e Bump version to 4.16.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/54fd1eeaf0ce87ac3280a7156a666dcddffe874f\"\u003e\u003ccode\u003e54fd1ee\u003c/code\u003e\u003c/a\u003e Implement ResTable support for shared libraries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/1e35e634fc7c22e1d54fe3ac73ab8fce704bd4db\"\u003e\u003ccode\u003e1e35e63\u003c/code\u003e\u003c/a\u003e When a top-level exception occurs in the Simulator, print the stack trace and...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/e2c046f467de139f346eff3e0c0ff2d3610f66e6\"\u003e\u003ccode\u003ee2c046f\u003c/code\u003e\u003c/a\u003e Added custom ThreadFactory to name threads in LocalUIController\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/7f3165a0f04a222579f46dec49d02242e4bb1b0d\"\u003e\u003ccode\u003e7f3165a\u003c/code\u003e\u003c/a\u003e Add newly required \u003ccode\u003e--add-exports\u003c/code\u003e arguments to test tasks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/db54b4b046e460eb6e5df5f19c8ae8abfa276455\"\u003e\u003ccode\u003edb54b4b\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eVirtualDeviceParamsBuilder\u003c/code\u003e to support creating new virtual devices.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/b73adc38c8f5aed39e3e08d844145c5fe2e7ad33\"\u003e\u003ccode\u003eb73adc3\u003c/code\u003e\u003c/a\u003e Implement shadow behavior for VirtualDeviceManager#registerVirtualDeviceListener\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/1e05fdeb1c5fe630b070dad13553806b58650149\"\u003e\u003ccode\u003e1e05fde\u003c/code\u003e\u003c/a\u003e Create shadow for VirtualDeviceManager$VirtualDevice#createVirtualCamera\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/d160747766edebd7b36e61d37f930fd253e7f429\"\u003e\u003ccode\u003ed160747\u003c/code\u003e\u003c/a\u003e Future proof ShadowFingerprintManagerTest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/d7a0438407c7eb82488b4474e51128d44a493eda\"\u003e\u003ccode\u003ed7a0438\u003c/code\u003e\u003c/a\u003e Add maxSdk for ShadowFingerprintManager.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/robolectric/robolectric/compare/robolectric-4.14.1...robolectric-4.16.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.github.takahirom.roborazzi:roborazzi` from 1.32.0 to 1.65.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/takahirom/roborazzi/releases\"\u003eio.github.takahirom.roborazzi:roborazzi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.65.0\u003c/h2\u003e\n\u003ch2\u003eNew experimental feature - Separate output directories per variant/target\u003c/h2\u003e\n\u003cp\u003eYou can now opt in to giving each Roborazzi task its own output directory:\u003c/p\u003e\n\u003cpre lang=\"kotlin\"\u003e\u003ccode\u003eroborazzi {\r\n  @OptIn(ExperimentalRoborazziApi::class)\r\n  separateOutputDirs.set(true)\r\n}\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eWhen enabled, each Roborazzi task gets its own output and intermediate subdirectory (e.g. \u003ccode\u003ebuild/outputs/roborazzi/debug/\u003c/code\u003e, \u003ccode\u003ebuild/outputs/roborazzi/desktop/\u003c/code\u003e) instead of sharing a single directory across every variant/target. It defaults to \u003ccode\u003efalse\u003c/code\u003e, so existing behavior is unchanged.\u003c/p\u003e\n\u003cp\u003eWhy: When multiple Roborazzi test tasks run in a single Gradle invocation (e.g. \u003ccode\u003echeck\u003c/code\u003e, KMP's \u003ccode\u003eallTests\u003c/code\u003e), they race over the shared output directory: one task's finalizer copy can delete files while another task fingerprints them as input. On Gradle 9 this hard-fails with \u003ccode\u003eCannot access input property 'roborazziImageInput'\u003c/code\u003e (\u003ccode\u003eNoSuchFileException\u003c/code\u003e). Separating the directories removes the race at the root.\u003c/p\u003e\n\u003cp\u003eNote: If you enable this option, your golden images move to per-task subdirectories, so you'll need to re-record them (or move the existing files).\u003c/p\u003e\n\u003cp\u003eThank you, \u003ca href=\"https://github.com/boiler23\"\u003e\u003ccode\u003e@​boiler23\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/F43nd1r\"\u003e\u003ccode\u003e@​F43nd1r\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/vladcudoidem\"\u003e\u003ccode\u003e@​vladcudoidem\u003c/code\u003e\u003c/a\u003e for reporting these issues.\u003c/p\u003e\n\u003ch2\u003eMaintenance - Binary compatibility validation\u003c/h2\u003e\n\u003cp\u003eRoborazzi now uses the \u003ca href=\"https://github.com/Kotlin/binary-compatibility-validator\"\u003ekotlinx binary-compatibility-validator\u003c/a\u003e in CI, so any unintended change to the published JVM API surface fails CI instead of slipping into a release. This has no effect on your project, but it makes upcoming refactoring for iOS/KMP support safer.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental separateOutputDirs option to Roborazzi Gradle plugin by \u003ca href=\"https://github.com/takahirom\"\u003e\u003ccode\u003e@​takahirom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/takahirom/roborazzi/pull/851\"\u003etakahirom/roborazzi#851\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd binary compatibility validator with initial API dumps by \u003ca href=\"https://github.com/takahirom\"\u003e\u003ccode\u003e@​takahirom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/takahirom/roborazzi/pull/852\"\u003etakahirom/roborazzi#852\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/takahirom/roborazzi/compare/1.64.0...1.65.0\"\u003ehttps://github.com/takahirom/roborazzi/compare/1.64.0...1.65.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.64.0\u003c/h2\u003e\n\u003ch2\u003eNew feature - Filtering previews by annotation\u003c/h2\u003e\n\u003cp\u003eYou can now control which Compose Previews are captured with \u003ccode\u003eannotationFilter\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eTo use the built-in \u003ccode\u003e@RoboPreviewExclude\u003c/code\u003e / \u003ccode\u003e@RoboPreviewInclude\u003c/code\u003e annotations, add the \u003ccode\u003eroborazzi-annotations\u003c/code\u003e dependency:\u003c/p\u003e\n\u003cpre lang=\"kotlin\"\u003e\u003ccode\u003eimplementation(\u0026quot;io.github.takahirom.roborazzi:roborazzi-annotations:[version]\u0026quot;)\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eBy default, previews annotated with \u003ccode\u003e@RoboPreviewExclude\u003c/code\u003e are skipped and everything else is captured:\u003c/p\u003e\n\u003cpre lang=\"kotlin\"\u003e\u003ccode\u003e@RoboPreviewExclude\r\n@Preview\r\n@Composable\r\nfun WorkInProgressPreview() { /* not captured */ }\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/takahirom/roborazzi/commit/4241b35346ae4c447ac1ba5167e12568473d5647\"\u003e\u003ccode\u003e4241b35\u003c/code\u003e\u003c/a\u003e 1.65.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/takahirom/roborazzi/commit/1fa7858cf171c13792ba7b4a58b73156e2d0cba6\"\u003e\u003ccode\u003e1fa7858\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/takahirom/roborazzi/issues/852\"\u003e#852\u003c/a\u003e from takahirom/tm/add-binary-compatibility-validator\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/takahirom/roborazzi/commit/9474b51f39dc6127263e100c8d194a0337fff263\"\u003e\u003ccode\u003e9474b51\u003c/code\u003e\u003c/a\u003e Skip BCV application in integration-test composite builds\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/takahirom/roborazzi/commit/638acd2bfb4230915a90df0f6e28923bc14d4071\"\u003e\u003ccode\u003e638acd2\u003c/code\u003e\u003c/a\u003e Run apiCheck in CI test workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/takahirom/roborazzi/commit/1ff716151c4c2b91052351043cf50f5547bd1970\"\u003e\u003ccode\u003e1ff7161\u003c/code\u003e\u003c/a\u003e Add binary compatibility validator with initial API dumps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/takahirom/roborazzi/commit/db6552088c2f054cec348fd795582f82cacb2b34\"\u003e\u003ccode\u003edb65520\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/takahirom/roborazzi/issues/851\"\u003e#851\u003c/a\u003e from takahirom/tm/separate-output-dirs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/takahirom/roborazzi/commit/01e926bef14464d5a8ae3569cab12699f1a891a8\"\u003e\u003ccode\u003e01e926b\u003c/code\u003e\u003c/a\u003e Add experimental separateOutputDirs option to Roborazzi Gradle plugin\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/takahirom/roborazzi/commit/6cb9dbd0a0fc4ad8d55049d0f0c45d1fb293f0ac\"\u003e\u003ccode\u003e6cb9dbd\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/takahirom/roborazzi/issues/843\"\u003e#843\u003c/a\u003e from takahirom/tm/fix-stacked-dialog-z-order\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/takahirom/roborazzi/commit/916ccfdd1087878f689172f7b6e660054cb6bb08\"\u003e\u003ccode\u003e916ccfd\u003c/code\u003e\u003c/a\u003e Update VERSION_NAME to 1.64.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/takahirom/roborazzi/commit/52c7aa240ea702de8c2f1f6c167464b33920d4d2\"\u003e\u003ccode\u003e52c7aa2\u003c/code\u003e\u003c/a\u003e Fix z-order of same-type windows in captureScreenRoboImage\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/takahirom/roborazzi/compare/1.32.0...1.65.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.github.takahirom.roborazzi:roborazzi-compose` from 1.32.0 to 1.65.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/takahirom/roborazzi/releases\"\u003eio.github.takahirom.roborazzi:roborazzi-compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.65.0\u003c/h2\u003e\n\u003ch2\u003eNew experimental feature - Separate output directories per variant/target\u003c/h2\u003e\n\u003cp\u003eYou can now opt in to giving each Roborazzi task its own output directory:\u003c/p\u003e\n\u003cpre lang=\"kotlin\"\u003e\u003ccode\u003eroborazzi {\r\n  @OptIn(ExperimentalRoborazziApi::class)\r\n  separateOutputDirs.set(true)\r\n}\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eWhen enabled, each Roborazzi task gets its own output an...\n\n_Description has been truncated_","html_url":"https://github.com/CDRaab01/Spotter/pull/56","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDRaab01%2FSpotter/issues/56","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/56/packages"},{"uuid":"4556193355","node_id":"PR_kwDOSsoXFc7hBp0I","number":6,"state":"closed","title":"chore(deps): bump the androidx group with 22 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-05-31T01:13:02.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-31T01:06:09.000Z","updated_at":"2026-05-31T01:13:04.000Z","time_to_close":413,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"androidx","update_count":22,"packages":[{"name":"androidx.core:core-ktx","old_version":"1.15.0","new_version":"1.18.0"},{"name":"androidx.lifecycle:lifecycle-runtime-ktx","old_version":"2.8.7","new_version":"2.10.0"},{"name":"androidx.lifecycle:lifecycle-viewmodel-compose","old_version":"2.8.7","new_version":"2.10.0"},{"name":"androidx.lifecycle:lifecycle-runtime-compose","old_version":"2.8.7","new_version":"2.10.0"},{"name":"androidx.activity:activity-compose","old_version":"1.9.3","new_version":"1.13.0"},{"name":"androidx.compose:compose-bom","old_version":"2024.12.01","new_version":"2026.05.01"},{"name":"androidx.tv:tv-material","old_version":"1.0.0","new_version":"1.1.0"},{"name":"androidx.navigation:navigation-compose","old_version":"2.8.5","new_version":"2.9.8"},{"name":"androidx.hilt:hilt-navigation-compose","old_version":"1.2.0","new_version":"1.3.0"},{"name":"androidx.room:room-runtime","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-ktx","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-paging","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-compiler","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.paging:paging-runtime","old_version":"3.3.5","new_version":"3.5.0"},{"name":"androidx.paging:paging-compose","old_version":"3.3.5","new_version":"3.5.0"},{"name":"androidx.security:security-crypto","old_version":"1.1.0-alpha06","new_version":"1.1.0"},{"name":"androidx.media3:media3-exoplayer","old_version":"1.5.1","new_version":"1.10.1","repository_url":"https://github.com/androidx/media"},{"name":"androidx.media3:media3-exoplayer-hls","old_version":"1.5.1","new_version":"1.10.1","repository_url":"https://github.com/androidx/media"},{"name":"androidx.media3:media3-ui","old_version":"1.5.1","new_version":"1.10.1","repository_url":"https://github.com/androidx/media"},{"name":"androidx.media3:media3-session","old_version":"1.5.1","new_version":"1.10.1","repository_url":"https://github.com/androidx/media"},{"name":"androidx.test.ext:junit","old_version":"1.2.1","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.6.1","new_version":"3.7.0"}],"path":null,"ecosystem":"maven"},"body":"Bumps the androidx group with 22 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| androidx.core:core-ktx | `1.15.0` | `1.18.0` |\n| androidx.lifecycle:lifecycle-runtime-ktx | `2.8.7` | `2.10.0` |\n| androidx.lifecycle:lifecycle-viewmodel-compose | `2.8.7` | `2.10.0` |\n| androidx.lifecycle:lifecycle-runtime-compose | `2.8.7` | `2.10.0` |\n| androidx.activity:activity-compose | `1.9.3` | `1.13.0` |\n| androidx.compose:compose-bom | `2024.12.01` | `2026.05.01` |\n| androidx.tv:tv-material | `1.0.0` | `1.1.0` |\n| androidx.navigation:navigation-compose | `2.8.5` | `2.9.8` |\n| androidx.hilt:hilt-navigation-compose | `1.2.0` | `1.3.0` |\n| androidx.room:room-runtime | `2.6.1` | `2.8.4` |\n| androidx.room:room-ktx | `2.6.1` | `2.8.4` |\n| androidx.room:room-paging | `2.6.1` | `2.8.4` |\n| androidx.room:room-compiler | `2.6.1` | `2.8.4` |\n| androidx.paging:paging-runtime | `3.3.5` | `3.5.0` |\n| androidx.paging:paging-compose | `3.3.5` | `3.5.0` |\n| androidx.security:security-crypto | `1.1.0-alpha06` | `1.1.0` |\n| [androidx.media3:media3-exoplayer](https://github.com/androidx/media) | `1.5.1` | `1.10.1` |\n| [androidx.media3:media3-exoplayer-hls](https://github.com/androidx/media) | `1.5.1` | `1.10.1` |\n| [androidx.media3:media3-ui](https://github.com/androidx/media) | `1.5.1` | `1.10.1` |\n| [androidx.media3:media3-session](https://github.com/androidx/media) | `1.5.1` | `1.10.1` |\n| androidx.test.ext:junit | `1.2.1` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.6.1` | `3.7.0` |\n\nUpdates `androidx.core:core-ktx` from 1.15.0 to 1.18.0\n\nUpdates `androidx.lifecycle:lifecycle-runtime-ktx` from 2.8.7 to 2.10.0\n\nUpdates `androidx.lifecycle:lifecycle-viewmodel-compose` from 2.8.7 to 2.10.0\n\nUpdates `androidx.lifecycle:lifecycle-runtime-compose` from 2.8.7 to 2.10.0\n\nUpdates `androidx.lifecycle:lifecycle-viewmodel-compose` from 2.8.7 to 2.10.0\n\nUpdates `androidx.lifecycle:lifecycle-runtime-compose` from 2.8.7 to 2.10.0\n\nUpdates `androidx.activity:activity-compose` from 1.9.3 to 1.13.0\n\nUpdates `androidx.compose:compose-bom` from 2024.12.01 to 2026.05.01\n\nUpdates `androidx.tv:tv-material` from 1.0.0 to 1.1.0\n\nUpdates `androidx.navigation:navigation-compose` from 2.8.5 to 2.9.8\n\nUpdates `androidx.hilt:hilt-navigation-compose` from 1.2.0 to 1.3.0\n\nUpdates `androidx.room:room-runtime` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-paging` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-paging` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `androidx.paging:paging-runtime` from 3.3.5 to 3.5.0\n\nUpdates `androidx.paging:paging-compose` from 3.3.5 to 3.5.0\n\nUpdates `androidx.security:security-crypto` from 1.1.0-alpha06 to 1.1.0\n\nUpdates `androidx.media3:media3-exoplayer` from 1.5.1 to 1.10.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/releases\"\u003eandroidx.media3:media3-exoplayer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.10.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eonAudioSessionIdChanged\u003c/code\u003e in \u003ccode\u003eSimpleBasePlayer\u003c/code\u003e and \u003ccode\u003eForwardingSimpleBasePlayer\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix race condition related to audio session id generation that could lead to an \u003ccode\u003eIllegalStateException\u003c/code\u003e with tunneling mode (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3099\"\u003e#3099\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix possible app crashes when recovering from decoder errors with renderer prewarming.\u003c/li\u003e\n\u003cli\u003eFix issue where video artifacts were caused by supplying initialization data when using an AV1-based Dolby Vision codec (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3153\"\u003e#3153\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eAdjust track selection logic in \u003ccode\u003eVideoTrackInfo\u003c/code\u003e to resolve fallback MIME types and move HDR and codec score preferences to quality preferences (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3135\"\u003e#3135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP3: Ignore Xing data length if it is longer than the known stream length (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3117\"\u003e#3117\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e in \u003ccode\u003eMp4Extractor\u003c/code\u003e when \u003ccode\u003eFLAG_OMIT_TRACK_SAMPLE_TABLE\u003c/code\u003e is set and the track lacks a sync sample (\u003ccode\u003estss\u003c/code\u003e) box.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAudio:\n\u003cul\u003e\n\u003cli\u003eFix bug where audio events may be misrouted if multiple audio renderers are added to the player.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eVideo:\n\u003cul\u003e\n\u003cli\u003eAdjust logic for codec reuse at frame rate changes on API below 30 to avoid codec resets where they are not beneficial (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3120\"\u003e#3120\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDisable forced synchronization workaround in \u003ccode\u003equeueSecureInputBuffer\u003c/code\u003e for API 31+. The workaround was an artificial bottleneck that forced decryption to run serially which prevented garbled video due to a framework issue existing prior to API 31.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImage:\n\u003cul\u003e\n\u003cli\u003eFix issue in scrubbing mode where image updates would only take effect when the user \u0026quot;stops scrubbing\u0026quot; (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2815\"\u003e#2815\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSession:\n\u003cul\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eForegroundServiceStartNotAllowedException\u003c/code\u003e wasn't propagated across thread boundaries in case the application thread is not the main thread (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2499\"\u003e#2499\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eCOMMAND_SEEK_TO_MEDIA_ITEM\u003c/code\u003e is not available in a \u003ccode\u003eMediaController\u003c/code\u003e when connecting to a platform-only session that supports seeking to other items but no playlist modifications.\u003c/li\u003e\n\u003cli\u003eFix issue where \u003ccode\u003eMediaController\u003c/code\u003e can't set media items on platform media sessions that don't allow \u003ccode\u003ePREPARE_FROM\u003c/code\u003e actions.\u003c/li\u003e\n\u003cli\u003eFix bug where own process wasn't marked with \u003ccode\u003eController.isTrusted()\u003c/code\u003e on API 27 or before when connecting via platform controllers.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eHLS extension:\n\u003cul\u003e\n\u003cli\u003eFix a bug where an \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e is thrown during stream fallback if the track selection is a subset of the available tracks (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3161\"\u003e#3161\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix an issue where the initialization segment was not carried over across media playlist updates if the \u003ccode\u003e#EXT-X-MAP\u003c/code\u003e tag was not repeated in subsequent updates (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3105\"\u003e#3105\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eDASH extension:\n\u003cul\u003e\n\u003cli\u003eFix crash in \u003ccode\u003eSampleQueue\u003c/code\u003e when seeking into a chunk that is currently being canceled.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003ePromote \u003ccode\u003ePlayer.mute()\u003c/code\u003e and \u003ccode\u003ePlayer.unmute()\u003c/code\u003e from \u003ccode\u003eUnstableApi\u003c/code\u003e to stable.\u003c/li\u003e\n\u003cli\u003ePromote \u003ccode\u003eFormat.pcmEncoding\u003c/code\u003e and \u003ccode\u003eC.PcmEncoding\u003c/code\u003e from \u003ccode\u003eUnstableApi\u003c/code\u003e to stable.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.primaryTrackGroupId\u003c/code\u003e to identify the primary group of embedded \u003ccode\u003eFormat\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/androidx/media/issues/294\"\u003e#294\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eAdd clipping capabilities to \u003ccode\u003eAdsMediaSource\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd support for dynamic scheduling in \u003ccode\u003eMediaCodecVideoRenderer\u003c/code\u003e to better align scheduling work and CPU wake-cycles to when video frames can be processed. You can enable this using \u003ccode\u003eexperimentalSetEnableMediaCodecVideoRendererDurationToProgressUs()\u003c/code\u003e in the \u003ccode\u003eDefaultRenderersFactory\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAllow setting a custom \u003ccode\u003eDataSource.Factory\u003c/code\u003e in \u003ccode\u003eDefaultPreloadManager.Builder\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eExoPlayer\u003c/code\u003e to be mocked without Robolectric by moving some default constants to \u003ccode\u003eExoPlayer.Builder\u003c/code\u003e. Mocking this complex interface is not generally encouraged - only when the usage is minimal/simple/incidental (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2985\"\u003e#2985\u003c/a\u003e).\n\u003cul\u003e\n\u003cli\u003eThis required moving \u003ccode\u003eDEFAULT_STUCK_PLAYING_DETECTION_TIMEOUT_MS\u003c/code\u003e from \u003ccode\u003eExoPlayer\u003c/code\u003e to \u003ccode\u003eExoPlayer.Builder\u003c/code\u003e (without deprecation).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix a bug where \u003ccode\u003eProgressiveMediaSource\u003c/code\u003e propagates out-of-date timeline info to the player, and the queued periods unexpectedly get removed (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3016\"\u003e#3016\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix issue where ExoPlayer would not request delayed audio focus when playback is requested during phone calls.\u003c/li\u003e\n\u003cli\u003eFix bug where transitions from on-demand to live content may cause re-buffers at the end of the on-demand content (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3052\"\u003e#3052\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Dolby Vision Profile 10 (\u003ca href=\"https://redirect.github.com/androidx/media/pull/2830\"\u003e#2830\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where an uninitialized pre roll ad produced an \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3125\"\u003e#3125\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eCompositionPlayer:\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eEditedMediaItem.removeVideo\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTransformer:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eEditedMediaItem.Builder.setFrameRate()\u003c/code\u003e can now set a maximum output frame rate for video, which is particularly helpful when increasing media speed with \u003ccode\u003esetSpeed()\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/blob/release/RELEASENOTES.md\"\u003eandroidx.media3:media3-exoplayer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e1.10.1 (2026-05-12)\u003c/h3\u003e\n\u003cp\u003eThis release includes the following changes since \u003ca href=\"https://github.com/androidx/media/blob/release/#1100-2026-03-25\"\u003e1.10.0\u003c/a\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eonAudioSessionIdChanged\u003c/code\u003e in \u003ccode\u003eSimpleBasePlayer\u003c/code\u003e and\n\u003ccode\u003eForwardingSimpleBasePlayer\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix race condition related to audio session id generation that could\nlead to an \u003ccode\u003eIllegalStateException\u003c/code\u003e with tunneling mode.\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/3099\"\u003e#3099\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix possible app crashes when recovering from decoder errors with\nrenderer prewarming.\u003c/li\u003e\n\u003cli\u003eFix issue where video artifacts were caused by supplying initialization\ndata when using an AV1-based Dolby Vision codec\n(\u003ca href=\"https://redirect.github.com/androidx/media/pull/3153\"\u003e#3153\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eAdjust track selection logic in \u003ccode\u003eVideoTrackInfo\u003c/code\u003e to resolve fallback\nMIME types and move HDR and codec score preferences to quality\npreferences (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3135\"\u003e#3135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP3: Ignore Xing data length if it is longer than the known stream\nlength (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3117\"\u003e#3117\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e in \u003ccode\u003eMp4Extractor\u003c/code\u003e when\n\u003ccode\u003eFLAG_OMIT_TRACK_SAMPLE_TABLE\u003c/code\u003e is set and the track lacks a sync sample\n(\u003ccode\u003estss\u003c/code\u003e) box.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAudio:\n\u003cul\u003e\n\u003cli\u003eFix bug where audio events may be misrouted if multiple audio renderers\nare added to the player.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eVideo:\n\u003cul\u003e\n\u003cli\u003eAdjust logic for codec reuse at frame rate changes on API below 30 to\navoid codec resets where they are not beneficial\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/3120\"\u003e#3120\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDisable forced synchronization workaround in \u003ccode\u003equeueSecureInputBuffer\u003c/code\u003e\nfor API 31+. The workaround was an artificial bottleneck that forced\ndecryption to run serially which prevented garbled video due to a\nframework issue existing prior to API 31.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImage:\n\u003cul\u003e\n\u003cli\u003eFix issue in scrubbing mode where image updates would only take effect\nwhen the user \u0026quot;stops scrubbing\u0026quot;\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/2815\"\u003e#2815\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSession:\n\u003cul\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eForegroundServiceStartNotAllowedException\u003c/code\u003e wasn't\npropagated across thread boundaries in case the application thread is\nnot the main thread\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/2499\"\u003e#2499\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eCOMMAND_SEEK_TO_MEDIA_ITEM\u003c/code\u003e is not available in a\n\u003ccode\u003eMediaController\u003c/code\u003e when connecting to a platform-only session that\nsupports seeking to other items but no playlist modifications.\u003c/li\u003e\n\u003cli\u003eFix issue where \u003ccode\u003eMediaController\u003c/code\u003e can't set media items on platform\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/5fb306449733dd71595700c1227ad6087578c559\"\u003e\u003ccode\u003e5fb3064\u003c/code\u003e\u003c/a\u003e Bump version to 1.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/95d6a273bd675ef168525ac3bb54aa6a3f1c76ce\"\u003e\u003ccode\u003e95d6a27\u003c/code\u003e\u003c/a\u003e Update release notes for 1.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/a2bc30474e3313e8bc690428d9c8615b99ffc25d\"\u003e\u003ccode\u003ea2bc304\u003c/code\u003e\u003c/a\u003e Fix Mp4Extractor OutOfBounds exception when sample tables are omitted\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/2142ab0b73bfe32edac50b0b6840ff7176297fdc\"\u003e\u003ccode\u003e2142ab0\u003c/code\u003e\u003c/a\u003e Fix scrubbing mode's intermittent seek prevention for image rendering\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/b323c9d818da8e36d8a6308b27bcfaeb079fa70f\"\u003e\u003ccode\u003eb323c9d\u003c/code\u003e\u003c/a\u003e Add specific error codes for failure to render errors.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/a8ef4090a9f018eba9455eb70d496b3884e50443\"\u003e\u003ccode\u003ea8ef409\u003c/code\u003e\u003c/a\u003e Fix redirection of stderr in bazelisk check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/14f8248c55f8b17bc63a04b7a4363a8a150bf472\"\u003e\u003ccode\u003e14f8248\u003c/code\u003e\u003c/a\u003e Improve memory management in av1 decoder\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/4a584060a8925ccd512dc50f79c765f58413d558\"\u003e\u003ccode\u003e4a58406\u003c/code\u003e\u003c/a\u003e Fix flaky tests in MediaSessionCompatCallbackWithMediaControllerTest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/de3e9e7d586876dce8b66ef10eb5e0910afd5d54\"\u003e\u003ccode\u003ede3e9e7\u003c/code\u003e\u003c/a\u003e Fix crash in SampleQueue when seeking into canceled chunks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/910c4027ff0137fc5c827dfab465aa1ece37487c\"\u003e\u003ccode\u003e910c402\u003c/code\u003e\u003c/a\u003e Fix video track selection for Dolby Vision fallback tracks\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/androidx/media/compare/1.5.1...1.10.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.media3:media3-exoplayer-hls` from 1.5.1 to 1.10.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/releases\"\u003eandroidx.media3:media3-exoplayer-hls's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.10.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eonAudioSessionIdChanged\u003c/code\u003e in \u003ccode\u003eSimpleBasePlayer\u003c/code\u003e and \u003ccode\u003eForwardingSimpleBasePlayer\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix race condition related to audio session id generation that could lead to an \u003ccode\u003eIllegalStateException\u003c/code\u003e with tunneling mode (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3099\"\u003e#3099\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix possible app crashes when recovering from decoder errors with renderer prewarming.\u003c/li\u003e\n\u003cli\u003eFix issue where video artifacts were caused by supplying initialization data when using an AV1-based Dolby Vision codec (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3153\"\u003e#3153\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eAdjust track selection logic in \u003ccode\u003eVideoTrackInfo\u003c/code\u003e to resolve fallback MIME types and move HDR and codec score preferences to quality preferences (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3135\"\u003e#3135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP3: Ignore Xing data length if it is longer than the known stream length (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3117\"\u003e#3117\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e in \u003ccode\u003eMp4Extractor\u003c/code\u003e when \u003ccode\u003eFLAG_OMIT_TRACK_SAMPLE_TABLE\u003c/code\u003e is set and the track lacks a sync sample (\u003ccode\u003estss\u003c/code\u003e) box.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAudio:\n\u003cul\u003e\n\u003cli\u003eFix bug where audio events may be misrouted if multiple audio renderers are added to the player.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eVideo:\n\u003cul\u003e\n\u003cli\u003eAdjust logic for codec reuse at frame rate changes on API below 30 to avoid codec resets where they are not beneficial (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3120\"\u003e#3120\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDisable forced synchronization workaround in \u003ccode\u003equeueSecureInputBuffer\u003c/code\u003e for API 31+. The workaround was an artificial bottleneck that forced decryption to run serially which prevented garbled video due to a framework issue existing prior to API 31.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImage:\n\u003cul\u003e\n\u003cli\u003eFix issue in scrubbing mode where image updates would only take effect when the user \u0026quot;stops scrubbing\u0026quot; (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2815\"\u003e#2815\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSession:\n\u003cul\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eForegroundServiceStartNotAllowedException\u003c/code\u003e wasn't propagated across thread boundaries in case the application thread is not the main thread (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2499\"\u003e#2499\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eCOMMAND_SEEK_TO_MEDIA_ITEM\u003c/code\u003e is not available in a \u003ccode\u003eMediaController\u003c/code\u003e when connecting to a platform-only session that supports seeking to other items but no playlist modifications.\u003c/li\u003e\n\u003cli\u003eFix issue where \u003ccode\u003eMediaController\u003c/code\u003e can't set media items on platform media sessions that don't allow \u003ccode\u003ePREPARE_FROM\u003c/code\u003e actions.\u003c/li\u003e\n\u003cli\u003eFix bug where own process wasn't marked with \u003ccode\u003eController.isTrusted()\u003c/code\u003e on API 27 or before when connecting via platform controllers.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eHLS extension:\n\u003cul\u003e\n\u003cli\u003eFix a bug where an \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e is thrown during stream fallback if the track selection is a subset of the available tracks (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3161\"\u003e#3161\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix an issue where the initialization segment was not carried over across media playlist updates if the \u003ccode\u003e#EXT-X-MAP\u003c/code\u003e tag was not repeated in subsequent updates (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3105\"\u003e#3105\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eDASH extension:\n\u003cul\u003e\n\u003cli\u003eFix crash in \u003ccode\u003eSampleQueue\u003c/code\u003e when seeking into a chunk that is currently being canceled.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003ePromote \u003ccode\u003ePlayer.mute()\u003c/code\u003e and \u003ccode\u003ePlayer.unmute()\u003c/code\u003e from \u003ccode\u003eUnstableApi\u003c/code\u003e to stable.\u003c/li\u003e\n\u003cli\u003ePromote \u003ccode\u003eFormat.pcmEncoding\u003c/code\u003e and \u003ccode\u003eC.PcmEncoding\u003c/code\u003e from \u003ccode\u003eUnstableApi\u003c/code\u003e to stable.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.primaryTrackGroupId\u003c/code\u003e to identify the primary group of embedded \u003ccode\u003eFormat\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/androidx/media/issues/294\"\u003e#294\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eAdd clipping capabilities to \u003ccode\u003eAdsMediaSource\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd support for dynamic scheduling in \u003ccode\u003eMediaCodecVideoRenderer\u003c/code\u003e to better align scheduling work and CPU wake-cycles to when video frames can be processed. You can enable this using \u003ccode\u003eexperimentalSetEnableMediaCodecVideoRendererDurationToProgressUs()\u003c/code\u003e in the \u003ccode\u003eDefaultRenderersFactory\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAllow setting a custom \u003ccode\u003eDataSource.Factory\u003c/code\u003e in \u003ccode\u003eDefaultPreloadManager.Builder\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eExoPlayer\u003c/code\u003e to be mocked without Robolectric by moving some default constants to \u003ccode\u003eExoPlayer.Builder\u003c/code\u003e. Mocking this complex interface is not generally encouraged - only when the usage is minimal/simple/incidental (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2985\"\u003e#2985\u003c/a\u003e).\n\u003cul\u003e\n\u003cli\u003eThis required moving \u003ccode\u003eDEFAULT_STUCK_PLAYING_DETECTION_TIMEOUT_MS\u003c/code\u003e from \u003ccode\u003eExoPlayer\u003c/code\u003e to \u003ccode\u003eExoPlayer.Builder\u003c/code\u003e (without deprecation).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix a bug where \u003ccode\u003eProgressiveMediaSource\u003c/code\u003e propagates out-of-date timeline info to the player, and the queued periods unexpectedly get removed (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3016\"\u003e#3016\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix issue where ExoPlayer would not request delayed audio focus when playback is requested during phone calls.\u003c/li\u003e\n\u003cli\u003eFix bug where transitions from on-demand to live content may cause re-buffers at the end of the on-demand content (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3052\"\u003e#3052\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Dolby Vision Profile 10 (\u003ca href=\"https://redirect.github.com/androidx/media/pull/2830\"\u003e#2830\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where an uninitialized pre roll ad produced an \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3125\"\u003e#3125\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eCompositionPlayer:\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eEditedMediaItem.removeVideo\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTransformer:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eEditedMediaItem.Builder.setFrameRate()\u003c/code\u003e can now set a maximum output frame rate for video, which is particularly helpful when increasing media speed with \u003ccode\u003esetSpeed()\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/blob/release/RELEASENOTES.md\"\u003eandroidx.media3:media3-exoplayer-hls's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e1.10.1 (2026-05-12)\u003c/h3\u003e\n\u003cp\u003eThis release includes the following changes since \u003ca href=\"https://github.com/androidx/media/blob/release/#1100-2026-03-25\"\u003e1.10.0\u003c/a\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eonAudioSessionIdChanged\u003c/code\u003e in \u003ccode\u003eSimpleBasePlayer\u003c/code\u003e and\n\u003ccode\u003eForwardingSimpleBasePlayer\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix race condition related to audio session id generation that could\nlead to an \u003ccode\u003eIllegalStateException\u003c/code\u003e with tunneling mode.\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/3099\"\u003e#3099\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix possible app crashes when recovering from decoder errors with\nrenderer prewarming.\u003c/li\u003e\n\u003cli\u003eFix issue where video artifacts were caused by supplying initialization\ndata when using an AV1-based Dolby Vision codec\n(\u003ca href=\"https://redirect.github.com/androidx/media/pull/3153\"\u003e#3153\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eAdjust track selection logic in \u003ccode\u003eVideoTrackInfo\u003c/code\u003e to resolve fallback\nMIME types and move HDR and codec score preferences to quality\npreferences (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3135\"\u003e#3135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP3: Ignore Xing data length if it is longer than the known stream\nlength (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3117\"\u003e#3117\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e in \u003ccode\u003eMp4Extractor\u003c/code\u003e when\n\u003ccode\u003eFLAG_OMIT_TRACK_SAMPLE_TABLE\u003c/code\u003e is set and the track lacks a sync sample\n(\u003ccode\u003estss\u003c/code\u003e) box.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAudio:\n\u003cul\u003e\n\u003cli\u003eFix bug where audio events may be misrouted if multiple audio renderers\nare added to the player.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eVideo:\n\u003cul\u003e\n\u003cli\u003eAdjust logic for codec reuse at frame rate changes on API below 30 to\navoid codec resets where they are not beneficial\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/3120\"\u003e#3120\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDisable forced synchronization workaround in \u003ccode\u003equeueSecureInputBuffer\u003c/code\u003e\nfor API 31+. The workaround was an artificial bottleneck that forced\ndecryption to run serially which prevented garbled video due to a\nframework issue existing prior to API 31.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImage:\n\u003cul\u003e\n\u003cli\u003eFix issue in scrubbing mode where image updates would only take effect\nwhen the user \u0026quot;stops scrubbing\u0026quot;\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/2815\"\u003e#2815\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSession:\n\u003cul\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eForegroundServiceStartNotAllowedException\u003c/code\u003e wasn't\npropagated across thread boundaries in case the application thread is\nnot the main thread\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/2499\"\u003e#2499\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eCOMMAND_SEEK_TO_MEDIA_ITEM\u003c/code\u003e is not available in a\n\u003ccode\u003eMediaController\u003c/code\u003e when connecting to a platform-only session that\nsupports seeking to other items but no playlist modifications.\u003c/li\u003e\n\u003cli\u003eFix issue where \u003ccode\u003eMediaController\u003c/code\u003e can't set media items on platform\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/5fb306449733dd71595700c1227ad6087578c559\"\u003e\u003ccode\u003e5fb3064\u003c/code\u003e\u003c/a\u003e Bump version to 1.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/95d6a273bd675ef168525ac3bb54aa6a3f1c76ce\"\u003e\u003ccode\u003e95d6a27\u003c/code\u003e\u003c/a\u003e Update release notes for 1.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/a2bc30474e3313e8bc690428d9c8615b99ffc25d\"\u003e\u003ccode\u003ea2bc304\u003c/code\u003e\u003c/a\u003e Fix Mp4Extractor OutOfBounds exception when sample tables are omitted\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/2142ab0b73bfe32edac50b0b6840ff7176297fdc\"\u003e\u003ccode\u003e2142ab0\u003c/code\u003e\u003c/a\u003e Fix scrubbing mode's intermittent seek prevention for image rendering\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/b323c9d818da8e36d8a6308b27bcfaeb079fa70f\"\u003e\u003ccode\u003eb323c9d\u003c/code\u003e\u003c/a\u003e Add specific error codes for failure to render errors.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/a8ef4090a9f018eba9455eb70d496b3884e50443\"\u003e\u003ccode\u003ea8ef409\u003c/code\u003e\u003c/a\u003e Fix redirection of stderr in bazelisk check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/14f8248c55f8b17bc63a04b7a4363a8a150bf472\"\u003e\u003ccode\u003e14f8248\u003c/code\u003e\u003c/a\u003e Improve memory management in av1 decoder\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/4a584060a8925ccd512dc50f79c765f58413d558\"\u003e\u003ccode\u003e4a58406\u003c/code\u003e\u003c/a\u003e Fix flaky tests in MediaSessionCompatCallbackWithMediaControllerTest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/de3e9e7d586876dce8b66ef10eb5e0910afd5d54\"\u003e\u003ccode\u003ede3e9e7\u003c/code\u003e\u003c/a\u003e Fix crash in SampleQueue when seeking into canceled chunks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/910c4027ff0137fc5c827dfab465aa1ece37487c\"\u003e\u003ccode\u003e910c402\u003c/code\u003e\u003c/a\u003e Fix video track selection for Dolby Vision fallback tracks\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/androidx/media/compare/1.5.1...1.10.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.media3:media3-ui` from 1.5.1 to 1.10.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/releases\"\u003eandroidx.media3:media3-ui's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.10.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eonAudioSessionIdChanged\u003c/code\u003e in \u003ccode\u003eSimpleBasePlayer\u003c/code\u003e and \u003ccode\u003eForwardingSimpleBasePlayer\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix race condition related to audio session id generation that could lead to an \u003ccode\u003eIllegalStateException\u003c/code\u003e with tunneling mode (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3099\"\u003e#3099\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix possible app crashes when recovering from decoder errors with renderer prewarming.\u003c/li\u003e\n\u003cli\u003eFix issue where video artifacts were caused by supplying initialization data when using an AV1-based Dolby Vision codec (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3153\"\u003e#3153\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eAdjust track selection logic in \u003ccode\u003eVideoTrackInfo\u003c/code\u003e to resolve fallback MIME types and move HDR and codec score preferences to quality preferences (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3135\"\u003e#3135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP3: Ignore Xing data length if it is longer than the known stream length (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3117\"\u003e#3117\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e in \u003ccode\u003eMp4Extractor\u003c/code\u003e when \u003ccode\u003eFLAG_OMIT_TRACK_SAMPLE_TABLE\u003c/code\u003e is set and the track lacks a sync sample (\u003ccode\u003estss\u003c/code\u003e) box.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAudio:\n\u003cul\u003e\n\u003cli\u003eFix bug where audio events may be misrouted if multiple audio renderers are added to the player.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eVideo:\n\u003cul\u003e\n\u003cli\u003eAdjust logic for codec reuse at frame rate changes on API below 30 to avoid codec resets where they are not beneficial (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3120\"\u003e#3120\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDisable forced synchronization workaround in \u003ccode\u003equeueSecureInputBuffer\u003c/code\u003e for API 31+. The workaround was an artificial bottleneck that forced decryption to run serially which prevented garbled video due to a framework issue existing prior to API 31.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImage:\n\u003cul\u003e\n\u003cli\u003eFix issue in scrubbing mode where image updates would only take effect when the user \u0026quot;stops scrubbing\u0026quot; (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2815\"\u003e#2815\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSession:\n\u003cul\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eForegroundServiceStartNotAllowedException\u003c/code\u003e wasn't propagated across thread boundaries in case the application thread is not the main thread (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2499\"\u003e#2499\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eCOMMAND_SEEK_TO_MEDIA_ITEM\u003c/code\u003e is not available in a \u003ccode\u003eMediaController\u003c/code\u003e when connecting to a platform-only session that supports seeking to other items but no playlist modifications.\u003c/li\u003e\n\u003cli\u003eFix issue where \u003ccode\u003eMediaController\u003c/code\u003e can't set media items on platform media sessions that don't allow \u003ccode\u003ePREPARE_FROM\u003c/code\u003e actions.\u003c/li\u003e\n\u003cli\u003eFix bug where own process wasn't marked with \u003ccode\u003eController.isTrusted()\u003c/code\u003e on API 27 or before when connecting via platform controllers.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eHLS extension:\n\u003cul\u003e\n\u003cli\u003eFix a bug where an \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e is thrown during stream fallback if the track selection is a subset of the available tracks (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3161\"\u003e#3161\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix an issue where the initialization segment was not carried over across media playlist updates if the \u003ccode\u003e#EXT-X-MAP\u003c/code\u003e tag was not repeated in subsequent updates (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3105\"\u003e#3105\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eDASH extension:\n\u003cul\u003e\n\u003cli\u003eFix crash in \u003ccode\u003eSampleQueue\u003c/code\u003e when seeking into a chunk that is currently being canceled.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003ePromote \u003ccode\u003ePlayer.mute()\u003c/code\u003e and \u003ccode\u003ePlayer.unmute()\u003c/code\u003e from \u003ccode\u003eUnstableApi\u003c/code\u003e to stable.\u003c/li\u003e\n\u003cli\u003ePromote \u003ccode\u003eFormat.pcmEncoding\u003c/code\u003e and \u003ccode\u003eC.PcmEncoding\u003c/code\u003e from \u003ccode\u003eUnstableApi\u003c/code\u003e to stable.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.primaryTrackGroupId\u003c/code\u003e to identify the primary group of embedded \u003ccode\u003eFormat\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/androidx/media/issues/294\"\u003e#294\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eAdd clipping capabilities to \u003ccode\u003eAdsMediaSource\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd support for dynamic scheduling in \u003ccode\u003eMediaCodecVideoRenderer\u003c/code\u003e to better align scheduling work and CPU wake-cycles to when video frames can be processed. You can enable this using \u003ccode\u003eexperimentalSetEnableMediaCodecVideoRendererDurationToProgressUs()\u003c/code\u003e in the \u003ccode\u003eDefaultRenderersFactory\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAllow setting a custom \u003ccode\u003eDataSource.Factory\u003c/code\u003e in \u003ccode\u003eDefaultPreloadManager.Builder\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eExoPlayer\u003c/code\u003e to be mocked without Robolectric by moving some default constants to \u003ccode\u003eExoPlayer.Builder\u003c/code\u003e. Mocking this complex interface is not generally encouraged - only when the usage is minimal/simple/incidental (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2985\"\u003e#2985\u003c/a\u003e).\n\u003cul\u003e\n\u003cli\u003eThis required moving \u003ccode\u003eDEFAULT_STUCK_PLAYING_DETECTION_TIMEOUT_MS\u003c/code\u003e from \u003ccode\u003eExoPlayer\u003c/code\u003e to \u003ccode\u003eExoPlayer.Builder\u003c/code\u003e (without deprecation).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix a bug where \u003ccode\u003eProgressiveMediaSource\u003c/code\u003e propagates out-of-date timeline info to the player, and the queued periods unexpectedly get removed (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3016\"\u003e#3016\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix issue where ExoPlayer would not request delayed audio focus when playback is requested during phone calls.\u003c/li\u003e\n\u003cli\u003eFix bug where transitions from on-demand to live content may cause re-buffers at the end of the on-demand content (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3052\"\u003e#3052\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Dolby Vision Profile 10 (\u003ca href=\"https://redirect.github.com/androidx/media/pull/2830\"\u003e#2830\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where an uninitialized pre roll ad produced an \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3125\"\u003e#3125\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eCompositionPlayer:\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eEditedMediaItem.removeVideo\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTransformer:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eEditedMediaItem.Builder.setFrameRate()\u003c/code\u003e can now set a maximum output frame rate for video, which is particularly helpful when increasing media speed with \u003ccode\u003esetSpeed()\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/blob/release/RELEASENOTES.md\"\u003eandroidx.media3:media3-ui's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e1.10.1 (2026-05-12)\u003c/h3\u003e\n\u003cp\u003eThis release includes the following changes since \u003ca href=\"https://github.com/androidx/media/blob/release/#1100-2026-03-25\"\u003e1.10.0\u003c/a\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eonAudioSessionIdChanged\u003c/code\u003e in \u003ccode\u003eSimpleBasePlayer\u003c/code\u003e and\n\u003ccode\u003eForwardingSimpleBasePlayer\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix race condition related to audio session id generation that could\nlead to an \u003ccode\u003eIllegalStateException\u003c/code\u003e with tunneling mode.\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/3099\"\u003e#3099\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix possible app crashes when recovering from decoder errors with\nrenderer prewarming.\u003c/li\u003e\n\u003cli\u003eFix issue where video artifacts were caused by supplying initialization\ndata when using an AV1-based Dolby Vision codec\n(\u003ca href=\"https://redirect.github.com/androidx/media/pull/3153\"\u003e#3153\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eAdjust track selection logic in \u003ccode\u003eVideoTrackInfo\u003c/code\u003e to resolve fallback\nMIME types and move HDR and codec score preferences to quality\npreferences (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3135\"\u003e#3135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP3: Ignore Xing data length if it is longer than the known stream\nlength (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3117\"\u003e#3117\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e in \u003ccode\u003eMp4Extractor\u003c/code\u003e when\n\u003ccode\u003eFLAG_OMIT_TRACK_SAMPLE_TABLE\u003c/code\u003e is set and the track lacks a sync sample\n(\u003ccode\u003estss\u003c/code\u003e) box.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAudio:\n\u003cul\u003e\n\u003cli\u003eFix bug where audio events may be misrouted if multiple audio renderers\nare added to the player.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eVideo:\n\u003cul\u003e\n\u003cli\u003eAdjust logic for codec reuse at frame rate changes on API below 30 to\navoid codec resets where they are not beneficial\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/3120\"\u003e#3120\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDisable forced synchronization workaround in \u003ccode\u003equeueSecureInputBuffer\u003c/code\u003e\nfor API 31+. The workaround was an artificial bottleneck that forced\ndecryption to run serially which prevented garbled video due to a\nframework issue existing prior to API 31.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImage:\n\u003cul\u003e\n\u003cli\u003eFix issue in scrubbing mode where image updates would only take effect\nwhen the user \u0026quot;stops scrubbing\u0026quot;\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/2815\"\u003e#2815\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSession:\n\u003cul\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eForegroundServiceStartNotAllowedException\u003c/code\u003e wasn't\npropagated across thread boundaries in case the application thread is\nnot the main thread\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/2499\"\u003e#2499\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eCOMMAND_SEEK_TO_MEDIA_ITEM\u003c/code\u003e is not available in a\n\u003ccode\u003eMediaController\u003c/code\u003e when connecting to a platform-only session that\nsupports seeking to other items but no playlist modifications.\u003c/li\u003e\n\u003cli\u003eFix issue where \u003ccode\u003eMediaController\u003c/code\u003e can't set media items on platform\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/5fb306449733dd71595700c1227ad6087578c559\"\u003e\u003ccode\u003e5fb3064\u003c/code\u003e\u003c/a\u003e Bump version to 1.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/95d6a273bd675ef168525ac3bb54aa6a3f1c76ce\"\u003e\u003ccode\u003e95d6a27\u003c/code\u003e\u003c/a\u003e Update release notes for 1.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/a2bc30474e3313e8bc690428d9c8615b99ffc25d\"\u003e\u003ccode\u003ea2bc304\u003c/code\u003e\u003c/a\u003e Fix Mp4Extractor OutOfBounds exception when sample tables are omitted\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/2142ab0b73bfe32edac50b0b6840ff7176297fdc\"\u003e\u003ccode\u003e2142ab0\u003c/code\u003e\u003c/a\u003e Fix scrubbing mode's intermittent seek prevention for image rendering\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/b323c9d818da8e36d8a6308b27bcfaeb079fa70f\"\u003e\u003ccode\u003eb323c9d\u003c/code\u003e\u003c/a\u003e Add specific error codes for failure to render errors.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/a8ef4090a9f018eba9455eb70d496b3884e50443\"\u003e\u003ccode\u003ea8ef409\u003c/code\u003e\u003c/a\u003e Fix redirection of stderr in bazelisk check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/14f8248c55f8b17bc63a04b7a4363a8a150bf472\"\u003e\u003ccode\u003e14f8248\u003c/code\u003e\u003c/a\u003e Improve memory management in av1 decoder\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/4a584060a8925ccd512dc50f79c765f58413d558\"\u003e\u003ccode\u003e4a58406\u003c/code\u003e\u003c/a\u003e Fix flaky tests in MediaSessionCompatCallbackWithMediaControllerTest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/de3e9e7d586876dce8b66ef10eb5e0910afd5d54\"\u003e\u003ccode\u003ede3e9e7\u003c/code\u003e\u003c/a\u003e Fix crash in SampleQueue when seeking into canceled chunks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/910c4027ff0137fc5c827dfab465aa1ece37487c\"\u003e\u003ccode\u003e910c402\u003c/code\u003e\u003c/a\u003e Fix video track selection for Dolby Vision fallback tracks\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/androidx/media/compare/1.5.1...1.10.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.media3:media3-session` from 1.5.1 to 1.10.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/releases\"\u003eandroidx.media3:media3-session's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.10.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eonAudioSessionIdChanged\u003c/code\u003e in \u003ccode\u003eSimpleBasePlayer\u003c/code\u003e and \u003ccode\u003eForwardingSimpleBasePlayer\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix race condition related to audio session id generation that could lead to an \u003ccode\u003eIllegalStateException\u003c/code\u003e with tunneling mode (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3099\"\u003e#3099\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix possible app crashes when recovering from decoder errors with renderer prewarming.\u003c/li\u003e\n\u003cli\u003eFix issue where video artifacts were caused by supplying initialization data when using an AV1-based Dolby Vision codec (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3153\"\u003e#3153\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eAdjust track selection logic in \u003ccode\u003eVideoTrackInfo\u003c/code\u003e to resolve fallback MIME types and move HDR and codec score preferences to quality preferences (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3135\"\u003e#3135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP3: Ignore Xing data length if it is longer than the known stream length (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3117\"\u003e#3117\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e in \u003ccode\u003eMp4Extractor\u003c/code\u003e when \u003ccode\u003eFLAG_OMIT_TRACK_SAMPLE_TABLE\u003c/code\u003e is set and the track lacks a sync sample (\u003ccode\u003estss\u003c/code\u003e) box.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAudio:\n\u003cul\u003e\n\u003cli\u003eFix bug where audio events may be misrouted if multiple audio renderers are added to the player.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eVideo:\n\u003cul\u003e\n\u003cli\u003eAdjust logic for codec reuse at frame rate changes on API below 30 to avoid codec resets where they are not beneficial (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3120\"\u003e#3120\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDisable forced synchronization workaround in \u003ccode\u003equeueSecureInputBuffer\u003c/code\u003e for API 31+. The workaround was an artificial bottleneck that forced decryption to run serially which prevented garbled video due to a framework issue existing prior to API 31.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImage:\n\u003cul\u003e\n\u003cli\u003eFix issue in scrubbing mode where image updates would only take effect when the user \u0026quot;stops scrubbing\u0026quot; (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2815\"\u003e#2815\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSession:\n\u003cul\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eForegroundServiceStartNotAllowedException\u003c/code\u003e wasn't propagated across thread boundaries in case the application thread is not the main thread (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2499\"\u003e#2499\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eCOMMAND_SEEK_TO_MEDIA_ITEM\u003c/code\u003e is not available in a \u003ccode\u003eMediaController\u003c/code\u003e when connecting to a platform-only session that supports seeking to other items but no playlist modifications.\u003c/li\u003e\n\u003cli\u003eFix issue where \u003ccode\u003eMediaController\u003c/code\u003e can't set media items on platform media sessions that don't allow \u003ccode\u003ePREPARE_FROM\u003c/code\u003e actions.\u003c/li\u003e\n\u003cli\u003eFix bug where own process wasn't marked with \u003ccode\u003eController.isTrusted()\u003c/code\u003e on API 27 or before when connecting via platform controllers.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eHLS extension:\n\u003cul\u003e\n\u003cli\u003eFix a bug where an \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e is thrown during stream fallback if the track selection is a subset of the available tracks (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3161\"\u003e#3161\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix an issue where the initialization segment was not carried over across media playlist updates if the \u003ccode\u003e#EXT-X-MAP\u003c/code\u003e tag was not repeated in subsequent updates (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3105\"\u003e#3105\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eDASH extension:\n\u003cul\u003e\n\u003cli\u003eFix crash in \u003ccode\u003eSampleQueue\u003c/code\u003e when seeking into a chunk that is currently being canceled.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003ePromote \u003ccode\u003ePlayer.mute()\u003c/code\u003e and \u003ccode\u003ePlayer.unmute()\u003c/code\u003e from \u003ccode\u003eUnstableApi\u003c/code\u003e to stable.\u003c/li\u003e\n\u003cli\u003ePromote \u003ccode\u003eFormat.pcmEncoding\u003c/code\u003e and \u003ccode\u003eC.PcmEncoding\u003c/code\u003e from \u003ccode\u003eUnstableApi\u003c/code\u003e to stable.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.primaryTrackGroupId\u003c/code\u003e to identify the primary group of embedded \u003ccode\u003eFormat\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/androidx/media/issues/294\"\u003e#294\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eAdd clipping capabilities to \u003ccode\u003eAdsMediaSource\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd support for dynamic scheduling in \u003ccode\u003eMediaCodecVideoRenderer\u003c/code\u003e to better align scheduling work and CPU wake-cycles to when video frames can be processed. You can enable this using \u003ccode\u003eexperimentalSetEnableMediaCodecVideoRendererDurationToProgressUs()\u003c/code\u003e in the \u003ccode\u003eDefaultRenderersFactory\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAllow setting a custom \u003ccode\u003eDataSource.Factory\u003c/code\u003e in \u003ccode\u003eDefaultPreloadManager.Builder\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eExoPlayer\u003c/code\u003e to be mocked without Robolectric by moving some default constants to \u003ccode\u003eExoPlayer.Builder\u003c/code\u003e. Mocking this complex interface is not generally encouraged - only when the usage is minimal/simple/incidental (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2985\"\u003e#2985\u003c/a\u003e).\n\u003cul\u003e\n\u003cli\u003eThis required moving \u003ccode\u003eDEFAULT_STUCK_PLAYING_DETECTION_TIMEOUT_MS\u003c/code\u003e from \u003ccode\u003eExoPlayer\u003c/code\u003e to \u003ccode\u003eExoPlayer.Builder\u003c/code\u003e (without deprecation).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix a bug where \u003ccode\u003eProgressiveMediaSource\u003c/code\u003e propagates out-of-date timeline info to the player, and the queued periods unexpectedly get removed (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3016\"\u003e#3016\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix issue where ExoPlayer would not request delayed audio focus when playback is requested during phone calls.\u003c/li\u003e\n\u003cli\u003eFix bug where transitions from on-demand to live content may cause re-buffers at the end of the on-demand content (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3052\"\u003e#3052\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Dolby Vision Profile 10 (\u003ca href=\"https://redirect.github.com/androidx/media/pull/2830\"\u003e#2830\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where an uninitialized pre roll ad produced an \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3125\"\u003e#3125\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eCompositionPlayer:\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eEditedMediaItem.removeVideo\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTransformer:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eEditedMediaItem.Builder.setFrameRate()\u003c/code\u003e can now set a maximum output frame rate for video, which is particularly helpful when increasing media speed with \u003ccode\u003esetSpeed()\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/blob/release/RELEASENOTES.md\"\u003eandroidx.media3:media3-session's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e1.10.1 (2026-05-12)\u003c/h3\u003e\n\u003cp\u003eThis release includes the following changes since \u003ca href=\"https://github.com/androidx/media/blob/release/#1100-2026-03-25\"\u003e1.10.0\u003c/a\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eonAudioSessionIdChanged\u003c/code\u003e in \u003ccode\u003eSimpleBasePlayer\u003c/code\u003e and\n\u003ccode\u003eForwardingSimpleBasePlayer\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix race condition related to audio session id generation that could\nlead to an \u003ccode\u003eIllegalStateException\u003c/code\u003e with tunneling mode.\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/3099\"\u003e#3099\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix possible app crashes when recovering from decoder errors with\nrenderer prewarming.\u003c/li\u003e\n\u003cli\u003eFix issue where video artifacts were caused by supplying initialization\ndata when using an AV1-based Dolby Vision codec\n(\u003ca href=\"https://redirect.github.com/androidx/media/pull/3153\"\u003e#3153\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eAdjust track selection logic in \u003ccode\u003eVideoTrackInfo\u003c/code\u003e to resolve fallback\nMIME types and move HDR and codec score preferences to quality\npreferences (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3135\"\u003e#3135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP3: Ignore Xing data length if it is longer than the known stream\nlength (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3117\"\u003e#3117\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e in \u003ccode\u003eMp4Extractor\u003c/code\u003e when\n\u003ccode\u003eFLAG_OMIT_TRACK_SAMPLE_TABLE\u003c/code\u003e is set and the track lacks a sync sample\n(\u003ccode\u003estss\u003c/code\u003e) box.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAudio:\n\u003cul\u003e\n\u003cli\u003eFix bug where audio events may be misrouted if multiple audio renderers\nare added to the player.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eVideo:\n\u003cul\u003e\n\u003cli\u003eAdjust logic for codec reuse at frame rate changes on API below 30 to\navoid codec resets where they are not beneficial\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/3120\"\u003e#3120\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDisable forced synchronization workaround in \u003ccode\u003equeueSecureInputBuffer\u003c/code\u003e\nfor API 31+. The workaround was an artificial bottleneck that forced\ndecryption to run serially which prevented garbled video due to a\nframework issue existing prior to API 31.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImage:\n\u003cul\u003e\n\u003cli\u003eFix issue in scrubbing mode where image updates would only take effect\nwhen the user \u0026quot;stops scrubbing\u0026quot;\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/2815\"\u003e#2815\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSession:\n\u003cul\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eForegroundServiceStartNotAllowedException\u003c/code\u003e wasn't\npropagated across thread boundaries in case the application thread is\nnot the main thread\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/2499\"\u003e#2499\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eCOMMAND_SEEK_TO_MEDIA_ITEM\u003c/code\u003e is not available in a\n\u003ccode\u003eMediaController\u003c/code\u003e when connecting to a platform-only session that\nsupports seeking to other items but no playlist modifications.\u003c/li\u003e\n\u003cli\u003eFix issue where \u003ccode\u003eMediaController\u003c/code\u003e can't set media items on platform\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/5fb306449733dd71595700c1227ad6087578c559\"\u003e\u003ccode\u003e5fb3064\u003c/code\u003e\u003c/a\u003e Bump version to 1.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/95d6a273bd675ef168525ac3bb54aa6a3f1c76ce\"\u003e\u003ccode\u003e95d6a27\u003c/code\u003e\u003c/a\u003e Update release notes for 1.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/a2bc30474e3313e8bc690428d9c8615b99ffc25d\"\u003e\u003ccode\u003ea2bc304\u003c/code\u003e\u003c/a\u003e Fix Mp4Extractor OutOfBounds exception when sample tables are omitted\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/2142ab0b73bfe32edac50b0b6840ff7176297fdc\"\u003e\u003ccode\u003e2142ab0\u003c/code\u003e\u003c/a\u003e Fix scrubbing mode's intermittent seek prevention for image rendering\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/b323c9d818da8e36d8a6308b27bcfaeb079fa70f\"\u003e\u003ccode\u003eb323c9d\u003c/code\u003e\u003c/a\u003e Add specific error codes for failure to render errors.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/a8ef4090a9f018eba9455eb70d496b3884e50443\"\u003e\u003ccode\u003ea8ef409\u003c/code\u003e\u003c/a\u003e Fix redirection of stderr in bazelisk check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/14f8248c55f8b17bc63a04b7a4363a8a150bf472\"\u003e\u003ccode\u003e14f8248\u003c/code\u003e\u003c/a\u003e Improve memory management in av1 decoder\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/4a584060a8925ccd512dc50f79c765f58413d558\"\u003e\u003ccode\u003e4a58406\u003c/code\u003e\u003c/a\u003e Fix flaky tests in MediaSessionCompatCallbackWithMediaControllerTest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/de3e9e7d586876dce8b66ef10eb5e0910afd5d54\"\u003e\u003ccode\u003ede3e9e7\u003c/code\u003e\u003c/a\u003e Fix crash in SampleQueue when seeking into canceled chunks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/910c4027ff0137fc5c827dfab465aa1ece37487c\"\u003e\u003ccode\u003e910c402\u003c/code\u003e\u003c/a\u003e Fix video track selection for Dolby Vision fallback tracks\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/androidx/media/compare/1.5.1...1.10.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.media3:media3-exoplayer-hls` from 1.5.1 to 1.10.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/releases\"\u003eandroidx.media3:media3-exoplayer-hls's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.10.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eonAudioSessionIdChanged\u003c/code\u003e in \u003ccode\u003eSimpleBasePlayer\u003c/code\u003e and \u003ccode\u003eForwardingSimpleBasePlayer\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix race condition related to audio session id generation that could lead to an \u003ccode\u003eIllegalStateException\u003c/code\u003e with tunneling mode (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3099\"\u003e#3099\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix possible app crashes when recovering from decoder errors with renderer prewarming.\u003c/li\u003e\n\u003cli\u003eFix issue where video artifacts were caused by supplying initialization data when using an AV1-based Dolby Vision codec (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3153\"\u003e#3153\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eAdjust track selection logic in \u003ccode\u003eVideoTrackInfo\u003c/code\u003e to resolve fallback MIME types and move HDR and codec score preferences to quality preferences (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3135\"\u003e#3135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP3: Ignore Xing data length if it is longer than the known stream length (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3117\"\u003e#3117\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e in \u003ccode\u003eMp4Extractor\u003c/code\u003e when \u003ccode\u003eFLAG_OMIT_TRACK_SAMPLE_TABLE\u003c/code\u003e is set and the track lacks a sync sample (\u003ccode\u003estss\u003c/code\u003e) box.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAudio:\n\u003cul\u003e\n\u003cli\u003eFix bug where audio events may be misrouted if multiple audio renderers are added to the player.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eVideo:\n\u003cul\u003e\n\u003cli\u003eAdjust logic for codec reuse at frame rate changes on API below 30 to avoid codec resets where they are not beneficial (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3120\"\u003e#3120\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDisable forced synchronization workaround in \u003ccode\u003equeueSecureInputBuffer\u003c/code\u003e for API 31+. The workaround was an artificial bottleneck that forced decryption to run serially which prevented garbled video due to a framework issue existing prior to API 31.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImage:\n\u003cul\u003e\n\u003cli\u003eFix issue in scrubbing mode where image updates would only take effect when the user \u0026quot;stops scrubbing\u0026quot; (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2815\"\u003e#2815\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSession:\n\u003cul\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eForegroundServiceStartNotAllowedException\u003c/code\u003e wasn't propagated across thread boundaries in case the application thread is not the main thread (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2499\"\u003e#2499\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eCOMMAND_SEEK_TO_MEDIA_ITEM\u003c/code\u003e is not available in a \u003ccode\u003eMediaController\u003c/code\u003e when connecting to a platform-only session that supports seeking to other items but no playlist modifications.\u003c/li\u003e\n\u003cli\u003eFix issue where \u003ccode\u003eMediaController\u003c/code\u003e can't set media items on platform media sessions that don't allow \u003ccode\u003ePREPARE_FROM\u003c/code\u003e actions.\u003c/li\u003e\n\u003cli\u003eFix bug where own process wasn't marked with \u003ccode\u003eController.isTrusted()\u003c/code\u003e on API 27 or before when connecting via platform controllers.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eHLS extension:\n\u003cul\u003e\n\u003cli\u003eFix a bug where an \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e is thrown during stream fallback if the track selection is a subset of the available tracks (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3161\"\u003e#3161\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix an issue where the initialization segment was not carried over across media playlist updates if the \u003ccode\u003e#EXT-X-MAP\u003c/code\u003e tag was not repeated in subsequent updates (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3105\"\u003e#3105\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eDASH extension:\n\u003cul\u003e\n\u003cli\u003eFix crash in \u003ccode\u003eSampleQueue\u003c/code\u003e when seeking into a chunk that is currently being canceled.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003ePromote \u003ccode\u003ePlayer.mute()\u003c/code\u003e and \u003ccode\u003ePlayer.unmute()\u003c/code\u003e from \u003ccode\u003eUnstableApi\u003c/code\u003e to stable.\u003c/li\u003e\n\u003cli\u003ePromote \u003ccode\u003eFormat.pcmEncoding\u003c/code\u003e and \u003ccode\u003eC.PcmEncoding\u003c/code\u003e from \u003ccode\u003eUnstableApi\u003c/code\u003e to stable.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.primaryTrackGroupId\u003c/code\u003e to identify the primary group of embedded \u003ccode\u003eFormat\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/androidx/media/issues/294\"\u003e#294\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eAdd clipping capabilities to \u003ccode\u003eAdsMediaSource\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd support for dynamic scheduling in \u003ccode\u003eMediaCodecVideoRenderer\u003c/code\u003e to better align scheduling work and CPU wake-cycles to when video frames can be processed. You can enable this using \u003ccode\u003eexperimentalSetEnableMediaCodecVideoRendererDurationToProgressUs()\u003c/code\u003e in the \u003ccode\u003eDefaultRenderersFactory\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAllow setting a custom \u003ccode\u003eDataSource.Factory\u003c/code\u003e in \u003ccode\u003eDefaultPreloadManager.Builder\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eExoPlayer\u003c/code\u003e to be mocked without Robolectric by moving some default constants to \u003ccode\u003eExoPlayer.Builder\u003c/code\u003e. Mocking this complex interface is not generally encouraged - only when the usage is minimal/simple/incidental (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2985\"\u003e#2985\u003c/a\u003e).\n\u003cul\u003e\n\u003cli\u003eThis required moving \u003ccode\u003eDEFAULT_STUCK_PLAYING_DETECTION_TIMEOUT_MS\u003c/code\u003e from \u003ccode\u003eExoPlayer\u003c/code\u003e to \u003ccode\u003eExoPlayer.Builder\u003c/code\u003e (without deprecation).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix a bug where \u003ccode\u003eProgressiveMediaSource\u003c/code\u003e propagates out-of-date timeline info to the player, and the queued periods unexpectedly get removed (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3016\"\u003e#3016\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix issue where ExoPlayer would not request delayed audio focus when playback is requested during phone calls.\u003c/li\u003e\n\u003cli\u003eFix bug where transitions from on-demand to live content may cause re-buffers at the end of the on-demand content (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3052\"\u003e#3052\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Dolby Vision Profile 10 (\u003ca href=\"https://redirect.github.com/androidx/media/pull/2830\"\u003e#2830\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where an uninitialized pre roll ad produced an \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3125\"\u003e#3125\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eCompositionPlayer:\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eEditedMediaItem.removeVideo\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTransformer:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eEditedMediaItem.Builder.setFrameRate()\u003c/code\u003e can now set a maximum output frame rate for video, which is particularly helpful when increasing media speed with \u003ccode\u003esetSpeed()\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/blob/release/RELEASENOTES.md\"\u003eandroidx.media3:media3-exoplayer-hls's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e1.10.1 (2026-05-12)\u003c/h3\u003e\n\u003cp\u003eThis release includes the following changes since \u003ca href=\"https://github.com/androidx/media/blob/release/#1100-2026-03-25\"\u003e1.10.0\u003c/a\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eonAudioSessionIdChanged\u003c/code\u003e in \u003ccode\u003eSimpleBasePlayer\u003c/code\u003e and\n\u003ccode\u003eForwardingSimpleBasePlayer\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix race condition related to audio session id generation that could\nlead to an \u003ccode\u003eIllegalStateException\u003c/code\u003e with tunneling mode.\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/3099\"\u003e#3099\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix possible app crashes when recovering from decoder errors with\nrenderer prewarming.\u003c/li\u003e\n\u003cli\u003eFix issue where video artifacts were caused by supplying initialization\ndata when using an AV1-based Dolby Vision codec\n(\u003ca href=\"https://redirect.github.com/androidx/media/pull/3153\"\u003e#3153\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eAdjust track selection logic in \u003ccode\u003eVideoTrackInfo\u003c/code\u003e to resolve fallback\nMIME types and move HDR and codec score preferences to quality\npreferences (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3135\"\u003e#3135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP3: Ignore Xing data length if it is longer than the known stream\nlength (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3117\"\u003e#3117\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e in \u003ccode\u003eMp4Extractor\u003c/code\u003e when\n\u003ccode\u003eFLAG_OMIT_TRACK_SAMPLE_TABLE\u003c/code\u003e is set and the track lacks a sync sample\n(\u003ccode\u003estss\u003c/code\u003e) box.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAudio:\n\u003cul\u003e\n\u003cli\u003eFix bug where audio events may be misrouted if multiple audio renderers\nare added to the player.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eVideo:\n\u003cul\u003e\n\u003cli\u003eAdjust logic for codec reuse at frame rate changes on API below 30 to\navoid codec resets where they are not beneficial\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/3120\"\u003e#3120\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDisable forced synchronization workaround in \u003ccode\u003equeueSecureInputBuffer\u003c/code\u003e\nfor API 31+. The workaround was an artificial bottleneck that forced\ndecryption to run serially which prevented garbled video due to a\nframework issue existing prior to API 31.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImage:\n\u003cul\u003e\n\u003cli\u003eFix issue in scrubbing mode where image updates would only take effect\nwhen the user \u0026quot;stops scrubbing\u0026quot;\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/2815\"\u003e#2815\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSession:\n\u003cul\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eForegroundServiceStartNotAllowedException\u003c/code\u003e wasn't\npropagated across thread boundaries in case the application thread is\nnot the main thread\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/2499\"\u003e#2499\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eCOMMAND_SEEK_TO_MEDIA_ITEM\u003c/code\u003e is not available in a\n\u003ccode\u003eMediaController\u003c/code\u003e when connecting to a platform-only session that\nsupports seeking to other items but no playlist modifications.\u003c/li\u003e\n\u003cli\u003eFix issue where \u003ccode\u003eMediaController\u003c/code\u003e can't set media items on platform\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/5fb306449733dd71595700c1227ad6087578c559\"\u003e\u003ccode\u003e5fb3064\u003c/code\u003e\u003c/a\u003e Bump version to 1.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/95d6a273bd675ef168525ac3bb54aa6a3f1c76ce\"\u003e\u003ccode\u003e95d6a27\u003c/code\u003e\u003c/a\u003e Update release notes for 1.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/a2bc30474e3313e8bc690428d9c8615b99ffc25d\"\u003e\u003ccode\u003ea2bc304\u003c/code\u003e\u003c/a\u003e Fix Mp4Extractor OutOfBounds exception when sample tables are omitted\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/2142ab0b73bfe32edac50b0b6840ff7176297fdc\"\u003e\u003ccode\u003e2142ab0\u003c/code\u003e\u003c/a\u003e Fix scrubbing mode's intermittent seek prevention for image rendering\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/b323c9d818da8e36d8a6308b27bcfaeb079fa70f\"\u003e\u003ccode\u003eb323c9d\u003c/code\u003e\u003c/a\u003e Add specific error codes for failure to render errors.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/a8ef4090a9f018eba9455eb70d496b3884e50443\"\u003e\u003ccode\u003ea8ef409\u003c/code\u003e\u003c/a\u003e Fix redirection of stderr in bazelisk check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/14f8248c55f8b17bc63a04b7a4363a8a150bf472\"\u003e\u003ccode\u003e14f8248\u003c/code\u003e\u003c/a\u003e Improve memory management in av1 decoder\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/4a584060a8925ccd512dc50f79c765f58413d558\"\u003e\u003ccode\u003e4a58406\u003c/code\u003e\u003c/a\u003e Fix flaky tests in MediaSessionCompatCallbackWithMediaControllerTest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/de3e9e7d586876dce8b66ef10eb5e0910afd5d54\"\u003e\u003ccode\u003ede3e9e7\u003c/code\u003e\u003c/a\u003e Fix crash in SampleQueue when seeking into canceled chunks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/910c4027ff0137fc5c827dfab465aa1ece37487c\"\u003e\u003ccode\u003e910c402\u003c/code\u003e\u003c/a\u003e Fix video track selection for Dolby Vision fallback tracks\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/androidx/media/compare/1.5.1...1.10.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.media3:media3-ui` from 1.5.1 to 1.10.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/releases\"\u003eandroidx.media3:media3-ui's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.10.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eonAudioSessionIdChanged\u003c/code\u003e in \u003ccode\u003eSimpleBasePlayer\u003c/code\u003e and \u003ccode\u003eForwardingSimpleBasePlayer\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix race condition related to audio session id generation that could lead to an \u003ccode\u003eIllegalStateException\u003c/code\u003e with tunneling mode (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3099\"\u003e#3099\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix possible app crashes when recovering from decoder errors with renderer prewarming.\u003c/li\u003e\n\u003cli\u003eFix issue where video artifacts were caused by supplying initialization data when using an AV1-based Dolby Vision codec (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3153\"\u003e#3153\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eAdjust track selection logic in \u003ccode\u003eVideoTrackInfo\u003c/code\u003e to resolve fallback MIME types and move HDR and codec score preferences to quality preferences (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3135\"\u003e#3135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP3: Ignore Xing data length if it is longer than the known stream length (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3117\"\u003e#3117\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e in \u003ccode\u003eMp4Extractor\u003c/code\u003e when \u003ccode\u003eFLAG_OMIT_TRACK_SAMPLE_TABLE\u003c/code\u003e is set and the track lacks a sync sample (\u003ccode\u003estss\u003c/code\u003e) box.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAudio:\n\u003cul\u003e\n\u003cli\u003eFix bug where audio events may be misrouted if multiple audio renderer...\n\n_Description has been truncated_","html_url":"https://github.com/isnow-git/strix/pull/6","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/isnow-git%2Fstrix/issues/6","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/6/packages"},{"uuid":"4536269037","node_id":"PR_kwDOSpGRQM7gBUbg","number":12,"state":"closed","title":"build: bump the gradle-minor-patch group across 1 directory with 35 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-05-28T00:29:40.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-27T22:48:29.000Z","updated_at":"2026-05-28T00:29:50.000Z","time_to_close":6071,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build: bump","group_name":"gradle-minor-patch","update_count":35,"packages":[{"name":"gradle-wrapper","old_version":"8.11.1","new_version":"8.14.5","repository_url":"https://github.com/gradle/gradle"},{"name":"androidx.core:core-ktx","old_version":"1.15.0","new_version":"1.18.0"},{"name":"androidx.lifecycle:lifecycle-runtime-ktx","old_version":"2.8.7","new_version":"2.10.0"},{"name":"androidx.activity:activity-compose","old_version":"1.9.3","new_version":"1.13.0"},{"name":"androidx.navigation:navigation-compose","old_version":"2.8.5","new_version":"2.9.8"},{"name":"androidx.lifecycle:lifecycle-viewmodel-compose","old_version":"2.8.7","new_version":"2.10.0"},{"name":"androidx.lifecycle:lifecycle-runtime-compose","old_version":"2.8.7","new_version":"2.10.0"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-android","old_version":"1.9.0","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-test","old_version":"1.9.0","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"io.ktor:ktor-server-core","old_version":"3.0.3","new_version":"3.5.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-server-cio","old_version":"3.0.3","new_version":"3.5.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-server-html-builder","old_version":"3.0.3","new_version":"3.5.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-server-content-negotiation","old_version":"3.0.3","new_version":"3.5.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-serialization-kotlinx-json","old_version":"3.0.3","new_version":"3.5.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-server-test-host","old_version":"3.0.3","new_version":"3.5.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"org.jsoup:jsoup","old_version":"1.18.3","new_version":"1.22.2","repository_url":"https://github.com/jhy/jsoup"},{"name":"androidx.test.ext:junit","old_version":"1.2.1","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.6.1","new_version":"3.7.0"},{"name":"androidx.datastore:datastore","old_version":"1.1.1","new_version":"1.2.1"},{"name":"androidx.datastore:datastore-preferences","old_version":"1.1.1","new_version":"1.2.1"},{"name":"androidx.room:room-runtime","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-ktx","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-compiler","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-testing","old_version":"2.6.1","new_version":"2.8.4"},{"name":"net.zetetic:sqlcipher-android","old_version":"4.6.1","new_version":"4.16.0","repository_url":"https://github.com/sqlcipher/sqlcipher-android"},{"name":"androidx.sqlite:sqlite","old_version":"2.4.0","new_version":"2.6.2"},{"name":"com.lambdapioneer.argon2kt:argon2kt","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/lambdapioneer/argon2kt"},{"name":"org.robolectric:robolectric","old_version":"4.13","new_version":"4.16.1","repository_url":"https://github.com/robolectric/robolectric"},{"name":"androidx.test:core","old_version":"1.6.1","new_version":"1.7.0"},{"name":"com.android.application","old_version":"8.7.3","new_version":"8.13.2"},{"name":"org.jetbrains.kotlin.android","old_version":"2.0.21","new_version":"2.3.21","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.0.21","new_version":"2.3.21","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.0.21","new_version":"2.3.21","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jlleitschuh.gradle.ktlint","old_version":"12.1.1","new_version":"12.3.0"},{"name":"com.google.devtools.ksp","old_version":"2.0.21-1.0.28","new_version":"2.3.9","repository_url":"https://github.com/google/ksp"}],"path":null,"ecosystem":"maven"},"body":"Bumps the gradle-minor-patch group with 35 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `8.11.1` | `8.14.5` |\n| androidx.core:core-ktx | `1.15.0` | `1.18.0` |\n| androidx.lifecycle:lifecycle-runtime-ktx | `2.8.7` | `2.10.0` |\n| androidx.activity:activity-compose | `1.9.3` | `1.13.0` |\n| androidx.navigation:navigation-compose | `2.8.5` | `2.9.8` |\n| androidx.lifecycle:lifecycle-viewmodel-compose | `2.8.7` | `2.10.0` |\n| androidx.lifecycle:lifecycle-runtime-compose | `2.8.7` | `2.10.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-android](https://github.com/Kotlin/kotlinx.coroutines) | `1.9.0` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-test](https://github.com/Kotlin/kotlinx.coroutines) | `1.9.0` | `1.11.0` |\n| [io.ktor:ktor-server-core](https://github.com/ktorio/ktor) | `3.0.3` | `3.5.0` |\n| [io.ktor:ktor-server-cio](https://github.com/ktorio/ktor) | `3.0.3` | `3.5.0` |\n| [io.ktor:ktor-server-html-builder](https://github.com/ktorio/ktor) | `3.0.3` | `3.5.0` |\n| [io.ktor:ktor-server-content-negotiation](https://github.com/ktorio/ktor) | `3.0.3` | `3.5.0` |\n| [io.ktor:ktor-serialization-kotlinx-json](https://github.com/ktorio/ktor) | `3.0.3` | `3.5.0` |\n| [io.ktor:ktor-server-test-host](https://github.com/ktorio/ktor) | `3.0.3` | `3.5.0` |\n| [org.jsoup:jsoup](https://github.com/jhy/jsoup) | `1.18.3` | `1.22.2` |\n| androidx.test.ext:junit | `1.2.1` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.6.1` | `3.7.0` |\n| androidx.datastore:datastore | `1.1.1` | `1.2.1` |\n| androidx.datastore:datastore-preferences | `1.1.1` | `1.2.1` |\n| androidx.room:room-runtime | `2.6.1` | `2.8.4` |\n| androidx.room:room-ktx | `2.6.1` | `2.8.4` |\n| androidx.room:room-compiler | `2.6.1` | `2.8.4` |\n| androidx.room:room-testing | `2.6.1` | `2.8.4` |\n| [net.zetetic:sqlcipher-android](https://github.com/sqlcipher/sqlcipher-android) | `4.6.1` | `4.16.0` |\n| androidx.sqlite:sqlite | `2.4.0` | `2.6.2` |\n| [com.lambdapioneer.argon2kt:argon2kt](https://github.com/lambdapioneer/argon2kt) | `1.5.0` | `1.6.0` |\n| [org.robolectric:robolectric](https://github.com/robolectric/robolectric) | `4.13` | `4.16.1` |\n| androidx.test:core | `1.6.1` | `1.7.0` |\n| com.android.application | `8.7.3` | `8.13.2` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.0.21` | `2.3.21` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.0.21` | `2.3.21` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.0.21` | `2.3.21` |\n| org.jlleitschuh.gradle.ktlint | `12.1.1` | `12.3.0` |\n| [com.google.devtools.ksp](https://github.com/google/ksp) | `2.0.21-1.0.28` | `2.3.9` |\n\n\nUpdates `gradle-wrapper` from 8.11.1 to 8.14.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gradle/gradle/releases\"\u003egradle-wrapper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.14.5\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 8.14.5.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eJava 24 support\u003c/li\u003e\n\u003cli\u003eGraalVM Native Image toolchain selection\u003c/li\u003e\n\u003cli\u003eEnhancements to test reporting\u003c/li\u003e\n\u003cli\u003eBuild Authoring improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gradle.org/8.14.5/release-notes.html\"\u003eRead the Release Notes\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe would like to thank the following community members for their contributions to this release of Gradle:\n\u003ca href=\"https://github.com/liutikas\"\u003eAurimas\u003c/a\u003e,\n\u003ca href=\"https://github.com/benjamin-bader\"\u003eBen Bader\u003c/a\u003e,\n\u003ca href=\"https://github.com/Vampire\"\u003eBjörn Kautler\u003c/a\u003e,\n\u003ca href=\"https://github.com/chandre92\"\u003echandre92\u003c/a\u003e,\n\u003ca href=\"https://github.com/dlehammer\"\u003eDaniel Hammer\u003c/a\u003e,\n\u003ca href=\"https://github.com/danishnawab\"\u003eDanish Nawab\u003c/a\u003e,\n\u003ca href=\"https://github.com/DreierF\"\u003eFlorian Dreier\u003c/a\u003e,\n\u003ca href=\"https://github.com/Mengmeiivy\"\u003eIvy Chen\u003c/a\u003e,\n\u003ca href=\"https://github.com/jjohannes\"\u003eJendrik Johannes\u003c/a\u003e,\n\u003ca href=\"https://github.com/jimmy1995-gu\"\u003ejimmy1995-gu\u003c/a\u003e,\n\u003ca href=\"https://github.com/vmadalin\"\u003eMadalin Valceleanu\u003c/a\u003e,\n\u003ca href=\"https://github.com/NaMinhyeok\"\u003eNa Minhyeok\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eUpgrade instructions\u003c/h2\u003e\n\u003cp\u003eSwitch your build to use Gradle 8.14.5 by updating your wrapper:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./gradlew wrapper --gradle-version=8.14.5 \u0026amp;\u0026amp; ./gradlew wrapper\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the Gradle \u003ca href=\"https://docs.gradle.org/8.14.5/userguide/upgrading_version_8.html\"\u003e8.x upgrade guide\u003c/a\u003e to learn about deprecations, breaking changes and other considerations when upgrading.\u003c/p\u003e\n\u003cp\u003eFor Java, Groovy, Kotlin and Android compatibility, see the \u003ca href=\"https://docs.gradle.org/8.14.5/userguide/compatibility.html\"\u003efull compatibility notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReporting problems\u003c/h2\u003e\n\u003cp\u003eIf you find a problem with this release, please file a bug on \u003ca href=\"https://github.com/gradle/gradle/issues\"\u003eGitHub Issues\u003c/a\u003e adhering to our issue guidelines.\nIf you're not sure you're encountering a bug, please use the \u003ca href=\"https://discuss.gradle.org/c/help-discuss\"\u003eforum\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe hope you will build happiness with Gradle, and we look forward to your feedback via \u003ca href=\"https://twitter.com/gradle\"\u003eTwitter\u003c/a\u003e or on \u003ca href=\"https://github.com/gradle\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e8.14.4\u003c/h2\u003e\n\u003cp\u003eThis is a patch release for 8.14. We recommend using 8.14.4 instead of 8.14.\u003c/p\u003e\n\u003cp\u003eThis release addresses two security vulnerabilities:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/security/advisories/GHSA-mqwm-5m85-gmcv\"\u003eFailure to disable repositories failing to answer can expose builds to malicious artifacts\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/security/advisories/GHSA-w78c-w6vf-rw82\"\u003eFailure to disable repositories with unknown host can expose builds to malicious artifacts\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/62345becae08b13e793521816d585102fea66398\"\u003e\u003ccode\u003e62345be\u003c/code\u003e\u003c/a\u003e Finalize release notes for 8.14.5 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37829\"\u003e#37829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/38049c286691bf85cee542f8b2f8dc1cc54dd25d\"\u003e\u003ccode\u003e38049c2\u003c/code\u003e\u003c/a\u003e Finalize release notes for 8.14.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/f3781397d4ad84fcc034f239efe7dc350f564741\"\u003e\u003ccode\u003ef378139\u003c/code\u003e\u003c/a\u003e Update jdks.yaml (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37780\"\u003e#37780\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/4e739b5959a5b0f1c5962cd387143c91b27343d3\"\u003e\u003ccode\u003e4e739b5\u003c/code\u003e\u003c/a\u003e Update jdks.yaml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/d94136aadaa292280b860e5032e7dddc6e116112\"\u003e\u003ccode\u003ed94136a\u003c/code\u003e\u003c/a\u003e Update jdks.yaml (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37704\"\u003e#37704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/a2f6942e453c80634fca32ba0e11a9ce8b7baf48\"\u003e\u003ccode\u003ea2f6942\u003c/code\u003e\u003c/a\u003e Update jdks.yaml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/28df2639ea8752218176288ef6a9e678c779f73b\"\u003e\u003ccode\u003e28df263\u003c/code\u003e\u003c/a\u003e Backport exclude bugfix (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37559\"\u003e#37559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/e03dca12e7b77f5f6ec00f7d81eb8734f7596d52\"\u003e\u003ccode\u003ee03dca1\u003c/code\u003e\u003c/a\u003e Upgrade BouncyCastle to 1.84 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37656\"\u003e#37656\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/987d1a32e4f3d97b14413e9ee2742df820ec6beb\"\u003e\u003ccode\u003e987d1a3\u003c/code\u003e\u003c/a\u003e Bump the Jackson version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/56e392c0f0b9f16bcba1c03f7bd0bae08a82556a\"\u003e\u003ccode\u003e56e392c\u003c/code\u003e\u003c/a\u003e Bump Bouncycastle to 1.84\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gradle/gradle/compare/v8.11.1...v8.14.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.core:core-ktx` from 1.15.0 to 1.18.0\n\nUpdates `androidx.lifecycle:lifecycle-runtime-ktx` from 2.8.7 to 2.10.0\n\nUpdates `androidx.activity:activity-compose` from 1.9.3 to 1.13.0\n\nUpdates `androidx.navigation:navigation-compose` from 2.8.5 to 2.9.8\n\nUpdates `androidx.lifecycle:lifecycle-viewmodel-compose` from 2.8.7 to 2.10.0\n\nUpdates `androidx.lifecycle:lifecycle-runtime-compose` from 2.8.7 to 2.10.0\n\nUpdates `androidx.lifecycle:lifecycle-runtime-compose` from 2.8.7 to 2.10.0\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-android` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874\"\u003e\u003ccode\u003e8564f65\u003c/code\u003e\u003c/a\u003e Version 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c\"\u003e\u003ccode\u003ea4c6af9\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9\"\u003e\u003ccode\u003eef917b4\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd\"\u003e\u003ccode\u003e5ebc421\u003c/code\u003e\u003c/a\u003e Update the release procedure description (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80\"\u003e\u003ccode\u003e95f46a0\u003c/code\u003e\u003c/a\u003e Remove old maven repository settings (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672\"\u003e#4672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc\"\u003e\u003ccode\u003eb4f4f0a\u003c/code\u003e\u003c/a\u003e Fix package name of \u003ccode\u003eToMapCollectionSamplesTest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674\"\u003e#4674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/86738dca7dc9ac82249abc8206263fa0065ee631\"\u003e\u003ccode\u003e86738dc\u003c/code\u003e\u003c/a\u003e Added templates to the issue creation wizard (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/330fcc221fb583f0b119f34191f735a73b827378\"\u003e\u003ccode\u003e330fcc2\u003c/code\u003e\u003c/a\u003e Version 1.11.0-rc02\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/e31cef6e9f2d26794be7d75ecbf3033b6432d582\"\u003e\u003ccode\u003ee31cef6\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/dc6e9f61eaf3a67f4bf474a7987aedc3f16cef37\"\u003e\u003ccode\u003edc6e9f6\u003c/code\u003e\u003c/a\u003e Restore Promise-related functions on Wasm/JS as HIDDEN (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/compare/1.9.0...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-test` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-test's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-test's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874\"\u003e\u003ccode\u003e8564f65\u003c/code\u003e\u003c/a\u003e Version 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c\"\u003e\u003ccode\u003ea4c6af9\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9\"\u003e\u003ccode\u003eef917b4\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd\"\u003e\u003ccode\u003e5ebc421\u003c/code\u003e\u003c/a\u003e Update the release procedure description (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80\"\u003e\u003ccode\u003e95f46a0\u003c/code\u003e\u003c/a\u003e Remove old maven repository settings (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672\"\u003e#4672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc\"\u003e\u003ccode\u003eb4f4f0a\u003c/code\u003e\u003c/a\u003e Fix package name of \u003ccode\u003eToMapCollectionSamplesTest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674\"\u003e#4674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/86738dca7dc9ac82249abc8206263fa0065ee631\"\u003e\u003ccode\u003e86738dc\u003c/code\u003e\u003c/a\u003e Added templates to the issue creation wizard (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/330fcc221fb583f0b119f34191f735a73b827378\"\u003e\u003ccode\u003e330fcc2\u003c/code\u003e\u003c/a\u003e Version 1.11.0-rc02\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/e31cef6e9f2d26794be7d75ecbf3033b6432d582\"\u003e\u003ccode\u003ee31cef6\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/dc6e9f61eaf3a67f4bf474a7987aedc3f16cef37\"\u003e\u003ccode\u003edc6e9f6\u003c/code\u003e\u003c/a\u003e Restore Promise-related functions on Wasm/JS as HIDDEN (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/compare/1.9.0...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-test` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-test's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-test's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874\"\u003e\u003ccode\u003e8564f65\u003c/code\u003e\u003c/a\u003e Version 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c\"\u003e\u003ccode\u003ea4c6af9\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9\"\u003e\u003ccode\u003eef917b4\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd\"\u003e\u003ccode\u003e5ebc421\u003c/code\u003e\u003c/a\u003e Update the release procedure description (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80\"\u003e\u003ccode\u003e95f46a0\u003c/code\u003e\u003c/a\u003e Remove old maven repository settings (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672\"\u003e#4672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc\"\u003e\u003ccode\u003eb4f4f0a\u003c/code\u003e\u003c/a\u003e Fix package name of \u003ccode\u003eToMapCollectionSamplesTest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674\"\u003e#4674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/86738dca7dc9ac82249abc8206263fa0065ee631\"\u003e\u003ccode\u003e86738dc\u003c/code\u003e\u003c/a\u003e Added templates to the issue creation wizard (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/330fcc221fb583f0b119f34191f735a73b827378\"\u003e\u003ccode\u003e330fcc2\u003c/code\u003e\u003c/a\u003e Version 1.11.0-rc02\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/e31cef6e9f2d26794be7d75ecbf3033b6432d582\"\u003e\u003ccode\u003ee31cef6\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/dc6e9f61eaf3a67f4bf474a7987aedc3f16cef37\"\u003e\u003ccode\u003edc6e9f6\u003c/code\u003e\u003c/a\u003e Restore Promise-related functions on Wasm/JS as HIDDEN (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/compare/1.9.0...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.ktor:ktor-server-core` from 3.0.3 to 3.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ktorio/ktor/releases\"\u003eio.ktor:ktor-server-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.5.0\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003ePublished 14 May 2026\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-8421\"\u003eKTOR-8421\u003c/a\u003e Route.contentType should support multiple ContentType\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-7961\"\u003eKTOR-7961\u003c/a\u003e Add known TDM headers to the HttpHeaders object\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9418\"\u003eKTOR-9418\u003c/a\u003e Support getAs from the root ApplicationConfig\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9559\"\u003eKTOR-9559\u003c/a\u003e DNS configuration for the Apache5 client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9554\"\u003eKTOR-9554\u003c/a\u003e DNS configuration for OkHttp client engine\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9555\"\u003eKTOR-9555\u003c/a\u003e Custom SSE heartbeat function\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-8914\"\u003eKTOR-8914\u003c/a\u003e Dependency injection: read annotations in function references\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-8300\"\u003eKTOR-8300\u003c/a\u003e Sessions: Add a way to create a user session shared for all user devices or look up sessions of the same user\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9521\"\u003eKTOR-9521\u003c/a\u003e Upgrade to Kotlin 2.3.21\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9276\"\u003eKTOR-9276\u003c/a\u003e Make DynamicProviderConfig.authenticateFunction suspend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9491\"\u003eKTOR-9491\u003c/a\u003e Provide parameter validation convenience functions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9506\"\u003eKTOR-9506\u003c/a\u003e OpenAPI: Support prefixItems in JsonSchema for tuple type definitions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-470\"\u003eKTOR-470\u003c/a\u003e Add an option to not resend the session cookie if the session data wasn't changed.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9355\"\u003eKTOR-9355\u003c/a\u003e Deprecate HttpHeaders.AcceptCharset\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-7659\"\u003eKTOR-7659\u003c/a\u003e Make ktor-network compatible with ES modules for nodejs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9350\"\u003eKTOR-9350\u003c/a\u003e JS: Make ES2015 the default target for tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-7578\"\u003eKTOR-7578\u003c/a\u003e Update Digest authentication implementation according to RFC 7616\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9503\"\u003eKTOR-9503\u003c/a\u003e The JacksonConverter.streamRequestBody property name is confusing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9552\"\u003eKTOR-9552\u003c/a\u003e Deprecation notice for io.ktor.server.auth.Principal does not explain what to use instead\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-7458\"\u003eKTOR-7458\u003c/a\u003e Jetty Jakarta: Provide an easy way to disable SNI hostname validation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9354\"\u003eKTOR-9354\u003c/a\u003e Websockets: webSocket builder function should return a Route to be describable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9488\"\u003eKTOR-9488\u003c/a\u003e Nonce and hex function performance optimizations\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugfixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9524\"\u003eKTOR-9524\u003c/a\u003e Netty response hangs after connection lost\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9542\"\u003eKTOR-9542\u003c/a\u003e Netty: The request handler runs on worker event loop instead of call event loop since 3.4.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9531\"\u003eKTOR-9531\u003c/a\u003e Netty server intermittently drops requests after upgrading to 3.4.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-8151\"\u003eKTOR-8151\u003c/a\u003e MicrometerMetrics: \u0026quot;MeterFilters configured after a Meter has been registered\u0026quot; warning when a metric is registered before installing the plugin\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9411\"\u003eKTOR-9411\u003c/a\u003e Darwin throws DarwinHttpRequestException instead of FrameTooBigException\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-8320\"\u003eKTOR-8320\u003c/a\u003e CallLogging: plugin usage in testApplication breaks console standard output\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-8906\"\u003eKTOR-8906\u003c/a\u003e Jackson, with request body streaming on, exhausts Dispatchers.IO\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-8709\"\u003eKTOR-8709\u003c/a\u003e Websockets: Unable to close session with a custom CloseReason\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9567\"\u003eKTOR-9567\u003c/a\u003e Flaky UnixSockets on Windows: WSAEOPNOTSUPP from bind()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9183\"\u003eKTOR-9183\u003c/a\u003e A client call wrapped with \u003ccode\u003ewithTimeout\u003c/code\u003e throws a generic CancellationException instead of TimeoutCancellationException\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-8199\"\u003eKTOR-8199\u003c/a\u003e Autoreloading: default watch patterns don't match anything when project path contain spaces\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9549\"\u003eKTOR-9549\u003c/a\u003e Kotlin/JS: ktor-ktor-client-core.mjs is incompatible with Vite: toRaw naming conflict\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9544\"\u003eKTOR-9544\u003c/a\u003e Apache: body channel not cancelled when caller scope is cancelled\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9546\"\u003eKTOR-9546\u003c/a\u003e HttpClient: cancelling ByteReadChannel body does not propagate to engine\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-455\"\u003eKTOR-455\u003c/a\u003e Content-Disposition additional parameters should be inside quotes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9500\"\u003eKTOR-9500\u003c/a\u003e RawSourceChannel returns false positive on awaitContent\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-646\"\u003eKTOR-646\u003c/a\u003e Netty engine still print annoying exceptions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9527\"\u003eKTOR-9527\u003c/a\u003e Curl: Freeze when receiving large responses\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9460\"\u003eKTOR-9460\u003c/a\u003e Curl: Can't build shared library with Ktor 3.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9483\"\u003eKTOR-9483\u003c/a\u003e Curl: backpressure implementation is never used\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ktorio/ktor/blob/main/CHANGELOG.md\"\u003eio.ktor:ktor-server-core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.5.0\u003c/h1\u003e\n\u003cblockquote\u003e\n\u003cp\u003ePublished 14 May 2026\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-8421\"\u003eKTOR-8421\u003c/a\u003e Route.contentType should support multiple ContentType\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-7961\"\u003eKTOR-7961\u003c/a\u003e Add known TDM headers to the HttpHeaders object\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9418\"\u003eKTOR-9418\u003c/a\u003e Support getAs from the root ApplicationConfig\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9559\"\u003eKTOR-9559\u003c/a\u003e DNS configuration for the Apache5 client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9554\"\u003eKTOR-9554\u003c/a\u003e DNS configuration for OkHttp client engine\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9555\"\u003eKTOR-9555\u003c/a\u003e Custom SSE heartbeat function\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-8914\"\u003eKTOR-8914\u003c/a\u003e Dependency injection: read annotations in function references\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-8300\"\u003eKTOR-8300\u003c/a\u003e Sessions: Add a way to create a user session shared for all user devices or look up sessions of the same user\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9521\"\u003eKTOR-9521\u003c/a\u003e Upgrade to Kotlin 2.3.21\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9276\"\u003eKTOR-9276\u003c/a\u003e Make DynamicProviderConfig.authenticateFunction suspend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9491\"\u003eKTOR-9491\u003c/a\u003e Provide parameter validation convenience functions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9506\"\u003eKTOR-9506\u003c/a\u003e OpenAPI: Support prefixItems in JsonSchema for tuple type definitions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-470\"\u003eKTOR-470\u003c/a\u003e Add an option to not resend the session cookie if the session data wasn't changed.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9355\"\u003eKTOR-9355\u003c/a\u003e Deprecate HttpHeaders.AcceptCharset\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-7659\"\u003eKTOR-7659\u003c/a\u003e Make ktor-network compatible with ES modules for nodejs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9350\"\u003eKTOR-9350\u003c/a\u003e JS: Make ES2015 the default target for tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-7578\"\u003eKTOR-7578\u003c/a\u003e Update Digest authentication implementation according...\n\n_Description has been truncated_","html_url":"https://github.com/FlintWave/SearchMob/pull/12","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlintWave%2FSearchMob/issues/12","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12/packages"},{"uuid":"4510516408","node_id":"PR_kwDOSGEGis7eupQt","number":948,"state":"open","title":"build(deps): Bump the minor-and-patch group with 38 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-24T04:44:39.000Z","updated_at":"2026-05-24T04:45:05.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): Bump","group_name":"minor-and-patch","update_count":38,"packages":[{"name":"androidx.core:core-ktx","old_version":"1.15.0","new_version":"1.18.0"},{"name":"androidx.activity:activity-compose","old_version":"1.9.3","new_version":"1.13.0"},{"name":"androidx.core:core-splashscreen","old_version":"1.0.1","new_version":"1.2.0"},{"name":"com.google.android.material:material","old_version":"1.12.0","new_version":"1.14.0","repository_url":"https://github.com/material-components/material-components-android"},{"name":"androidx.credentials:credentials","old_version":"1.3.0","new_version":"1.6.0"},{"name":"androidx.credentials:credentials-play-services-auth","old_version":"1.3.0","new_version":"1.6.0"},{"name":"com.google.android.libraries.identity.googleid:googleid","old_version":"1.1.1","new_version":"1.2.0"},{"name":"androidx.exifinterface:exifinterface","old_version":"1.3.7","new_version":"1.4.2"},{"name":"androidx.navigation:navigation-compose","old_version":"2.8.5","new_version":"2.9.8"},{"name":"androidx.hilt:hilt-navigation-compose","old_version":"1.2.0","new_version":"1.3.0"},{"name":"androidx.hilt:hilt-work","old_version":"1.2.0","new_version":"1.3.0"},{"name":"androidx.hilt:hilt-compiler","old_version":"1.2.0","new_version":"1.3.0"},{"name":"androidx.room:room-runtime","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-ktx","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-compiler","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.datastore:datastore-preferences","old_version":"1.1.1","new_version":"1.2.1"},{"name":"androidx.work:work-runtime-ktx","old_version":"2.10.0","new_version":"2.11.2"},{"name":"org.jetbrains.kotlinx:kotlinx-serialization-json","old_version":"1.7.3","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.serialization"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-android","old_version":"1.9.0","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-test","old_version":"1.9.0","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"io.github.jan-tennert.supabase:bom","old_version":"3.0.3","new_version":"3.6.0","repository_url":"https://github.com/supabase-community/supabase-kt"},{"name":"io.ktor:ktor-client-okhttp","old_version":"3.0.2","new_version":"3.5.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.coil-kt.coil3:coil-compose","old_version":"3.0.4","new_version":"3.4.0","repository_url":"https://github.com/coil-kt/coil"},{"name":"io.coil-kt.coil3:coil-network-okhttp","old_version":"3.0.4","new_version":"3.4.0","repository_url":"https://github.com/coil-kt/coil"},{"name":"androidx.sqlite:sqlite","old_version":"2.4.0","new_version":"2.6.2"},{"name":"com.google.android.play:integrity","old_version":"1.4.0","new_version":"1.6.0"},{"name":"io.mockk:mockk","old_version":"1.13.13","new_version":"1.14.9","repository_url":"https://github.com/mockk/mockk"},{"name":"androidx.test.ext:junit","old_version":"1.2.1","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.6.1","new_version":"3.7.0"},{"name":"org.robolectric:robolectric","old_version":"4.14.1","new_version":"4.16.1","repository_url":"https://github.com/robolectric/robolectric"},{"name":"androidx.test:core","old_version":"1.6.1","new_version":"1.7.0"},{"name":"androidx.test:runner","old_version":"1.6.2","new_version":"1.7.0"},{"name":"org.jetbrains.kotlin.android","old_version":"2.1.0","new_version":"2.1.21","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.1.0","new_version":"2.1.21","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.1.0","new_version":"2.1.21","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.google.devtools.ksp","old_version":"2.1.0-1.0.29","new_version":"2.1.21-2.0.2","repository_url":"https://github.com/google/ksp"},{"name":"com.google.gms.google-services","old_version":"4.4.2","new_version":"4.4.4"},{"name":"com.google.firebase.crashlytics","old_version":"3.0.2","new_version":"3.0.7"}],"path":null,"ecosystem":"maven"},"body":"Bumps the minor-and-patch group with 38 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| androidx.core:core-ktx | `1.15.0` | `1.18.0` |\n| androidx.activity:activity-compose | `1.9.3` | `1.13.0` |\n| androidx.core:core-splashscreen | `1.0.1` | `1.2.0` |\n| [com.google.android.material:material](https://github.com/material-components/material-components-android) | `1.12.0` | `1.14.0` |\n| androidx.credentials:credentials | `1.3.0` | `1.6.0` |\n| androidx.credentials:credentials-play-services-auth | `1.3.0` | `1.6.0` |\n| com.google.android.libraries.identity.googleid:googleid | `1.1.1` | `1.2.0` |\n| androidx.exifinterface:exifinterface | `1.3.7` | `1.4.2` |\n| androidx.navigation:navigation-compose | `2.8.5` | `2.9.8` |\n| androidx.hilt:hilt-navigation-compose | `1.2.0` | `1.3.0` |\n| androidx.hilt:hilt-work | `1.2.0` | `1.3.0` |\n| androidx.hilt:hilt-compiler | `1.2.0` | `1.3.0` |\n| androidx.room:room-runtime | `2.6.1` | `2.8.4` |\n| androidx.room:room-ktx | `2.6.1` | `2.8.4` |\n| androidx.room:room-compiler | `2.6.1` | `2.8.4` |\n| androidx.datastore:datastore-preferences | `1.1.1` | `1.2.1` |\n| androidx.work:work-runtime-ktx | `2.10.0` | `2.11.2` |\n| [org.jetbrains.kotlinx:kotlinx-serialization-json](https://github.com/Kotlin/kotlinx.serialization) | `1.7.3` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-android](https://github.com/Kotlin/kotlinx.coroutines) | `1.9.0` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-test](https://github.com/Kotlin/kotlinx.coroutines) | `1.9.0` | `1.11.0` |\n| [io.github.jan-tennert.supabase:bom](https://github.com/supabase-community/supabase-kt) | `3.0.3` | `3.6.0` |\n| [io.ktor:ktor-client-okhttp](https://github.com/ktorio/ktor) | `3.0.2` | `3.5.0` |\n| [io.coil-kt.coil3:coil-compose](https://github.com/coil-kt/coil) | `3.0.4` | `3.4.0` |\n| [io.coil-kt.coil3:coil-network-okhttp](https://github.com/coil-kt/coil) | `3.0.4` | `3.4.0` |\n| androidx.sqlite:sqlite | `2.4.0` | `2.6.2` |\n| com.google.android.play:integrity | `1.4.0` | `1.6.0` |\n| [io.mockk:mockk](https://github.com/mockk/mockk) | `1.13.13` | `1.14.9` |\n| androidx.test.ext:junit | `1.2.1` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.6.1` | `3.7.0` |\n| [org.robolectric:robolectric](https://github.com/robolectric/robolectric) | `4.14.1` | `4.16.1` |\n| androidx.test:core | `1.6.1` | `1.7.0` |\n| androidx.test:runner | `1.6.2` | `1.7.0` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.1.0` | `2.1.21` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.1.0` | `2.1.21` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.1.0` | `2.1.21` |\n| [com.google.devtools.ksp](https://github.com/google/ksp) | `2.1.0-1.0.29` | `2.1.21-2.0.2` |\n| com.google.gms.google-services | `4.4.2` | `4.4.4` |\n| com.google.firebase.crashlytics | `3.0.2` | `3.0.7` |\n\nUpdates `androidx.core:core-ktx` from 1.15.0 to 1.18.0\n\nUpdates `androidx.activity:activity-compose` from 1.9.3 to 1.13.0\n\nUpdates `androidx.core:core-splashscreen` from 1.0.1 to 1.2.0\n\nUpdates `com.google.android.material:material` from 1.12.0 to 1.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/material-components/material-components-android/releases\"\u003ecom.google.android.material:material's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.14.0\u003c/h2\u003e\n\u003ch1\u003eNew in 1.14.0!\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eExpressive Themes (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/getting-started.md#material3expressive-themes\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Lists (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/List.md\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Button Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/CommonButton.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Icon Button Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/IconButton.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Button Group Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/ButtonGroup.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive FAB Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/FloatingActionButton.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Top App Bar Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/TopAppBar.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Navigation Bar (BottomNavigationView) Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/BottomNavigation.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Navigation Rail Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/NavigationRail.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Search Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/Search.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Progress Indicator Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/ProgressIndicator.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Slider Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/Slider.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEmphasized Typescale (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/theming/Typography.md#emphasized-scale\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImportant\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRequired \u003ccode\u003eminSdkVersion\u003c/code\u003e is now 23 or higher, for Material and \u003ca href=\"https://developer.android.com/jetpack/androidx/versions#version-table\"\u003eAndroidX\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eLibrary is now built with Android Gradle Plugin (AGP) 8.11.1 and Gradle 8.13.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDependency Updates\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eDependency\u003c/th\u003e\n\u003cth\u003ePrevious version\u003c/th\u003e\n\u003cth\u003eNew version\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.constraintlayout:constraintlayout\u003c/td\u003e\n\u003ctd\u003e2.1.0\u003c/td\u003e\n\u003ctd\u003e2.2.1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.core:core\u003c/td\u003e\n\u003ctd\u003e1.6.0\u003c/td\u003e\n\u003ctd\u003e1.16.0\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.customview:customview\u003c/td\u003e\n\u003ctd\u003eN/A\u003c/td\u003e\n\u003ctd\u003e1.2.0\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ecom.android.tools.build:gradle\u003c/td\u003e\n\u003ctd\u003e8.7.3\u003c/td\u003e\n\u003ctd\u003e8.11.1\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eLibrary Updates\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eAppBar\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eFixed the bug that setBackground will reset the internal MaterialShapeDrawable for lift-on-scroll feature. (1adc50110ed6491661f89aa535355b1480fac73a)\u003c/li\u003e\n\u003cli\u003eAdd support for navigation button with circle background (015e0534e1a6205224097f258102f913832f99ed)\u003c/li\u003e\n\u003cli\u003eImprove keyboard navigation in TopAppBar catalog demos (98a73a61d272d3e38ee87dd4b322f7787c374a9c)\u003c/li\u003e\n\u003cli\u003eRemoved special key shortcut and keyboard navigation cluster for top app bar for correct keyboard navigation a11y. (ee52adbf051f744f2345ec5b7f4ab4df3b101d4d)\u003c/li\u003e\n\u003cli\u003eUpdated ripple color on actions in M3 toolbar. (3b971c9fe9d6ae9a175d96a448a2e740fa97996f)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBottomAppBar\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eRemove special key shortcut and keyboard navigation cluster for bottom app bar for correct keyboard navigation a11y. (5c73d7a9284fb8e8409452bb95751bf70912acfd)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBottomNavigationView\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eFix navigation item layout in non-compact windows (78189012dada1fae4516eaccab7b8f75c481aa73)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBottomSheet\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecated enableEdgeToEdge for bottom sheet dialogs on API 35+. (603f1ef9d5223fc06fa432c4175473eda2138330)\u003c/li\u003e\n\u003cli\u003ePrevent ACTION_DOWN events on the BottomSheetHandleDragView from setting touchingScrollChild to true. (af7f254bf660704368d46e630d34a81c479fa1c7)\u003c/li\u003e\n\u003cli\u003eFixed keyboard animation on Android 14 (a0b4dfa8769f98851efe97569c900f75eb0d5ef2)\u003c/li\u003e\n\u003cli\u003eFixed crash when protections are set before setContentView is called (d2119098489f6f6b55d77f2c7966b8ddf16c90ed)\u003c/li\u003e\n\u003cli\u003eAdded half-expanded state description for accessibility (95e7b452088d88005982a3f29ec212ef7ee8696d)\u003c/li\u003e\n\u003cli\u003eAdded support for androidx.core ProtectionLayout API and update dependency to 1.16 (e7f9f639d2f4a3b9f619ce704df82cbb14e49222)\u003c/li\u003e\n\u003cli\u003eMake handle respond to keyboard input (1ee07687af2c4c84f515e45c1b809d65aeecbbf4)\u003c/li\u003e\n\u003cli\u003eDelete duplicate \u0026quot;Handling insets and fullscreen\u0026quot; section (5e7e8238f7be448af6b4db4b2ad6128737c0bc50)\u003c/li\u003e\n\u003cli\u003eAdded support for Nested Scrolling with multiple nested scroll children. (4e4e8f3388beb7e82a87cb67142aa34444a79740)\u003c/li\u003e\n\u003cli\u003eMake behavior_draggableOnNestedScroll public (a67afdff0d207239d0f427a37e44074936db3166)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/66c334b7946dabf33adfe1a2b7cad6bcaa4ea3ad\"\u003e\u003ccode\u003e66c334b\u003c/code\u003e\u003c/a\u003e [Release] Update library version to 1.14.0 stable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/12e57b5143609a96de8516426336bcf3b3e321f7\"\u003e\u003ccode\u003e12e57b5\u003c/code\u003e\u003c/a\u003e [Focus Rings] Add setters and getters for stroke widths and inner inset\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/f4652d6af613395835b17ce329ceb03f43fc4a84\"\u003e\u003ccode\u003ef4652d6\u003c/code\u003e\u003c/a\u003e [NavigationView] Improve focus saving when opening NavigationView\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/14b9ac97b0863fa7fea6f59954441cea9f4e7e14\"\u003e\u003ccode\u003e14b9ac9\u003c/code\u003e\u003c/a\u003e [Focus Rings] Add setters for outer and inner stroke colors and for refreshin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/d6de1da0f5532090d8b7de697e13c180f56e11e1\"\u003e\u003ccode\u003ed6de1da\u003c/code\u003e\u003c/a\u003e [A11y][BottomSheet] Auto-expand when a focused view is off-screen in non-touc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/41cfb65e8393cd7ff0f9dc082b400c852405e9cc\"\u003e\u003ccode\u003e41cfb65\u003c/code\u003e\u003c/a\u003e [A11y][NavigationView] Request and restore focus when opened and closed in Dr...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/8f63e9485bf6da5a9a0aaefa4bbf26c8ec1364a5\"\u003e\u003ccode\u003e8f63e94\u003c/code\u003e\u003c/a\u003e [Catalog] Fix lift on scroll glitchiness in All Components demo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/80aa0cc0233af0e81a846271de0d5218beeceeaf\"\u003e\u003ccode\u003e80aa0cc\u003c/code\u003e\u003c/a\u003e [Release] Update library version to 1.14.0-rc01\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/fd44c9d58699e18de06ca5de8687fe79f390568b\"\u003e\u003ccode\u003efd44c9d\u003c/code\u003e\u003c/a\u003e [Button] [SplitButton] Fix inset and optical centering issue for SplitButton ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/e6ae416e7fc791d733eedde96ffea66d313ef231\"\u003e\u003ccode\u003ee6ae416\u003c/code\u003e\u003c/a\u003e [SearchView] Make sure IME is hidden when EditText loses focus\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/material-components/material-components-android/compare/1.12.0...1.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.credentials:credentials` from 1.3.0 to 1.6.0\n\nUpdates `androidx.credentials:credentials-play-services-auth` from 1.3.0 to 1.6.0\n\nUpdates `androidx.credentials:credentials-play-services-auth` from 1.3.0 to 1.6.0\n\nUpdates `com.google.android.libraries.identity.googleid:googleid` from 1.1.1 to 1.2.0\n\nUpdates `androidx.exifinterface:exifinterface` from 1.3.7 to 1.4.2\n\nUpdates `androidx.navigation:navigation-compose` from 2.8.5 to 2.9.8\n\nUpdates `androidx.hilt:hilt-navigation-compose` from 1.2.0 to 1.3.0\n\nUpdates `androidx.hilt:hilt-work` from 1.2.0 to 1.3.0\n\nUpdates `androidx.hilt:hilt-compiler` from 1.2.0 to 1.3.0\n\nUpdates `androidx.hilt:hilt-compiler` from 1.2.0 to 1.3.0\n\nUpdates `androidx.room:room-runtime` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `androidx.datastore:datastore-preferences` from 1.1.1 to 1.2.1\n\nUpdates `androidx.work:work-runtime-ktx` from 2.10.0 to 2.11.2\n\nUpdates `org.jetbrains.kotlinx:kotlinx-serialization-json` from 1.7.3 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-serialization-json's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.20 and provides a new Json exceptions API and some bugfixes and improvements.\u003c/p\u003e\n\u003ch2\u003eExpose Json exceptions structure\u003c/h2\u003e\n\u003cp\u003eTo make working with exceptions easier and providing proper error codes in e.g., REST APIs,\nclasses \u003ccode\u003eJsonException\u003c/code\u003e, \u003ccode\u003eJsonDecodingException\u003c/code\u003e, and \u003ccode\u003eJsonEncodingException\u003c/code\u003e are now public.\nThey have relevant public properties, such as \u003ccode\u003eshortMessage\u003c/code\u003e, \u003ccode\u003epath\u003c/code\u003e, \u003ccode\u003eoffset\u003c/code\u003e, and others.\nThis API is currently experimental, and we're going to improve it further in the subsequent releases.\nSee the linked issues for the details: \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1930\"\u003e#1930\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1877\"\u003e#1877\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eAbility to hide user input from exception messages for security/privacy reasons.\u003c/h2\u003e\n\u003cp\u003eHistorically, exception messages in kotlinx.serialization often included the input Json itself for debuggability reason.\nSuch behavior may pose additional challenges for logging, analytics, and other systems, since\na system is not always allowed to store user data due to privacy/security reasons, which imposes additional sanitation logic.\nTo address this issue, a new property \u003ccode\u003eexceptionsWithDebugInfo\u003c/code\u003e is added to \u003ccode\u003eJsonConfiguration\u003c/code\u003e.\nDisable it to hide user input from exception messages.\nIMPORTANT: This behavior will be enabled by default when this property becomes stable.\nSee \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2590\"\u003e#2590\u003c/a\u003e for more details.\u003c/p\u003e\n\u003ch2\u003eBugfixes and improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCBOR: Relax value range check when decoding numbers (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse a specialized writeDecimalLong method for IO stream integrations in Json (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3152\"\u003e#3152\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.0\u003c/h2\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.0 and contains all of the changes from 1.10.0-RC.\nThe only additional change is a fix for ProtoBuf packing of Kotlin unsigned types (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3079\"\u003e#3079\u003c/a\u003e).\nBig thanks to \u003ca href=\"https://github.com/KosmX\"\u003eKosmX\u003c/a\u003e for contributing the fix.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eFor your convenience, the changelog for 1.10.0-RC is duplicated below:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eStabilization of APIs\u003c/h2\u003e\n\u003cp\u003ekotlinx-serialization 1.10 and subsequent releases will be focused on stabilization of existing APIs.\nThe following APIs and configuration options are no longer experimental because they're widely used without any known major issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eJson\u003c/code\u003e configuration options: \u003ccode\u003edecodeEnumsCaseInsensitive\u003c/code\u003e, \u003ccode\u003eallowTrailingComma\u003c/code\u003e, \u003ccode\u003eallowComments\u003c/code\u003e, and \u003ccode\u003eprettyPrintIndent\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3100\"\u003e#3100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@EncodeDefault\u003c/code\u003e annotation and its modes. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3106\"\u003e#3106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonUnquotedLiteral\u003c/code\u003e constructor function (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2900\"\u003e#2900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonPrimitive\u003c/code\u003e constructor function overloads that accept unsigned types. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJSON DSL functions on \u003ccode\u003eJsonElement\u003c/code\u003e with \u003ccode\u003eNothing?\u003c/code\u003e overloads. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eReadiness for return value checker\u003c/h2\u003e\n\u003cp\u003eKotlin 2.3.0 \u003ca href=\"https://kotlinlang.org/docs/whatsnew23.html#unused-return-value-checker\"\u003eintroduces a new feature\u003c/a\u003e aimed at helping you to catch bugs related to the accidentally ignored return value of the function.\nkotlinx-serialization 1.10.0-RC code is fully marked for this feature, meaning that you can get warnings for unused function calls like \u003ccode\u003eJson.encodeToString(...)\u003c/code\u003e. To get the warnings, the feature has to be enabled in your project as \u003ca href=\"https://kotlinlang.org/docs/unused-return-value-checker.html#configure-the-unused-return-value-checker\"\u003edescribed here\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ePolymorphism improvements\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md\"\u003eorg.jetbrains.kotlinx:kotlinx-serialization-json's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.11.0 / 2026-04-10\u003c/h1\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.20 and provides new Json exceptions API and some bugfixes and improvements.\u003c/p\u003e\n\u003ch2\u003eExpose Json exceptions structure\u003c/h2\u003e\n\u003cp\u003eTo make working with exceptions easier and providing proper error codes in e.g., REST APIs,\nclasses \u003ccode\u003eJsonException\u003c/code\u003e, \u003ccode\u003eJsonDecodingException\u003c/code\u003e, and \u003ccode\u003eJsonEncodingException\u003c/code\u003e are now public.\nThey have relevant public properties, such as \u003ccode\u003eshortMessage\u003c/code\u003e, \u003ccode\u003epath\u003c/code\u003e, \u003ccode\u003eoffset\u003c/code\u003e, and others.\nThis API is currently experimental, and we're going to improve it further in the subsequent releases.\nSee the linked issues for the details: \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1930\"\u003e#1930\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1877\"\u003e#1877\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eAbility to hide user input from exception messages for security/privacy reasons.\u003c/h2\u003e\n\u003cp\u003eHistorically, exception messages in kotlinx.serialization often included the input Json itself for debuggability reason.\nSuch behavior may pose additional challenges for logging, analytics, and other systems, since\na system is not always allowed to store user data due to privacy/security reasons, which imposes additional sanitation logic.\nTo address this issue, a new property \u003ccode\u003eexceptionsWithDebugInfo\u003c/code\u003e is added to \u003ccode\u003eJsonConfiguration\u003c/code\u003e.\nDisable it to hide user input from exception messages.\nIMPORTANT: This behavior will be enabled by default when this property becomes stable.\nSee \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2590\"\u003e#2590\u003c/a\u003e for more details.\u003c/p\u003e\n\u003ch2\u003eBugfixes and improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCBOR: Relax value range check when decoding numbers (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse a specialized writeDecimalLong method for IO stream integrations in Json (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3152\"\u003e#3152\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.10.0 / 2026-01-21\u003c/h1\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.0 and contains all of the changes from 1.10.0-RC.\nThe only additional change is a fix for ProtoBuf packing of Kotlin unsigned types (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3079\"\u003e#3079\u003c/a\u003e).\nBig thanks to \u003ca href=\"https://github.com/KosmX\"\u003eKosmX\u003c/a\u003e for contributing the fix.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eFor your convenience, the changelog for 1.10.0-RC is duplicated below:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eStabilization of APIs\u003c/h2\u003e\n\u003cp\u003ekotlinx-serialization 1.10 and subsequent releases will be focused on stabilization of existing APIs.\nThe following APIs and configuration options are no longer experimental because they're widely used without any known major issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eJson\u003c/code\u003e configuration options: \u003ccode\u003edecodeEnumsCaseInsensitive\u003c/code\u003e, \u003ccode\u003eallowTrailingComma\u003c/code\u003e, \u003ccode\u003eallowComments\u003c/code\u003e, and \u003ccode\u003eprettyPrintIndent\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3100\"\u003e#3100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@EncodeDefault\u003c/code\u003e annotation and its modes. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3106\"\u003e#3106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonUnquotedLiteral\u003c/code\u003e constructor function (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2900\"\u003e#2900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonPrimitive\u003c/code\u003e constructor function overloads that accept unsigned types. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJSON DSL functions on \u003ccode\u003eJsonElement\u003c/code\u003e with \u003ccode\u003eNothing?\u003c/code\u003e overloads. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eReadiness for return value checker\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/6956af2e6073347c7832c3c5b374fa3b5a345956\"\u003e\u003ccode\u003e6956af2\u003c/code\u003e\u003c/a\u003e Prepare 1.11 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/390d84c68a19cbf7fa453dec22a333648bde49b4\"\u003e\u003ccode\u003e390d84c\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/431fe2dc0a144300b33038820d24fc30302c8abc\"\u003e\u003ccode\u003e431fe2d\u003c/code\u003e\u003c/a\u003e Use local repo for publishing (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3171\"\u003e#3171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/05c12b60a6717b99053fb82e1f94d2f859727374\"\u003e\u003ccode\u003e05c12b6\u003c/code\u003e\u003c/a\u003e Add usage attribute to \u0026quot;testRepositories\u0026quot; configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/a4e1f082ef2e72caa139b474c05657de6015da20\"\u003e\u003ccode\u003ea4e1f08\u003c/code\u003e\u003c/a\u003e Bump Kover version to 0.9.8 release (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3174\"\u003e#3174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/304e858ccc7066854637d86ab80056f5f2bcc094\"\u003e\u003ccode\u003e304e858\u003c/code\u003e\u003c/a\u003e Expose Json exceptions structure (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/4a0338ef5093d765138151bc30282e909ca459e4\"\u003e\u003ccode\u003e4a0338e\u003c/code\u003e\u003c/a\u003e Included G Play SDK verification file for core-jvm (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3169\"\u003e#3169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/421f64c74f0ea6d4a3cdc8dd483505366e3f6c8f\"\u003e\u003ccode\u003e421f64c\u003c/code\u003e\u003c/a\u003e CBOR: Relax value range check when decoding numbers (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/85a4f126ec491c77e2b3686cc22c1bae27a20783\"\u003e\u003ccode\u003e85a4f12\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/bd38b0e49bce38d1a55576e89856bc63990167ed\"\u003e\u003ccode\u003ebd38b0e\u003c/code\u003e\u003c/a\u003e Remove dead code\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/compare/v1.7.3...v1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-android` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874\"\u003e\u003ccode\u003e8564f65\u003c/code\u003e\u003c/a\u003e Version 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c\"\u003e\u003ccode\u003ea4c6af9\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9\"\u003e\u003ccode\u003eef917b4\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd\"\u003e\u003ccode\u003e5ebc421\u003c/code\u003e\u003c/a\u003e Update the release procedure description (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80\"\u003e\u003ccode\u003e95f46a0\u003c/code\u003e\u003c/a\u003e Remove old maven repository settings (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672\"\u003e#4672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc\"\u003e\u003ccode\u003eb4f4f0a\u003c/code\u003e\u003c/a\u003e Fix package name of \u003ccode\u003eToMapCollectionSamplesTest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674\"\u003e#4674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/86738dca7dc9ac82249abc8206263fa0065ee631\"\u003e\u003ccode\u003e86738dc\u003c/code\u003e\u003c/a\u003e Added templates to the issue creation wizard (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/330fcc221fb583f0b119f34191f735a73b827378\"\u003e\u003ccode\u003e330fcc2\u003c/code\u003e\u003c/a\u003e Version 1.11.0-rc02\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/e31cef6e9f2d26794be7d75ecbf3033b6432d582\"\u003e\u003ccode\u003ee31cef6\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/dc6e9f61eaf3a67f4bf474a7987aedc3f16cef37\"\u003e\u003ccode\u003edc6e9f6\u003c/code\u003e\u003c/a\u003e Restore Promise-related functions on Wasm/JS as HIDDEN (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/compare/1.9.0...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-test` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-test's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-test's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874\"\u003e\u003ccode\u003e8564f65\u003c/code\u003e\u003c/a\u003e Version 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c\"\u003e\u003ccode\u003ea4c6af9\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9\"\u003e\u003ccode\u003eef917b4\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd\"\u003e\u003ccode\u003e5ebc421\u003c/code\u003e\u003c/a\u003e Update the release procedure description (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80\"\u003e\u003ccode\u003e95f46a0\u003c/code\u003e\u003c/a\u003e Remove old maven repository settings (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672\"\u003e#4672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc\"\u003e\u003ccode\u003eb4f4f0a\u003c/code\u003e\u003c/a\u003e Fix package name of \u003ccode\u003eToMapCollectionSamplesTest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674\"\u003e#4674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/86738dca7dc9ac82249abc8206263fa0065ee631\"\u003e\u003ccode\u003e86738dc\u003c/code\u003e\u003c/a\u003e Added templates to the issue creation wizard (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/330fcc221fb583f0b119f34191f735a73b827378\"\u003e\u003ccode\u003e330fcc2\u003c/code\u003e\u003c/a\u003e Version 1.11.0-rc02\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/e31cef6e9f2d26794be7d75ecbf3033b6432d582\"\u003e\u003ccode\u003ee31cef6\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/dc6e9f61eaf3a67f4bf474a7987aedc3f16cef37\"\u003e\u003ccode\u003edc6e9f6\u003c/code\u003e\u003c/a\u003e Restore Promise-related functions on Wasm/JS as HIDDEN (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/compare/1.9.0...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-test` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-test's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-test's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003c...\n\n_Description has been truncated_","html_url":"https://github.com/ganeshnaik166/equipseva-android/pull/948","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ganeshnaik166%2Fequipseva-android/issues/948","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/948/packages"},{"uuid":"4508823602","node_id":"PR_kwDOSGEGis7eptsH","number":938,"state":"closed","title":"build(deps): Bump the minor-and-patch group with 46 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":"2026-05-23T16:09:20.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-23T16:06:46.000Z","updated_at":"2026-05-23T16:09:28.000Z","time_to_close":154,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): Bump","group_name":"minor-and-patch","update_count":46,"packages":[{"name":"androidx.core:core-ktx","old_version":"1.15.0","new_version":"1.18.0"},{"name":"androidx.lifecycle:lifecycle-runtime-ktx","old_version":"2.8.7","new_version":"2.10.0"},{"name":"androidx.lifecycle:lifecycle-runtime-compose","old_version":"2.8.7","new_version":"2.10.0"},{"name":"androidx.activity:activity-compose","old_version":"1.9.3","new_version":"1.13.0"},{"name":"androidx.core:core-splashscreen","old_version":"1.0.1","new_version":"1.2.0"},{"name":"com.google.android.material:material","old_version":"1.12.0","new_version":"1.14.0","repository_url":"https://github.com/material-components/material-components-android"},{"name":"androidx.lifecycle:lifecycle-viewmodel-compose","old_version":"2.8.7","new_version":"2.10.0"},{"name":"androidx.credentials:credentials","old_version":"1.3.0","new_version":"1.6.0"},{"name":"androidx.credentials:credentials-play-services-auth","old_version":"1.3.0","new_version":"1.6.0"},{"name":"com.google.android.libraries.identity.googleid:googleid","old_version":"1.1.1","new_version":"1.2.0"},{"name":"androidx.exifinterface:exifinterface","old_version":"1.3.7","new_version":"1.4.2"},{"name":"androidx.navigation:navigation-compose","old_version":"2.8.5","new_version":"2.9.8"},{"name":"com.google.dagger:hilt-android","old_version":"2.53.1","new_version":"2.59.2","repository_url":"https://github.com/google/dagger"},{"name":"com.google.dagger:hilt-android-compiler","old_version":"2.53.1","new_version":"2.59.2","repository_url":"https://github.com/google/dagger"},{"name":"com.google.dagger:hilt-android-testing","old_version":"2.53.1","new_version":"2.59.2","repository_url":"https://github.com/google/dagger"},{"name":"com.google.dagger.hilt.android","old_version":"2.53.1","new_version":"2.59.2","repository_url":"https://github.com/google/dagger"},{"name":"androidx.hilt:hilt-navigation-compose","old_version":"1.2.0","new_version":"1.3.0"},{"name":"androidx.hilt:hilt-work","old_version":"1.2.0","new_version":"1.3.0"},{"name":"androidx.hilt:hilt-compiler","old_version":"1.2.0","new_version":"1.3.0"},{"name":"androidx.room:room-runtime","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-ktx","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-compiler","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.datastore:datastore-preferences","old_version":"1.1.1","new_version":"1.2.1"},{"name":"androidx.work:work-runtime-ktx","old_version":"2.10.0","new_version":"2.11.2"},{"name":"org.jetbrains.kotlinx:kotlinx-serialization-json","old_version":"1.7.3","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.serialization"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-android","old_version":"1.9.0","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-test","old_version":"1.9.0","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"io.github.jan-tennert.supabase:bom","old_version":"3.0.3","new_version":"3.6.0","repository_url":"https://github.com/supabase-community/supabase-kt"},{"name":"io.ktor:ktor-client-okhttp","old_version":"3.0.2","new_version":"3.5.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.coil-kt.coil3:coil-compose","old_version":"3.0.4","new_version":"3.4.0","repository_url":"https://github.com/coil-kt/coil"},{"name":"io.coil-kt.coil3:coil-network-okhttp","old_version":"3.0.4","new_version":"3.4.0","repository_url":"https://github.com/coil-kt/coil"},{"name":"androidx.sqlite:sqlite","old_version":"2.4.0","new_version":"2.6.2"},{"name":"com.google.android.play:integrity","old_version":"1.4.0","new_version":"1.6.0"},{"name":"io.mockk:mockk","old_version":"1.13.13","new_version":"1.14.9","repository_url":"https://github.com/mockk/mockk"},{"name":"androidx.test.ext:junit","old_version":"1.2.1","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.6.1","new_version":"3.7.0"},{"name":"org.robolectric:robolectric","old_version":"4.14.1","new_version":"4.16.1","repository_url":"https://github.com/robolectric/robolectric"},{"name":"androidx.test:core","old_version":"1.6.1","new_version":"1.7.0"},{"name":"androidx.test:runner","old_version":"1.6.2","new_version":"1.7.0"},{"name":"com.android.application","old_version":"8.7.3","new_version":"8.13.2"},{"name":"org.jetbrains.kotlin.android","old_version":"2.1.0","new_version":"2.3.21","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.1.0","new_version":"2.3.21","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.1.0","new_version":"2.3.21","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.google.devtools.ksp","old_version":"2.1.0-1.0.29","new_version":"2.3.8","repository_url":"https://github.com/google/ksp"},{"name":"com.google.gms.google-services","old_version":"4.4.2","new_version":"4.4.4"},{"name":"com.google.firebase.crashlytics","old_version":"3.0.2","new_version":"3.0.7"}],"path":null,"ecosystem":"maven"},"body":"Bumps the minor-and-patch group with 46 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| androidx.core:core-ktx | `1.15.0` | `1.18.0` |\n| androidx.lifecycle:lifecycle-runtime-ktx | `2.8.7` | `2.10.0` |\n| androidx.lifecycle:lifecycle-runtime-compose | `2.8.7` | `2.10.0` |\n| androidx.activity:activity-compose | `1.9.3` | `1.13.0` |\n| androidx.core:core-splashscreen | `1.0.1` | `1.2.0` |\n| [com.google.android.material:material](https://github.com/material-components/material-components-android) | `1.12.0` | `1.14.0` |\n| androidx.lifecycle:lifecycle-viewmodel-compose | `2.8.7` | `2.10.0` |\n| androidx.credentials:credentials | `1.3.0` | `1.6.0` |\n| androidx.credentials:credentials-play-services-auth | `1.3.0` | `1.6.0` |\n| com.google.android.libraries.identity.googleid:googleid | `1.1.1` | `1.2.0` |\n| androidx.exifinterface:exifinterface | `1.3.7` | `1.4.2` |\n| androidx.navigation:navigation-compose | `2.8.5` | `2.9.8` |\n| [com.google.dagger:hilt-android](https://github.com/google/dagger) | `2.53.1` | `2.59.2` |\n| [com.google.dagger:hilt-android-compiler](https://github.com/google/dagger) | `2.53.1` | `2.59.2` |\n| [com.google.dagger:hilt-android-testing](https://github.com/google/dagger) | `2.53.1` | `2.59.2` |\n| [com.google.dagger.hilt.android](https://github.com/google/dagger) | `2.53.1` | `2.59.2` |\n| androidx.hilt:hilt-navigation-compose | `1.2.0` | `1.3.0` |\n| androidx.hilt:hilt-work | `1.2.0` | `1.3.0` |\n| androidx.hilt:hilt-compiler | `1.2.0` | `1.3.0` |\n| androidx.room:room-runtime | `2.6.1` | `2.8.4` |\n| androidx.room:room-ktx | `2.6.1` | `2.8.4` |\n| androidx.room:room-compiler | `2.6.1` | `2.8.4` |\n| androidx.datastore:datastore-preferences | `1.1.1` | `1.2.1` |\n| androidx.work:work-runtime-ktx | `2.10.0` | `2.11.2` |\n| [org.jetbrains.kotlinx:kotlinx-serialization-json](https://github.com/Kotlin/kotlinx.serialization) | `1.7.3` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-android](https://github.com/Kotlin/kotlinx.coroutines) | `1.9.0` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-test](https://github.com/Kotlin/kotlinx.coroutines) | `1.9.0` | `1.11.0` |\n| [io.github.jan-tennert.supabase:bom](https://github.com/supabase-community/supabase-kt) | `3.0.3` | `3.6.0` |\n| [io.ktor:ktor-client-okhttp](https://github.com/ktorio/ktor) | `3.0.2` | `3.5.0` |\n| [io.coil-kt.coil3:coil-compose](https://github.com/coil-kt/coil) | `3.0.4` | `3.4.0` |\n| [io.coil-kt.coil3:coil-network-okhttp](https://github.com/coil-kt/coil) | `3.0.4` | `3.4.0` |\n| androidx.sqlite:sqlite | `2.4.0` | `2.6.2` |\n| com.google.android.play:integrity | `1.4.0` | `1.6.0` |\n| [io.mockk:mockk](https://github.com/mockk/mockk) | `1.13.13` | `1.14.9` |\n| androidx.test.ext:junit | `1.2.1` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.6.1` | `3.7.0` |\n| [org.robolectric:robolectric](https://github.com/robolectric/robolectric) | `4.14.1` | `4.16.1` |\n| androidx.test:core | `1.6.1` | `1.7.0` |\n| androidx.test:runner | `1.6.2` | `1.7.0` |\n| com.android.application | `8.7.3` | `8.13.2` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.1.0` | `2.3.21` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.1.0` | `2.3.21` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.1.0` | `2.3.21` |\n| [com.google.devtools.ksp](https://github.com/google/ksp) | `2.1.0-1.0.29` | `2.3.8` |\n| com.google.gms.google-services | `4.4.2` | `4.4.4` |\n| com.google.firebase.crashlytics | `3.0.2` | `3.0.7` |\n\nUpdates `androidx.core:core-ktx` from 1.15.0 to 1.18.0\n\nUpdates `androidx.lifecycle:lifecycle-runtime-ktx` from 2.8.7 to 2.10.0\n\nUpdates `androidx.lifecycle:lifecycle-runtime-compose` from 2.8.7 to 2.10.0\n\nUpdates `androidx.lifecycle:lifecycle-runtime-compose` from 2.8.7 to 2.10.0\n\nUpdates `androidx.activity:activity-compose` from 1.9.3 to 1.13.0\n\nUpdates `androidx.core:core-splashscreen` from 1.0.1 to 1.2.0\n\nUpdates `com.google.android.material:material` from 1.12.0 to 1.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/material-components/material-components-android/releases\"\u003ecom.google.android.material:material's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.14.0\u003c/h2\u003e\n\u003ch1\u003eNew in 1.14.0!\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eExpressive Themes (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/getting-started.md#material3expressive-themes\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Lists (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/List.md\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Button Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/CommonButton.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Icon Button Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/IconButton.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Button Group Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/ButtonGroup.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive FAB Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/FloatingActionButton.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Top App Bar Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/TopAppBar.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Navigation Bar (BottomNavigationView) Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/BottomNavigation.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Navigation Rail Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/NavigationRail.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Search Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/Search.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Progress Indicator Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/ProgressIndicator.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Slider Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/Slider.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEmphasized Typescale (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/theming/Typography.md#emphasized-scale\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImportant\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRequired \u003ccode\u003eminSdkVersion\u003c/code\u003e is now 23 or higher, for Material and \u003ca href=\"https://developer.android.com/jetpack/androidx/versions#version-table\"\u003eAndroidX\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eLibrary is now built with Android Gradle Plugin (AGP) 8.11.1 and Gradle 8.13.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDependency Updates\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eDependency\u003c/th\u003e\n\u003cth\u003ePrevious version\u003c/th\u003e\n\u003cth\u003eNew version\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.constraintlayout:constraintlayout\u003c/td\u003e\n\u003ctd\u003e2.1.0\u003c/td\u003e\n\u003ctd\u003e2.2.1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.core:core\u003c/td\u003e\n\u003ctd\u003e1.6.0\u003c/td\u003e\n\u003ctd\u003e1.16.0\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.customview:customview\u003c/td\u003e\n\u003ctd\u003eN/A\u003c/td\u003e\n\u003ctd\u003e1.2.0\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ecom.android.tools.build:gradle\u003c/td\u003e\n\u003ctd\u003e8.7.3\u003c/td\u003e\n\u003ctd\u003e8.11.1\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eLibrary Updates\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eAppBar\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eFixed the bug that setBackground will reset the internal MaterialShapeDrawable for lift-on-scroll feature. (1adc50110ed6491661f89aa535355b1480fac73a)\u003c/li\u003e\n\u003cli\u003eAdd support for navigation button with circle background (015e0534e1a6205224097f258102f913832f99ed)\u003c/li\u003e\n\u003cli\u003eImprove keyboard navigation in TopAppBar catalog demos (98a73a61d272d3e38ee87dd4b322f7787c374a9c)\u003c/li\u003e\n\u003cli\u003eRemoved special key shortcut and keyboard navigation cluster for top app bar for correct keyboard navigation a11y. (ee52adbf051f744f2345ec5b7f4ab4df3b101d4d)\u003c/li\u003e\n\u003cli\u003eUpdated ripple color on actions in M3 toolbar. (3b971c9fe9d6ae9a175d96a448a2e740fa97996f)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBottomAppBar\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eRemove special key shortcut and keyboard navigation cluster for bottom app bar for correct keyboard navigation a11y. (5c73d7a9284fb8e8409452bb95751bf70912acfd)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBottomNavigationView\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eFix navigation item layout in non-compact windows (78189012dada1fae4516eaccab7b8f75c481aa73)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBottomSheet\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecated enableEdgeToEdge for bottom sheet dialogs on API 35+. (603f1ef9d5223fc06fa432c4175473eda2138330)\u003c/li\u003e\n\u003cli\u003ePrevent ACTION_DOWN events on the BottomSheetHandleDragView from setting touchingScrollChild to true. (af7f254bf660704368d46e630d34a81c479fa1c7)\u003c/li\u003e\n\u003cli\u003eFixed keyboard animation on Android 14 (a0b4dfa8769f98851efe97569c900f75eb0d5ef2)\u003c/li\u003e\n\u003cli\u003eFixed crash when protections are set before setContentView is called (d2119098489f6f6b55d77f2c7966b8ddf16c90ed)\u003c/li\u003e\n\u003cli\u003eAdded half-expanded state description for accessibility (95e7b452088d88005982a3f29ec212ef7ee8696d)\u003c/li\u003e\n\u003cli\u003eAdded support for androidx.core ProtectionLayout API and update dependency to 1.16 (e7f9f639d2f4a3b9f619ce704df82cbb14e49222)\u003c/li\u003e\n\u003cli\u003eMake handle respond to keyboard input (1ee07687af2c4c84f515e45c1b809d65aeecbbf4)\u003c/li\u003e\n\u003cli\u003eDelete duplicate \u0026quot;Handling insets and fullscreen\u0026quot; section (5e7e8238f7be448af6b4db4b2ad6128737c0bc50)\u003c/li\u003e\n\u003cli\u003eAdded support for Nested Scrolling with multiple nested scroll children. (4e4e8f3388beb7e82a87cb67142aa34444a79740)\u003c/li\u003e\n\u003cli\u003eMake behavior_draggableOnNestedScroll public (a67afdff0d207239d0f427a37e44074936db3166)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/66c334b7946dabf33adfe1a2b7cad6bcaa4ea3ad\"\u003e\u003ccode\u003e66c334b\u003c/code\u003e\u003c/a\u003e [Release] Update library version to 1.14.0 stable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/12e57b5143609a96de8516426336bcf3b3e321f7\"\u003e\u003ccode\u003e12e57b5\u003c/code\u003e\u003c/a\u003e [Focus Rings] Add setters and getters for stroke widths and inner inset\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/f4652d6af613395835b17ce329ceb03f43fc4a84\"\u003e\u003ccode\u003ef4652d6\u003c/code\u003e\u003c/a\u003e [NavigationView] Improve focus saving when opening NavigationView\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/14b9ac97b0863fa7fea6f59954441cea9f4e7e14\"\u003e\u003ccode\u003e14b9ac9\u003c/code\u003e\u003c/a\u003e [Focus Rings] Add setters for outer and inner stroke colors and for refreshin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/d6de1da0f5532090d8b7de697e13c180f56e11e1\"\u003e\u003ccode\u003ed6de1da\u003c/code\u003e\u003c/a\u003e [A11y][BottomSheet] Auto-expand when a focused view is off-screen in non-touc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/41cfb65e8393cd7ff0f9dc082b400c852405e9cc\"\u003e\u003ccode\u003e41cfb65\u003c/code\u003e\u003c/a\u003e [A11y][NavigationView] Request and restore focus when opened and closed in Dr...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/8f63e9485bf6da5a9a0aaefa4bbf26c8ec1364a5\"\u003e\u003ccode\u003e8f63e94\u003c/code\u003e\u003c/a\u003e [Catalog] Fix lift on scroll glitchiness in All Components demo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/80aa0cc0233af0e81a846271de0d5218beeceeaf\"\u003e\u003ccode\u003e80aa0cc\u003c/code\u003e\u003c/a\u003e [Release] Update library version to 1.14.0-rc01\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/fd44c9d58699e18de06ca5de8687fe79f390568b\"\u003e\u003ccode\u003efd44c9d\u003c/code\u003e\u003c/a\u003e [Button] [SplitButton] Fix inset and optical centering issue for SplitButton ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/e6ae416e7fc791d733eedde96ffea66d313ef231\"\u003e\u003ccode\u003ee6ae416\u003c/code\u003e\u003c/a\u003e [SearchView] Make sure IME is hidden when EditText loses focus\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/material-components/material-components-android/compare/1.12.0...1.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.lifecycle:lifecycle-viewmodel-compose` from 2.8.7 to 2.10.0\n\nUpdates `androidx.credentials:credentials` from 1.3.0 to 1.6.0\n\nUpdates `androidx.credentials:credentials-play-services-auth` from 1.3.0 to 1.6.0\n\nUpdates `androidx.credentials:credentials-play-services-auth` from 1.3.0 to 1.6.0\n\nUpdates `com.google.android.libraries.identity.googleid:googleid` from 1.1.1 to 1.2.0\n\nUpdates `androidx.exifinterface:exifinterface` from 1.3.7 to 1.4.2\n\nUpdates `androidx.navigation:navigation-compose` from 2.8.5 to 2.9.8\n\nUpdates `com.google.dagger:hilt-android` from 2.53.1 to 2.59.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003ch3\u003eBug fixes/features:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/4944\"\u003e#4944\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/4979\"\u003e#4979\u003c/a\u003e: Support AGP 9 in HiltGradlePlugin (6afd7ea5a0fb84a38f2d23c990ddbd95e728a39d)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.58\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 support was held back from this release (\u003ca href=\"https://redirect.github.com/google/dagger/pull/5061/commits/0a5b42cf910be11752c4b958c4735715bf57c564\"\u003egoogle/dagger#5061\u003c/a\u003e) because it forces users onto AGP 9. It will be available in the next Dagger release (e92e3f392).\u003c/p\u003e\n\u003ch3\u003ePotential breaking changes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlipped default for \u003ccode\u003edagger.useBindingGraphFix\u003c/code\u003e to \u003ccode\u003eenabled\u003c/code\u003e (d41e8362b).\nSee \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#useBindingGraphFix\"\u003ehttps://dagger.dev/dev-guide/compiler-options#useBindingGraphFix\u003c/a\u003e.\n\u003cstrong\u003eFix:\u003c/strong\u003e If this change breaks you it’s likely due to providing a binding in an incorrect module, (e.g. the binding requests an Activity but is installed in the SingletonComponent). The fix is to move the \u003ccode\u003e@Provides\u003c/code\u003e so that it is installed into the correct component (e.g. the ActivityComponent instead of SingletonComponent). You can also set \u003ccode\u003edagger.useBindingGraphFix=disabled\u003c/code\u003e but note that this flag is only temporary and will eventually be removed.\u003c/li\u003e\n\u003cli\u003eThe use of \u003ccode\u003eabstract var\u003c/code\u003e in components is now banned in super types.\nThe reason for this change is that an \u003ccode\u003eabstract var\u003c/code\u003e property creates both a getter and a setter on the component which is almost always unintentional.\n\u003cstrong\u003eFix:\u003c/strong\u003e If this change breaks you, use either an \u003ccode\u003eabstract val foo: Foo\u003c/code\u003e if you need a getter or \u003ccode\u003eabstract fun inject(foo: Foo)\u003c/code\u003e if you need an inject method. Note that \u003ccode\u003eabstract var\u003c/code\u003e is already banned if it is declared directly on the \u003ccode\u003e@Component\u003c/code\u003e class/interface, but this change fixes the check so that it’s banned even if it’s inherited from a super type.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes/features:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1116\"\u003e#1116\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/1630\"\u003e#1630\u003c/a\u003e, Supported \u003ccode\u003eMap\u0026lt;K, Lazy\u0026lt;V\u0026gt;\u0026gt;\u003c/code\u003e as a multibinding request type. (7f981a4c3)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/3601\"\u003e#3601\u003c/a\u003e. No longer adds a deprecation warning for unused dependencies on setters on the component builder. (1cf9dfc96)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4982\"\u003e#4982\u003c/a\u003e:\n\u003cul\u003e\n\u003cli\u003eAdded validation to prevent using Java keywords in Dagger-generated code (72e21a828)\u003c/li\u003e\n\u003cli\u003eAdded error for binding elements names that are Java keywords. (38071c5ae)\u003c/li\u003e\n\u003cli\u003eJava keyword validation is now performed earlier during the superficial validation stage. (7f6f7bda7)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.57.2\u003c/h2\u003e\n\u003ch1\u003eBug fixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/4847\"\u003e#4847\u003c/a\u003e: Fixed an issue with the Hilt Gradle Plugin registered transforms on projects using Gradle 9.0.0 (ea570e7)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4898\"\u003e#4898\u003c/a\u003e: Fixed an issue with backwards compatibility handling for libraries that export Hilt roots. (85c470ca4)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4937\"\u003e#4937\u003c/a\u003e: Fixed the incorrectly declared version of the Kotlin stdlib dependency in the Hilt Gradle Plugin. (deefd9a2d)\u003c/li\u003e\n\u003cli\u003eUpdated ASM dependency to 9.8 (365bc499d)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/118f2e5fc876a8ff080978753a7a73b2a5d642cd\"\u003e\u003ccode\u003e118f2e5\u003c/code\u003e\u003c/a\u003e 2.59.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1be57655bf07880d630154f941b433cec7072c80\"\u003e\u003ccode\u003e1be5765\u003c/code\u003e\u003c/a\u003e Change HiltSyncTask to extend DefaultTask instead of Sync.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7e31b8572df4d791816dfb30a875231176e41d5\"\u003e\u003ccode\u003ef7e31b8\u003c/code\u003e\u003c/a\u003e Replace Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/59090059e8e002e034a10e280a426553c086ec71\"\u003e\u003ccode\u003e5909005\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3507b0d7128a211f4a78634aba8e01a61bbdffc2\"\u003e\u003ccode\u003e3507b0d\u003c/code\u003e\u003c/a\u003e Support nullability in Switching Providers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1900560c6f317d873a3049f73c061211b62e7c95\"\u003e\u003ccode\u003e1900560\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/8c69595320a7661b465bea1aa10465bb7b2db888\"\u003e\u003ccode\u003e8c69595\u003c/code\u003e\u003c/a\u003e Update Dagger yml and README with new latest version number.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1dbb1dd1712b8d9f17fec7bbd7f18e32783bfc11\"\u003e\u003ccode\u003e1dbb1dd\u003c/code\u003e\u003c/a\u003e Internal refactoring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/62b54235eabe799b72e0f62465b671bc97f30cb5\"\u003e\u003ccode\u003e62b5423\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/8dcce87903e678ef78154180568619e26c4e03bc\"\u003e\u003ccode\u003e8dcce87\u003c/code\u003e\u003c/a\u003e Add AggregatedPackagesTransform for \u0026quot;android-classes\u0026quot; artifact type.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.53.1...dagger-2.59.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger:hilt-android-compiler` from 2.53.1 to 2.59.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-android-compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003ch3\u003eBug fixes/features:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/4944\"\u003e#4944\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/4979\"\u003e#4979\u003c/a\u003e: Support AGP 9 in HiltGradlePlugin (6afd7ea5a0fb84a38f2d23c990ddbd95e728a39d)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.58\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 support was held back from this release (\u003ca href=\"https://redirect.github.com/google/dagger/pull/5061/commits/0a5b42cf910be11752c4b958c4735715bf57c564\"\u003egoogle/dagger#5061\u003c/a\u003e) because it forces users onto AGP 9. It will be available in the next Dagger release (e92e3f392).\u003c/p\u003e\n\u003ch3\u003ePotential breaking changes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlipped default for \u003ccode\u003edagger.useBindingGraphFix\u003c/code\u003e to \u003ccode\u003eenabled\u003c/code\u003e (d41e8362b).\nSee \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#useBindingGraphFix\"\u003ehttps://dagger.dev/dev-guide/compiler-options#useBindingGraphFix\u003c/a\u003e.\n\u003cstrong\u003eFix:\u003c/strong\u003e If this change breaks you it’s likely due to providing a binding in an incorrect module, (e.g. the binding requests an Activity but is installed in the SingletonComponent). The fix is to move the \u003ccode\u003e@Provides\u003c/code\u003e so that it is installed into the correct component (e.g. the ActivityComponent instead of SingletonComponent). You can also set \u003ccode\u003edagger.useBindingGraphFix=disabled\u003c/code\u003e but note that this flag is only temporary and will eventually be removed.\u003c/li\u003e\n\u003cli\u003eThe use of \u003ccode\u003eabstract var\u003c/code\u003e in components is now banned in super types.\nThe reason for this change is that an \u003ccode\u003eabstract var\u003c/code\u003e property creates both a getter and a setter on the component which is almost always unintentional.\n\u003cstrong\u003eFix:\u003c/strong\u003e If this change breaks you, use either an \u003ccode\u003eabstract val foo: Foo\u003c/code\u003e if you need a getter or \u003ccode\u003eabstract fun inject(foo: Foo)\u003c/code\u003e if you need an inject method. Note that \u003ccode\u003eabstract var\u003c/code\u003e is already banned if it is declared directly on the \u003ccode\u003e@Component\u003c/code\u003e class/interface, but this change fixes the check so that it’s banned even if it’s inherited from a super type.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes/features:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1116\"\u003e#1116\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/1630\"\u003e#1630\u003c/a\u003e, Supported \u003ccode\u003eMap\u0026lt;K, Lazy\u0026lt;V\u0026gt;\u0026gt;\u003c/code\u003e as a multibinding request type. (7f981a4c3)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/3601\"\u003e#3601\u003c/a\u003e. No longer adds a deprecation warning for unused dependencies on setters on the component builder. (1cf9dfc96)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4982\"\u003e#4982\u003c/a\u003e:\n\u003cul\u003e\n\u003cli\u003eAdded validation to prevent using Java keywords in Dagger-generated code (72e21a828)\u003c/li\u003e\n\u003cli\u003eAdded error for binding elements names that are Java keywords. (38071c5ae)\u003c/li\u003e\n\u003cli\u003eJava keyword validation is now performed earlier during the superficial validation stage. (7f6f7bda7)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.57.2\u003c/h2\u003e\n\u003ch1\u003eBug fixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/4847\"\u003e#4847\u003c/a\u003e: Fixed an issue with the Hilt Gradle Plugin registered transforms on projects using Gradle 9.0.0 (ea570e7)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4898\"\u003e#4898\u003c/a\u003e: Fixed an issue with backwards compatibility handling for libraries that export Hilt roots. (85c470ca4)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4937\"\u003e#4937\u003c/a\u003e: Fixed the incorrectly declared version of the Kotlin stdlib dependency in the Hilt Gradle Plugin. (deefd9a2d)\u003c/li\u003e\n\u003cli\u003eUpdated ASM dependency to 9.8 (365bc499d)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/118f2e5fc876a8ff080978753a7a73b2a5d642cd\"\u003e\u003ccode\u003e118f2e5\u003c/code\u003e\u003c/a\u003e 2.59.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1be57655bf07880d630154f941b433cec7072c80\"\u003e\u003ccode\u003e1be5765\u003c/code\u003e\u003c/a\u003e Change HiltSyncTask to extend DefaultTask instead of Sync.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7e31b8572df4d791816dfb30a875231176e41d5\"\u003e\u003ccode\u003ef7e31b8\u003c/code\u003e\u003c/a\u003e Replace Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/59090059e8e002e034a10e280a426553c086ec71\"\u003e\u003ccode\u003e5909005\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3507b0d7128a211f4a78634aba8e01a61bbdffc2\"\u003e\u003ccode\u003e3507b0d\u003c/code\u003e\u003c/a\u003e Support nullability in Switching Providers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1900560c6f317d873a3049f73c061211b62e7c95\"\u003e\u003ccode\u003e1900560\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/8c69595320a7661b465bea1aa10465bb7b2db888\"\u003e\u003ccode\u003e8c69595\u003c/code\u003e\u003c/a\u003e Update Dagger yml and README with new latest version number.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1dbb1dd1712b8d9f17fec7bbd7f18e32783bfc11\"\u003e\u003ccode\u003e1dbb1dd\u003c/code\u003e\u003c/a\u003e Internal refactoring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/62b54235eabe799b72e0f62465b671bc97f30cb5\"\u003e\u003ccode\u003e62b5423\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/8dcce87903e678ef78154180568619e26c4e03bc\"\u003e\u003ccode\u003e8dcce87\u003c/code\u003e\u003c/a\u003e Add AggregatedPackagesTransform for \u0026quot;android-classes\u0026quot; artifact type.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.53.1...dagger-2.59.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger:hilt-android-testing` from 2.53.1 to 2.59.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-android-testing's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003ch3\u003eBug fixes/features:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/4944\"\u003e#4944\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/4979\"\u003e#4979\u003c/a\u003e: Support AGP 9 in HiltGradlePlugin (6afd7ea5a0fb84a38f2d23c990ddbd95e728a39d)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.58\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 support was held back from this release (\u003ca href=\"https://redirect.github.com/google/dagger/pull/5061/commits/0a5b42cf910be11752c4b958c4735715bf57c564\"\u003egoogle/dagger#5061\u003c/a\u003e) because it forces users onto AGP 9. It will be available in the next Dagger release (e92e3f392).\u003c/p\u003e\n\u003ch3\u003ePotential breaking changes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlipped default for \u003ccode\u003edagger.useBindingGraphFix\u003c/code\u003e to \u003ccode\u003eenabled\u003c/code\u003e (d41e8362b).\nSee \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#useBindingGraphFix\"\u003ehttps://dagger.dev/dev-guide/compiler-options#useBindingGraphFix\u003c/a\u003e.\n\u003cstrong\u003eFix:\u003c/strong\u003e If this change breaks you it’s likely due to providing a binding in an incorrect module, (e.g. the binding requests an Activity but is installed in the SingletonComponent). The fix is to move the \u003ccode\u003e@Provides\u003c/code\u003e so that it is installed into the correct component (e.g. the ActivityComponent instead of SingletonComponent). You can also set \u003ccode\u003edagger.useBindingGraphFix=disabled\u003c/code\u003e but note that this flag is only temporary and will eventually be removed.\u003c/li\u003e\n\u003cli\u003eThe use of \u003ccode\u003eabstract var\u003c/code\u003e in components is now banned in super types.\nThe reason for this change is that an \u003ccode\u003eabstract var\u003c/code\u003e property creates both a getter and a setter on the component which is almost always unintentional.\n\u003cstrong\u003eFix:\u003c/strong\u003e If this change breaks you, use either an \u003ccode\u003eabstract val foo: Foo\u003c/code\u003e if you need a getter or \u003ccode\u003eabstract fun inject(foo: Foo)\u003c/code\u003e if you need an inject method. Note that \u003ccode\u003eabstract var\u003c/code\u003e is already banned if it is declared directly on the \u003ccode\u003e@Component\u003c/code\u003e class/interface, but this change fixes the check so that it’s banned even if it’s inherited from a super type.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes/features:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1116\"\u003e#1116\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/1630\"\u003e#1630\u003c/a\u003e, Supported \u003ccode\u003eMap\u0026lt;K, Lazy\u0026lt;V\u0026gt;\u0026gt;\u003c/code\u003e as a multibinding request type. (7f981a4c3)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/3601\"\u003e#3601\u003c/a\u003e. No longer adds a deprecation warning for unused dependencies on setters on the component builder. (1cf9dfc96)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4982\"\u003e#4982\u003c/a\u003e:\n\u003cul\u003e\n\u003cli\u003eAdded validation to prevent using Java keywords in Dagger-generated code (72e21a828)\u003c/li\u003e\n\u003cli\u003eAdded error for binding elements names that are Java keywords. (38071c5ae)\u003c/li\u003e\n\u003cli\u003eJava keyword validation is now performed earlier during the superficial validation stage. (7f6f7bda7)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.57.2\u003c/h2\u003e\n\u003ch1\u003eBug fixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/4847\"\u003e#4847\u003c/a\u003e: Fixed an issue with the Hilt Gradle Plugin registered transforms on projects using Gradle 9.0.0 (ea570e7)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4898\"\u003e#4898\u003c/a\u003e: Fixed an issue with backwards compatibility handling for libraries that export Hilt roots. (85c470ca4)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4937\"\u003e#4937\u003c/a\u003e: Fixed the incorrectly declared version of the Kotlin stdlib dependency in the Hilt Gradle Plugin. (deefd9a2d)\u003c/li\u003e\n\u003cli\u003eUpdated ASM dependency to 9.8 (365bc499d)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/118f2e5fc876a8ff080978753a7a73b2a5d642cd\"\u003e\u003ccode\u003e118f2e5\u003c/code\u003e\u003c/a\u003e 2.59.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1be57655bf07880d630154f941b433cec7072c80\"\u003e\u003ccode\u003e1be5765\u003c/code\u003e\u003c/a\u003e Change HiltSyncTask to extend DefaultTask instead of Sync.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7e31b8572df4d791816dfb30a875231176e41d5\"\u003e\u003ccode\u003ef7e31b8\u003c/code\u003e\u003c/a\u003e Replace Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/59090059e8e002e034a10e280a426553c086ec71\"\u003e\u003ccode\u003e5909005\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3507b0d7128a211f4a78634aba8e01a61bbdffc2\"\u003e\u003ccode\u003e3507b0d\u003c/code\u003e\u003c/a\u003e Support nullability in Switching Providers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1900560c6f317d873a3049f73c061211b62e7c95\"\u003e\u003ccode\u003e1900560\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/8c69595320a7661b465bea1aa10465bb7b2db888\"\u003e\u003ccode\u003e8c69595\u003c/code\u003e\u003c/a\u003e Update Dagger yml and README with new latest version number.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1dbb1dd1712b8d9f17fec7bbd7f18e32783bfc11\"\u003e\u003ccode\u003e1dbb1dd\u003c/code\u003e\u003c/a\u003e Internal refactoring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/62b54235eabe799b72e0f62465b671bc97f30cb5\"\u003e\u003ccode\u003e62b5423\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/8dcce87903e678ef78154180568619e26c4e03bc\"\u003e\u003ccode\u003e8dcce87\u003c/code\u003e\u003c/a\u003e Add AggregatedPackagesTransform for \u0026quot;android-classes\u0026quot; artifact type.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.53.1...dagger-2.59.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger.hilt.android` from 2.53.1 to 2.59.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger.hilt.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003ch3\u003eBug fixes/features:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/4944\"\u003e#4944\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/4979\"\u003e#4979\u003c/a\u003e: Support AGP 9 in HiltGradlePlugin (6afd7ea5a0fb84a38f2d23c990ddbd95e728a39d)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.58\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 support was held back from this release (\u003ca href=\"https://redirect.github.com/google/dagger/pull/5061/commits/0a5b42cf910be11752c4b958c4735715bf57c564\"\u003egoogle/dagger#5061\u003c/a\u003e) because it forces users onto AGP 9. It will be available in the next Dagger release (e92e3f392).\u003c/p\u003e\n\u003ch3\u003ePotential breaking changes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlipped default for \u003ccode\u003edagger.useBindingGraphFix\u003c/code\u003e to \u003ccode\u003eenabled\u003c/code\u003e (d41e8362b).\nSee \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#useBindingGraphFix\"\u003ehttps://dagger.dev/dev-guide/compiler-options#useBindingGraphFix\u003c/a\u003e.\n\u003cstrong\u003eFix:\u003c/strong\u003e If this change breaks you it’s likely due to providing a binding in an incorrect module, (e.g. the binding requests an Activity but is installed in the SingletonComponent). The fix is to move the \u003ccode\u003e@Provides\u003c/code\u003e so that it is installed into the correct component (e.g. the ActivityComponent instead of SingletonComponent). You can also set \u003ccode\u003edagger.useBindingGraphFix=disabled\u003c/code\u003e but note that this flag is only temporary and will eventually be removed.\u003c/li\u003e\n\u003cli\u003eThe use of \u003ccode\u003eabstract var\u003c/code\u003e in components is now banned in super types.\nThe reason for this change is that an \u003ccode\u003eabstract var\u003c/code\u003e property creates both a getter and a setter on the component which is almost always unintentional.\n\u003cstrong\u003eFix:\u003c/strong\u003e If this change breaks you, use either an \u003ccode\u003eabstract val foo: Foo\u003c/code\u003e if you need a getter or \u003ccode\u003eabstract fun inject(foo: Foo)\u003c/code\u003e if you need an inject method. Note that \u003ccode\u003eabstract var\u003c/code\u003e is already banned if it is declared directly on the \u003ccode\u003e@Component\u003c/code\u003e class/interface, but this change fixes the check so that it’s banned even if it’s inherited from a super type.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes/features:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1116\"\u003e#1116\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/1630\"\u003e#1630\u003c/a\u003e, Supported \u003ccode\u003eMap\u0026lt;K, Lazy\u0026lt;V\u0026gt;\u0026gt;\u003c/code\u003e as a multibinding request type. (7f981a4c3)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/3601\"\u003e#3601\u003c/a\u003e. No longer adds a deprecation warning for unused dependencies on setters on the component builder. (1cf9dfc96)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4982\"\u003e#4982\u003c/a\u003e:\n\u003cul\u003e\n\u003cli\u003eAdded validation to prevent using Java keywords in Dagger-generated code (72e21a828)\u003c/li\u003e\n\u003cli\u003eAdded error for binding elements names that are Java keywords. (38071c5ae)\u003c/li\u003e\n\u003cli\u003eJava keyword validation is now performed earlier during the superficial validation stage. (7f6f7bda7)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.57.2\u003c/h2\u003e\n\u003ch1\u003eBug fixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/4847\"\u003e#4847\u003c/a\u003e: Fixed an issue with the Hilt Gradle Plugin registered transforms on projects using Gradle 9.0.0 (ea570e7)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4898\"\u003e#4898\u003c/a\u003e: Fixed an issue with backwards compatibility handling for libraries that export Hilt roots. (85c470ca4)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4937\"\u003e#4937\u003c/a\u003e: Fixed the incorrectly declared version of the Kotlin stdlib dependency in the Hilt Gradle Plugin. (deefd9a2d)\u003c/li\u003e\n\u003cli\u003eUpdated ASM dependency to 9.8 (365bc499d)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/118f2e5fc876a8ff080978753a7a73b2a5d642cd\"\u003e\u003ccode\u003e118f2e5\u003c/code\u003e\u003c/a\u003e 2.59.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1be57655bf07880d630154f941b433cec7072c80\"\u003e\u003ccode\u003e1be5765\u003c/code\u003e\u003c/a\u003e Change HiltSyncTask to extend DefaultTask instead of Sync.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7e31b8572df4d791816dfb30a875231176e41d5\"\u003e\u003ccode\u003ef7e31b8\u003c/code\u003e\u003c/a\u003e Replace Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/59090059e8e002e034a10e280a426553c086ec71\"\u003e\u003ccode\u003e5909005\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3507b0d7128a211f4a78634aba8e01a61bbdffc2\"\u003e\u003ccode\u003e3507b0d\u003c/code\u003e\u003c/a\u003e Support nullability in Switching Providers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1900560c6f317d873a3049f73c061211b62e7c95\"\u003e\u003ccode\u003e1900560\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/8c69595320a7661b465bea1aa10465bb7b2db888\"\u003e\u003ccode\u003e8c69595\u003c/code\u003e\u003c/a\u003e Update Dagger yml and README with new latest version number.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1dbb1dd1712b8d9f17fec7bbd7f18e32783bfc11\"\u003e\u003ccode\u003e1dbb1dd\u003c/code\u003e\u003c/a\u003e Internal refactoring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/62b54235eabe799b72e0f62465b671bc97f30cb5\"\u003e\u003ccode\u003e62b5423\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/8dcce87903e678ef78154180568619e26c4e03bc\"\u003e\u003ccode\u003e8dcce87\u003c/code\u003e\u003c/a\u003e Add AggregatedPackagesTransform for \u0026quot;android-classes\u0026quot; artifact type.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.53.1...dagger-2.59.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger:hilt-android-compiler` from 2.53.1 to 2.59.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-android-compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003ch3\u003eBug fixes/features:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/4944\"\u003e#4944\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/4979\"\u003e#4979\u003c/a\u003e: Support AGP 9 in HiltGradlePlugin (6afd7ea5a0fb84a38f2d23c990ddbd95e728a39d)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.58\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 support was held back from this release (\u003ca href=\"https://redirect.github.com/google/dagger/pull/5061/commits/0a5b42cf910be11752c4b958c4735715bf57c564\"\u003egoogle/dagger#5061\u003c/a\u003e) because it forces users onto AGP 9. It will be available in the next Dagger release (e92e3f392).\u003c/p\u003e\n\u003ch3\u003ePotential breaking changes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlipped default for \u003ccode\u003edagger.useBindingGraphFix\u003c/code\u003e to \u003ccode\u003eenabled\u003c/code\u003e (d41e8362b).\nSee \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#useBindingGraphFix\"\u003ehttps://dagger.dev/dev-guide/compiler-options#useBindingGraphFix\u003c/a\u003e.\n\u003cstrong\u003eFix:\u003c/strong\u003e If this change breaks you it’s likely due to providing a binding in an incorrect module, (e.g. the binding requests an Activity but is installed in the SingletonComponent). The fix is to move the \u003ccode\u003e@Provides\u003c/code\u003e so that it is installed into the correct component (e.g. the ActivityComponent instead of SingletonComponent). You can also set \u003ccode\u003edagger.useBindingGraphFix=disabled\u003c/code\u003e but note that this flag is only temporary and will eventually be removed.\u003c/li\u003e\n\u003cli\u003eThe use of \u003ccode\u003eabstract var\u003c/code\u003e in components is now banned in super types.\nThe reason for this change is that an \u003ccode\u003eabstract var\u003c/code\u003e property creates both a getter and a setter on the component which is almost always unintentional.\n\u003cstrong\u003eFix:\u003c/strong\u003e If this change breaks you, use either an \u003ccode\u003eabstract val foo: Foo\u003c/code\u003e if you need a getter or \u003ccode\u003eabstract fun inject(foo: Foo)\u003c/code\u003e if you need an inject method. Note that \u003ccode\u003eabstract var\u003c/code\u003e is already banned if it is declared directly on the \u003ccode\u003e@Component\u003c/code\u003e class/interface, but this change fixes the check so that it’s banned even if it’s inherited from a super type.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes/features:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1116\"\u003e#1116\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/1630\"\u003e#1630\u003c/a\u003e, Supported \u003ccode\u003eMap\u0026lt;K, Lazy\u0026lt;V\u0026gt;\u0026gt;\u003c/code\u003e as a multibinding request type. (7f981a4c3)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/3601\"\u003e#3601\u003c/a\u003e. No longer adds a deprecation warning for unused dependencies on setters on the component builder. (1cf9dfc96)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4982\"\u003e#4982\u003c/a\u003e:\n\u003cul\u003e\n\u003cli\u003eAdded validation to prevent using Java keywords in Dagger-generated code (72e21a828)\u003c/li\u003e\n\u003cli\u003eAdded error for binding elements names that are Java keywords. (38071c5ae)\u003c/li\u003e\n\u003cli\u003eJava keyword validation is now performed earlier during the superficial validation stage. (7f6f7bda7)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.57.2\u003c/h2\u003e\n\u003ch1\u003eBug fixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/4847\"\u003e#4847\u003c/a\u003e: Fixed an issue with the Hilt Gradle Plugin registered transforms on projects using Gradle 9.0.0 (ea570e7)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4898\"\u003e#4898\u003c/a\u003e: Fixed an issue with backwards compatibility handling for libraries that export Hilt roots. (85c470ca4)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4937\"\u003e#4937\u003c/a\u003e: Fixed the incorrectly declared version of the Kotlin stdlib dependency in the Hilt Gradle Plugin. (deefd9a2d)\u003c/li\u003e\n\u003cli\u003eUpdated ASM dependency to 9.8 (365bc499d)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/118f2e5fc876a8ff080978753a7a73b2a5d642cd\"\u003e\u003ccode\u003e118f2e5\u003c/code\u003e\u003c/a\u003e 2.59.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1be57655bf07880d630154f941b433cec7072c80\"\u003e\u003ccode\u003e1be5765\u003c/code\u003e\u003c/a\u003e Change HiltSyncTask to extend DefaultTask instead of Sync.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7e31b8572df4d791816dfb30a875231176e41d5\"\u003e\u003ccode\u003ef7e31b8\u003c/code\u003e\u003c/a\u003e Replace Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/59090059e8e002e034a10e280a426553c086ec71\"\u003e\u003ccode\u003e5909005\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3507b0d7128a211f4a78634aba8e01a61bbdffc2\"\u003e\u003ccode\u003e3507b0d\u003c/code\u003e\u003c/a\u003e Support nullability in Switching Providers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1900560c6f317d873a3049f73c061211b62e7c95\"\u003e\u003ccode\u003e1900560\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/8c69595320a7661b465bea1aa10465bb7b2db888\"\u003e\u003ccode\u003e8c69595\u003c/code\u003e\u003c/a\u003e Update Dagger yml and README with new latest version number.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1dbb1dd1712b8d9f17fec7bbd7f18e32783bfc11\"\u003e\u003ccode\u003e1dbb1dd\u003c/code\u003e\u003c/a\u003e Internal refactoring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/62b54235eabe799b72e0f62465b671bc97f30cb5\"\u003e\u003ccode\u003e62b5423\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/8dcce87903e678ef78154180568619e26c4e03bc\"\u003e\u003ccode\u003e8dcce87\u003c/code\u003e\u003c/a\u003e Add AggregatedPackagesTransform for \u0026quot;android-classes\u0026quot; artifact type.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.53.1...dagger-2.59.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.hilt:hilt-navigation-compose` from 1.2.0 to 1.3.0\n\nUpdates `androidx.hilt:hilt-work` from 1.2.0 to 1.3.0\n\nUpdates `androidx.hilt:hilt-compiler` from 1.2.0 to 1.3.0\n\nUpdates `androidx.hilt:hilt-compiler` from 1.2.0 to 1.3.0\n\nUpdates `androidx.room:room-runtime` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `androidx.datastore:datastore-preferences` from 1.1.1 to 1.2.1\n\nUpdates `androidx.work:work-runtime-ktx` from 2.10.0 to 2.11.2\n\nUpdates `org.jetbrains.kotlinx:kotlinx-serialization-json` from 1.7.3 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-serialization-json's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.20 and provides a new Json exceptions API and some bugfixes and improvements.\u003c/p\u003e\n\u003ch2\u003eExpose Json exceptions structure\u003c/h2\u003e\n\u003cp\u003eTo make working with exceptions easier and providing proper error codes in e.g., REST APIs,\nclasses \u003ccode\u003eJsonException\u003c/code\u003e, \u003ccode\u003eJsonDecodingException\u003c/code\u003e, and \u003ccode\u003eJsonEncodingException\u003c/code\u003e are now public.\nThey have relevant public properties, such as \u003ccode\u003eshortMessage\u003c/code\u003e, \u003ccode\u003epath\u003c/code\u003e, \u003ccode\u003eoffset\u003c/code\u003e, and others.\nThis API is currently experimental, and we're going to improve it further in the subsequent releases.\nSee the linked issues for the details: \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1930\"\u003e#1930\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1877\"\u003e#1877\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eAbility to hide user input from exception messages for security/privacy reasons.\u003c/h2\u003e\n\u003cp\u003eHistorically, exception messages in kotlinx.serialization often included the input Json itself for debuggability reason.\nSuch behavior may pose additional challenges for logging, analytics, and other systems, since\na system is not always allowed to store user data due to privacy/security reasons, which imposes additional sanitation logic.\nTo address this issue, a new property \u003ccode\u003eexceptionsWithDebugInfo\u003c/code\u003e is added to \u003ccode\u003eJsonConfiguration\u003c/code\u003e.\nDisable it to hide user input from exception messages.\nIMPORTANT: This behavior will be enabled by default when this property becomes stable.\nSee \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2590\"\u003e#2590\u003c/a\u003e for more details.\u003c/p\u003e\n\u003ch2\u003eBugfixes and improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCBOR: Relax value range check when decoding numbers (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse a specialized writeDecimalLong method for IO stream integrations in Json (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3152\"\u003e#3152\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.0\u003c/h2\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.0 and contains all of the changes from 1.10.0-RC.\nThe only additional change is a fix for ProtoBuf packing of Kotlin unsigned types (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3079\"\u003e#3079\u003c/a\u003e).\nBig thanks to \u003ca href=\"https://github.com/KosmX\"\u003eKosmX\u003c/a\u003e for contributing the fix.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eFor your convenience, the changelog for 1.10.0-RC is duplicated below:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eStabilization of APIs\u003c/h2\u003e\n\u003cp\u003ekotlinx-serialization 1.10 and subsequent releases will be focused on stabilization of existing APIs.\nThe following APIs and configuration options are no longer experimental because they're widely used without any known major issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eJson\u003c/code\u003e configuration options: \u003ccode\u003edecodeEnumsCaseInsensitive\u003c/code\u003e, \u003ccode\u003eallowTrailingComma\u003c/code\u003e, \u003ccode\u003eallowComments\u003c/code\u003e, and \u003ccode\u003eprettyPrintIndent\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3100\"\u003e#3100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@EncodeDefault\u003c/code\u003e annotation and its modes. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3106\"\u003e#3106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonUnquotedLiteral\u003c/code\u003e constructor function (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2900\"\u003e#2900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonPrimitive\u003c/code\u003e constructor function overloads that accept unsigned types. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJSON DSL functions on \u003ccode\u003eJsonElement\u003c/code\u003e with \u003ccode\u003eNothing?\u003c/code\u003e overloads. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eReadiness for return value checker\u003c/h2\u003e\n\u003cp\u003eKotlin 2.3.0 \u003ca href=\"https://kotlinlang.org/docs/whatsnew23.html#unused-return-value-checker\"\u003eintroduces a new feature\u003c/a\u003e aimed at helping you to catch bugs related to the accidentally ignored return value of the function.\nkotlinx-serialization 1.10.0-RC code is fully marked for this feature, meaning that you can get warnings for unused function calls like \u003ccode\u003eJson.encodeToString(...)\u003c/code\u003e. To get the warnings, the feature has to be enabled in your project as \u003ca href=\"https://kotlinlang.org/docs/unused-return-value-checker.html#configure-the-unused-return-value-checker\"\u003edescribed here\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ePolymorphism improvements\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md\"\u003eorg.jetbrains.kotlinx:kotlinx-serialization-json's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.11.0 / 2026-04-10\u003c/h1\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.20 and provides new Json exceptions API and some bugfixes and improvements.\u003c/p\u003e\n\u003ch2\u003eExpose Json exceptions structure\u003c/h2\u003e\n\u003cp\u003eTo make working with exceptions easier and providing proper error codes in e.g., REST APIs,\nclasses \u003ccode\u003eJsonException\u003c/code\u003e, \u003ccode\u003eJsonDecodingException\u003c/code\u003e, and \u003ccode\u003eJsonEncodingException\u003c/code\u003e are now public.\nThey have relevant public properties, such as \u003ccode\u003eshortMessage\u003c/code\u003e, \u003ccode\u003epath\u003c/code\u003e, \u003ccode\u003eoffset\u003c/code\u003e, and others.\nThis API is currently experimental, and we're going to improve it further in the subsequent releases.\nSee the linked issues for the details: \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1930\"\u003e#1930\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1877\"\u003e#1877\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eAbility to hide user input from exception messages for security/privacy reasons.\u003c/h2\u003e\n\u003cp\u003eHistorically, exception messages in kotlinx.serialization often included the input Json itself for debuggability reason.\nSuch behavior may pose additional challenges for logging, analytics, and other systems, since\na system is not always allowed to store user data due to privacy/security reasons, which imposes additional sanitation logic.\nTo address this issue, a new property \u003ccode\u003eexceptionsWithDebugInfo\u003c/code\u003e is added to \u003ccode\u003eJsonConfiguration\u003c/code\u003e.\nDisable it to hide user input from exception messages.\nIMPORTANT: This behavior will be enabled by default when this property becomes stable.\nSee \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2590\"\u003e#2590\u003c/a\u003e for more details.\u003c/p\u003e\n\u003ch2\u003eBugfixes and improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCBOR: Relax value range check when decoding numbers (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse a specialized writeDecimalLong method for IO stream integrations in Json (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3152\"\u003e#3152\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.10.0 / 2026-01-21\u003c/h1\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.0 and contains all of the changes from 1.10.0-RC.\nThe only additional change is a fix for ProtoBuf packing of Kotlin unsigned types (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3079\"\u003e#3079\u003c/a\u003e).\nBig thanks to \u003ca href=\"https://github.com/KosmX\"\u003eKosmX\u003c/a\u003e for contributing the fix.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eFor your convenience, the changelog for 1.10.0-RC is duplicated below:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eStabilization of APIs\u003c/h2\u003e\n\u003cp\u003ekotlinx-serialization 1.10 and subsequent releases will be focused on stabilization of existing APIs.\nThe following APIs and configuration options are no longer experimental because they're widely used without any known major issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eJson\u003c/code\u003e configuration options: \u003ccode\u003edecodeEnumsCaseInsensitive\u003c/code\u003e, \u003ccode\u003eallowTrailingComma\u003c/code\u003e, \u003ccode\u003eallowComments\u003c/code\u003e, and \u003ccode\u003eprettyPrintIndent\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3100\"\u003e#3100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@EncodeDefault\u003c/code\u003e annotation and its modes. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3106\"\u003e#3106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonUnquotedLiteral\u003c/code\u003e constructor function (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2900\"\u003e#2900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonPrimitive\u003c/code\u003e constructor function overloads that accept unsigned types. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJSON DSL functions on \u003ccode\u003eJsonElement\u003c/code\u003e with \u003ccode\u003eNothing?\u003c/code\u003e overloads. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eReadiness for return value checker\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/6956af2e6073347c7832c3c5b374fa3b5a345956\"\u003e\u003ccode\u003e6956af2\u003c/code\u003e\u003c/a\u003e Prepare 1.11 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/390d84c68a19cbf7fa453dec22a333648bde49b4\"\u003e\u003ccode\u003e390d84c\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/431fe2dc0a144300b33038820d24fc30302c8abc\"\u003e\u003ccode\u003e431fe2d\u003c/code\u003e\u003c/a\u003e Use local repo for publishing (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3171\"\u003e#3171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/05c12b60a6717b99053fb82e1f94d2f859727374\"\u003e\u003ccode\u003e05c12b6\u003c/code\u003e\u003c/a\u003e Add usage attribute to \u0026quot;testRepositories\u0026quot; configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/a4e1f082ef2e72caa139b474c05657de6015da20\"\u003e\u003ccode\u003ea4e1f08\u003c/code\u003e\u003c/a\u003e Bump Kover version to 0.9.8 release (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3174\"\u003e#3174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/304e858ccc7066854637d86ab80056f5f2bcc094\"\u003e\u003ccode\u003e304e858\u003c/code\u003e\u003c/a\u003e Expose Json exceptions structure (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/4a0338ef5093d765138151bc30282e909ca459e4\"\u003e\u003ccode\u003e4a0338e\u003c/code\u003e\u003c/a\u003e Included G Play SDK verification file for core-jvm (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3169\"\u003e#3169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/421f64c74f0ea6d4a3cdc8dd483505366e3f6c8f\"\u003e\u003ccode\u003e421f64c\u003c/code\u003e\u003c/a\u003e CBOR: Relax value range check when decoding numbers (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/85a4f126ec491c77e2b3686cc22c1bae27a20783\"\u003e\u003ccode\u003e85a4f12\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/bd38b0e49bce38d1a55576e89856bc63990167ed\"\u003e\u003ccode\u003ebd38b0e\u003c/code\u003e\u003c/a\u003e Remove dead code\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/compare/v1.7.3...v1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-android` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ec...\n\n_Description has been truncated_","html_url":"https://github.com/ganeshnaik166/equipseva-android/pull/938","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ganeshnaik166%2Fequipseva-android/issues/938","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/938/packages"},{"uuid":"4423376220","node_id":"PR_kwDOSW0jps7aYNjc","number":16,"state":"closed","title":"chore(deps): bump the android-dependencies group in /ElaroMobil with 19 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-05-11T19:02:46.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-11T18:42:39.000Z","updated_at":"2026-05-11T19:02:51.000Z","time_to_close":1207,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"android-dependencies","update_count":19,"packages":[{"name":"com.github.bumptech.glide:compiler","old_version":"4.15.1","new_version":"5.0.7","repository_url":"https://github.com/bumptech/glide"},{"name":"com.squareup.okhttp3:okhttp","old_version":"4.12.0","new_version":"5.3.2","repository_url":"https://github.com/square/okhttp"},{"name":"com.google.code.gson:gson","old_version":"2.10.1","new_version":"2.14.0","repository_url":"https://github.com/google/gson"},{"name":"com.squareup.retrofit2:retrofit","old_version":"2.9.0","new_version":"3.0.0","repository_url":"https://github.com/square/retrofit"},{"name":"com.squareup.retrofit2:converter-gson","old_version":"2.9.0","new_version":"3.0.0","repository_url":"https://github.com/square/retrofit"},{"name":"gradle-wrapper","old_version":"8.11.1","new_version":"9.5.0","repository_url":"https://github.com/gradle/gradle"},{"name":"androidx.core:core-ktx","old_version":"1.16.0","new_version":"1.18.0"},{"name":"androidx.test.ext:junit","old_version":"1.2.1","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.6.1","new_version":"3.7.0"},{"name":"androidx.lifecycle:lifecycle-runtime-ktx","old_version":"2.8.7","new_version":"2.10.0"},{"name":"androidx.activity:activity-compose","old_version":"1.10.1","new_version":"1.13.0"},{"name":"androidx.compose:compose-bom","old_version":"2024.09.00","new_version":"2026.05.00"},{"name":"androidx.appcompat:appcompat","old_version":"1.7.0","new_version":"1.7.1"},{"name":"com.google.android.material:material","old_version":"1.12.0","new_version":"1.13.0","repository_url":"https://github.com/material-components/material-components-android"},{"name":"androidx.constraintlayout:constraintlayout","old_version":"2.1.4","new_version":"2.2.1"},{"name":"com.github.bumptech.glide:glide","old_version":"4.15.1","new_version":"5.0.7","repository_url":"https://github.com/bumptech/glide"},{"name":"com.android.application","old_version":"8.9.1","new_version":"9.2.1"},{"name":"org.jetbrains.kotlin.android","old_version":"2.0.21","new_version":"2.3.21","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.0.21","new_version":"2.3.21","repository_url":"https://github.com/JetBrains/kotlin"}],"path":"/ElaroMobil","ecosystem":"maven"},"body":"[//]: # (dependabot-start)\n⚠️  **Dependabot is rebasing this PR** ⚠️ \n\nRebasing might not happen immediately, so don't worry if this takes some time.\n\nNote: if you make any changes to this PR yourself, they will take precedence over the rebase.\n\n---\n\n[//]: # (dependabot-end)\n\nBumps the android-dependencies group in /ElaroMobil with 19 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [com.github.bumptech.glide:compiler](https://github.com/bumptech/glide) | `4.15.1` | `5.0.7` |\n| [com.squareup.okhttp3:okhttp](https://github.com/square/okhttp) | `4.12.0` | `5.3.2` |\n| [com.google.code.gson:gson](https://github.com/google/gson) | `2.10.1` | `2.14.0` |\n| [com.squareup.retrofit2:retrofit](https://github.com/square/retrofit) | `2.9.0` | `3.0.0` |\n| [com.squareup.retrofit2:converter-gson](https://github.com/square/retrofit) | `2.9.0` | `3.0.0` |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `8.11.1` | `9.5.0` |\n| androidx.core:core-ktx | `1.16.0` | `1.18.0` |\n| androidx.test.ext:junit | `1.2.1` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.6.1` | `3.7.0` |\n| androidx.lifecycle:lifecycle-runtime-ktx | `2.8.7` | `2.10.0` |\n| androidx.activity:activity-compose | `1.10.1` | `1.13.0` |\n| androidx.compose:compose-bom | `2024.09.00` | `2026.05.00` |\n| androidx.appcompat:appcompat | `1.7.0` | `1.7.1` |\n| [com.google.android.material:material](https://github.com/material-components/material-components-android) | `1.12.0` | `1.13.0` |\n| androidx.constraintlayout:constraintlayout | `2.1.4` | `2.2.1` |\n| [com.github.bumptech.glide:glide](https://github.com/bumptech/glide) | `4.15.1` | `5.0.7` |\n| com.android.application | `8.9.1` | `9.2.1` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.0.21` | `2.3.21` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.0.21` | `2.3.21` |\n\nUpdates `com.github.bumptech.glide:compiler` from 4.15.1 to 5.0.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/bumptech/glide/releases\"\u003ecom.github.bumptech.glide:compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eGlide v5.0.7\u003c/h2\u003e\n\u003ch2\u003eCompose\u003c/h2\u003e\n\u003cp\u003eN/A\u003c/p\u003e\n\u003ch2\u003eKTX\u003c/h2\u003e\n\u003cp\u003eN/A\u003c/p\u003e\n\u003ch2\u003eBuild Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd missing version bump\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cp\u003eN/A\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/bumptech/glide/compare/v5.0.6...v5.0.7\"\u003ehttps://github.com/bumptech/glide/compare/v5.0.6...v5.0.7\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eGlide v5.0.6\u003c/h2\u003e\n\u003ch2\u003eCompose\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVersion bump to 1.0.0-beta09\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eKTX\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVersion bump to 1.0.0-beta09\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBuild Changes\u003c/h2\u003e\n\u003cp\u003eN/A\u003c/p\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSet the background memory category only when trim level is higher than TRIM_MEMORY_UI_HIDDEN. See \u003ca href=\"https://redirect.github.com/bumptech/glide/pull/5669\"\u003ebumptech/glide#5669\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop appending requireOriginal to URIs loaded by Glide on Android R+. See \u003ca href=\"https://redirect.github.com/bumptech/glide/pull/5668\"\u003ebumptech/glide#5668\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eConverting a second set of Groovy Gradle files to Kotlin DSL. See \u003ca href=\"https://redirect.github.com/bumptech/glide/pull/5639\"\u003ebumptech/glide#5639\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigrate from Robolectric's Util.readBytes to Guava ByteStreams. See \u003ca href=\"https://redirect.github.com/bumptech/glide/pull/5636\"\u003ebumptech/glide#5636\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/bumptech/glide/compare/v5.0.5...v5.0.6\"\u003ehttps://github.com/bumptech/glide/compare/v5.0.5...v5.0.6\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eGlide v5.0.5\u003c/h2\u003e\n\u003ch2\u003eCompose\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVersion bump to 1.0.0-beta08\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eKTX\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVersion bump to 1.0.0-beta08\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBuild Changes\u003c/h2\u003e\n\u003cp\u003eN/A\u003c/p\u003e\n\u003ch2\u003eBugs\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestores GlideUrl fix for urls with IPV6 addresses fix that was accidentally reverted in 5.0.4. See \u003ca href=\"https://redirect.github.com/bumptech/glide/pull/5444\"\u003ebumptech/glide#5444\u003c/a\u003e for details\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/bumptech/glide/compare/v5.0.4...v5.0.5\"\u003ehttps://github.com/bumptech/glide/compare/v5.0.4...v5.0.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eGlide v5.0.4\u003c/h2\u003e\n\u003ch2\u003eCompose\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/c751c283ed852f73b7fd6f0ed8ba5b8b7e452b38\"\u003e\u003ccode\u003ec751c28\u003c/code\u003e\u003c/a\u003e Bump to 5.0.7 (\u003ca href=\"https://redirect.github.com/bumptech/glide/issues/5673\"\u003e#5673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/91f33f02ce5317075066a14e16038dd573d492fb\"\u003e\u003ccode\u003e91f33f0\u003c/code\u003e\u003c/a\u003e Bump ktx and compose versions to 1.0.0-beta09 (\u003ca href=\"https://redirect.github.com/bumptech/glide/issues/5672\"\u003e#5672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/c17a83cf5691671e13df259dd251f65a47007281\"\u003e\u003ccode\u003ec17a83c\u003c/code\u003e\u003c/a\u003e Update isAndroidPickerUri to support new picker URI variations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/c0a2dd4b1f7fa1f4d06474e660f921d80b6a9f2d\"\u003e\u003ccode\u003ec0a2dd4\u003c/code\u003e\u003c/a\u003e Stop appending requireOriginal to URIs loaded by Glide on Android R+\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/03ab8ba0168110d53d41267096663b5c8751a5b4\"\u003e\u003ccode\u003e03ab8ba\u003c/code\u003e\u003c/a\u003e A trim level of TRIM_MEMORY_UI_HIDDEN is applicable to a process with a state...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/d4278e03c08216c49f0cf6147447693eaadb30fb\"\u003e\u003ccode\u003ed4278e0\u003c/code\u003e\u003c/a\u003e Bump Gradle to 8.14.4.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/b12f574fd6ea20430c55c5a2eb29d624d843bf3e\"\u003e\u003ccode\u003eb12f574\u003c/code\u003e\u003c/a\u003e Allow limiting the size of LruBitmapPool/MemoryCache when in background\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/82657e94c17267743b866ce475d98f33dd551955\"\u003e\u003ccode\u003e82657e9\u003c/code\u003e\u003c/a\u003e No public description\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/d5915398eb200c6795aa3bfbcc4c6c2db1cf8b06\"\u003e\u003ccode\u003ed591539\u003c/code\u003e\u003c/a\u003e Allow limiting the size of LruBitmapPool/MemoryCache when in background\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/5e158121a6cac01503f1e0f6c312aa241f045552\"\u003e\u003ccode\u003e5e15812\u003c/code\u003e\u003c/a\u003e Converting a second set of Groovy Gradle files to Kotlin DSL.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/bumptech/glide/compare/v4.15.1...v5.0.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.squareup.okhttp3:okhttp` from 4.12.0 to 5.3.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/square/okhttp/blob/master/CHANGELOG.md\"\u003ecom.squareup.okhttp3:okhttp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 5.3.2\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-11-18\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: Don't delay triggering timeouts. In Okio 3.16.0 we introduced a regression that caused\ntimeouts to fire later than they were supposed to.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade: [Okio 3.16.4][okio_3_16_4].\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 5.3.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-11-16\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eThis release is the same as 5.3.0. Okio 3.16.3 didn't have a necessary fix!\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade: [Okio 3.16.3][okio_3_16_3].\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 5.3.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-10-30\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNew: Add tags to \u003ccode\u003eCall\u003c/code\u003e, including computable tags. Use this to attach application-specific\nmetadata to a \u003ccode\u003eCall\u003c/code\u003e in an \u003ccode\u003eEventListener\u003c/code\u003e or \u003ccode\u003eInterceptor\u003c/code\u003e. The tag can be read in any other\n\u003ccode\u003eEventListener\u003c/code\u003e or \u003ccode\u003eInterceptor\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"kotlin\"\u003e\u003ccode\u003e  override fun intercept(chain: Interceptor.Chain): Response {\n    chain.call().tag(MyAnalyticsTag::class) {\n      MyAnalyticsTag(...)\n    }\n\u003cpre\u003e\u003ccode\u003ereturn chain.proceed(chain.request())\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e}\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eNew: Support request bodies on HTTP/1.1 connection upgrades.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eNew: \u003ccode\u003eEventListener.plus()\u003c/code\u003e makes it easier to observe events in multiple listeners.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: Don't spam logs with \u003cem\u003e‘Method isLoggable in android.util.Log not mocked.’\u003c/em\u003e when using\nOkHttp in Robolectric and Paparazzi tests.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade: [Kotlin 2.2.21][kotlin_2_2_21].\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade: [Okio 3.16.2][okio_3_16_2].\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade: [ZSTD-KMP 0.4.0][zstd_kmp_0_4_0]. This update fixes a bug that caused APKs to fail\n[16 KB ELF alignment checks][elf_alignment].\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 5.2.3\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-11-18\u003c/em\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/okhttp/commit/75b9c267744cdd2e8b222d247052748ff0954304\"\u003e\u003ccode\u003e75b9c26\u003c/code\u003e\u003c/a\u003e Prepare for release 5.3.2.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/okhttp/commit/ab48e5d86d0c0b16b3679b9b9522acf65db73da4\"\u003e\u003ccode\u003eab48e5d\u003c/code\u003e\u003c/a\u003e Okio 3.16.4 (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9200\"\u003e#9200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/okhttp/commit/a9a4638b3d38b83782a959514b4183ddea0f071f\"\u003e\u003ccode\u003ea9a4638\u003c/code\u003e\u003c/a\u003e Prepare next development version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/okhttp/commit/ef72228d270c21962ab632b4c5a0dfd7ab4fd661\"\u003e\u003ccode\u003eef72228\u003c/code\u003e\u003c/a\u003e Prepare for release 5.3.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/okhttp/commit/674716746bb4efce30501b711ea3ec188c0d670d\"\u003e\u003ccode\u003e6747167\u003c/code\u003e\u003c/a\u003e Update com.squareup.okio to v3.16.3 (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9197\"\u003e#9197\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/okhttp/commit/0960b47ec28a02e893499d2a7e53bf462a62875e\"\u003e\u003ccode\u003e0960b47\u003c/code\u003e\u003c/a\u003e Prepare for release 5.3.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/okhttp/commit/bfb24eb90b3be7fb73541ea02ce8d5dfc4021709\"\u003e\u003ccode\u003ebfb24eb\u003c/code\u003e\u003c/a\u003e Support Request Bodies on HTTP1.1 Connection Upgrades (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9159\"\u003e#9159\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/okhttp/commit/cf4a86439568e640c39da5e4e73af6565a5510b1\"\u003e\u003ccode\u003ecf4a864\u003c/code\u003e\u003c/a\u003e Update Gradle to v9.2.0 (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9171\"\u003e#9171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/okhttp/commit/4e7dbec1ea6c9cf8d80422ac9d44b9b185c749a3\"\u003e\u003ccode\u003e4e7dbec\u003c/code\u003e\u003c/a\u003e Update dependency com.puppycrawl.tools:checkstyle to v12.1.1 (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9169\"\u003e#9169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/okhttp/commit/0470853d724ec9e3c68a6ef83a4d1a60a73ef289\"\u003e\u003ccode\u003e0470853\u003c/code\u003e\u003c/a\u003e Add tags to calls, including computable tags (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9168\"\u003e#9168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/square/okhttp/compare/parent-4.12.0...parent-5.3.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.code.gson:gson` from 2.10.1 to 2.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/gson/releases\"\u003ecom.google.code.gson:gson's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eGson 2.14.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type adapters for \u003ccode\u003ejava.time\u003c/code\u003e classes by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2948\"\u003egoogle/gson#2948\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWhen the \u003ccode\u003ejava.time\u003c/code\u003e API is available, Gson automatically can read and write instances of classes like \u003ccode\u003eInstant\u003c/code\u003e and \u003ccode\u003eDuration\u003c/code\u003e. The format it uses essentially freezes the JSON representation that \u003ccode\u003eReflectiveTypeAdapterFactory\u003c/code\u003e established by default, based on the private fields of \u003ccode\u003ejava.time\u003c/code\u003e classes. That's not a great representation, but it is understandable. Changing it to anything else would break compatibility with systems that are expecting the current format.\u003c/p\u003e\n\u003cp\u003eWith this change, Gson no longer tries to access private fields of these classes using reflection. So it is no longer necessary to run with \u003ccode\u003e--add-opens\u003c/code\u003e for these classes on recent JDKs.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003ecom.google.gson.graph\u003c/code\u003e by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2990\"\u003egoogle/gson#2990\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis package was not part of any released artifact and depended on Gson internals in potentially problematic ways.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eValidate that strings being parsed as integers consist of ASCII characters by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2995\"\u003egoogle/gson#2995\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003ePreviously, strings could contain non-ASCII Unicode digits and still be parsed as integers. That's inconsistent with how JSON numbers are treated.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix duplicate key detection when first value is null by \u003ca href=\"https://github.com/andrewstellman\"\u003e\u003ccode\u003e@​andrewstellman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/3006\"\u003egoogle/gson#3006\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis could potentially break code that was relying on the incorrect behaviour. For example, this JSON string was previously accepted but will no longer be: \u003ccode\u003e{\u0026quot;foo\u0026quot;: null, \u0026quot;foo\u0026quot;: bar}\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003eSerializable\u003c/code\u003e from internal \u003ccode\u003eType\u003c/code\u003e implementation classes. by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/3011\"\u003egoogle/gson#3011\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe nested classes \u003ccode\u003eParameterizedTypeImpl\u003c/code\u003e, \u003ccode\u003eGenericArrayTypeImpl\u003c/code\u003e, and \u003ccode\u003eWildcardTypeImpl\u003c/code\u003e in \u003ccode\u003eGsonTypes\u003c/code\u003e are implementations of the corresponding types (without \u003ccode\u003eImpl\u003c/code\u003e) in \u003ccode\u003ejava.lang.reflect\u003c/code\u003e. For some reason, they were serializable, even though the \u003ccode\u003ejava.lang.reflect\u003c/code\u003e implementations are not. Having unnecessarily serializable classes could \u003cem\u003econceivably\u003c/em\u003e have been a security problem if they were part of a larger exploit using serialization. (We do not consider this a likely scenario and do not suggest that you need to update Gson just to get this change.)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eLegacyProtoTypeAdapterFactory\u003c/code\u003e. by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/3014\"\u003egoogle/gson#3014\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is not part of any released artifact, but may be of use when trying to fix code that is currently accessing the internals of protobuf classes via reflection.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake AppendableWriter do flush and close if delegation object supports by \u003ca href=\"https://github.com/MukjepScarlet\"\u003e\u003ccode\u003e@​MukjepScarlet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2925\"\u003egoogle/gson#2925\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther less visible changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd default capacity to EnumTypeAdapter maps by \u003ca href=\"https://github.com/MukjepScarlet\"\u003e\u003ccode\u003e@​MukjepScarlet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2959\"\u003egoogle/gson#2959\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: move derived adapters from Gson to TypeAdapters by \u003ca href=\"https://github.com/MukjepScarlet\"\u003e\u003ccode\u003e@​MukjepScarlet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2951\"\u003egoogle/gson#2951\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOptimize \u003ccode\u003enew Gson()\u003c/code\u003e by \u003ca href=\"https://github.com/MukjepScarlet\"\u003e\u003ccode\u003e@​MukjepScarlet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2864\"\u003egoogle/gson#2864\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ThirdGoddess\"\u003e\u003ccode\u003e@​ThirdGoddess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/google/gson/pull/2944\"\u003egoogle/gson#2944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lmj798\"\u003e\u003ccode\u003e@​lmj798\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/google/gson/pull/2988\"\u003egoogle/gson#2988\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Eng-YasminKotb\"\u003e\u003ccode\u003e@​Eng-YasminKotb\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/google/gson/pull/3005\"\u003egoogle/gson#3005\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/andrewstellman\"\u003e\u003ccode\u003e@​andrewstellman\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/google/gson/pull/3006\"\u003egoogle/gson#3006\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/gson/compare/gson-parent-2.13.2...gson-parent-2.14.0\"\u003ehttps://github.com/google/gson/compare/gson-parent-2.13.2...gson-parent-2.14.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eGson 2.13.2\u003c/h2\u003e\n\u003cp\u003eThe main changes in this release are just newer dependencies.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/3ff35d6269894901ab8006258395aafc4b9765cd\"\u003e\u003ccode\u003e3ff35d6\u003c/code\u003e\u003c/a\u003e [maven-release-plugin] prepare release gson-parent-2.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/a3024fde2a5c12b9a9a0b6b914ae4899aa574d81\"\u003e\u003ccode\u003ea3024fd\u003c/code\u003e\u003c/a\u003e Bump the maven group with 13 updates (\u003ca href=\"https://redirect.github.com/google/gson/issues/3002\"\u003e#3002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/5689ffe44952ca6ed44c595886b9043286311b23\"\u003e\u003ccode\u003e5689ffe\u003c/code\u003e\u003c/a\u003e Bump the github-actions group across 1 directory with 3 updates (\u003ca href=\"https://redirect.github.com/google/gson/issues/3018\"\u003e#3018\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/48db33cbf93af6b2f5b117dfdfd826de47f7229c\"\u003e\u003ccode\u003e48db33c\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eLegacyProtoTypeAdapterFactory\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/google/gson/issues/3014\"\u003e#3014\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/53d703ee76ca3e951fa4a727307c1f28dbcaf3aa\"\u003e\u003ccode\u003e53d703e\u003c/code\u003e\u003c/a\u003e Update outdated comment regarding serializable types (\u003ca href=\"https://redirect.github.com/google/gson/issues/3012\"\u003e#3012\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/0189b727761f31596d1a27b7c60b42478dc9f331\"\u003e\u003ccode\u003e0189b72\u003c/code\u003e\u003c/a\u003e Remove \u003ccode\u003eSerializable\u003c/code\u003e from internal \u003ccode\u003eType\u003c/code\u003e implementation classes. (\u003ca href=\"https://redirect.github.com/google/gson/issues/3011\"\u003e#3011\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/f4d371d29c04066dbe7fdb31f642831f9c7f40cd\"\u003e\u003ccode\u003ef4d371d\u003c/code\u003e\u003c/a\u003e Fix duplicate key detection when first value is null (\u003ca href=\"https://redirect.github.com/google/gson/issues/3006\"\u003e#3006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/27d9ba1eeeeb156540cf5397504a4f9f256e911f\"\u003e\u003ccode\u003e27d9ba1\u003c/code\u003e\u003c/a\u003e Fix typo in README (JPMS dependencies section) (\u003ca href=\"https://redirect.github.com/google/gson/issues/3005\"\u003e#3005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/1fa9b7a0a994b006b3be00e2df9de778e71e6807\"\u003e\u003ccode\u003e1fa9b7a\u003c/code\u003e\u003c/a\u003e Validate that strings being parsed as integers consist of ASCII characters (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/b7d59549188867deb42e46073fb38735a5beda1c\"\u003e\u003ccode\u003eb7d5954\u003c/code\u003e\u003c/a\u003e Add iterator fail-fast tests for LinkedTreeMap.clear() (\u003ca href=\"https://redirect.github.com/google/gson/issues/2992\"\u003e#2992\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/gson/compare/gson-parent-2.10.1...gson-parent-2.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.squareup.retrofit2:retrofit` from 2.9.0 to 3.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/square/retrofit/releases\"\u003ecom.squareup.retrofit2:retrofit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eChanged\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to OkHttp 4.12 (from 3.14).\u003c/p\u003e\n\u003cp\u003eThis is the version of OkHttp that is written in Kotlin, and as a result Retrofit now has a transitive Kotlin dependency. However, this is also the \u003cem\u003esupported\u003c/em\u003e version of OkHttp whereas the previous version was out of support for nearly 4 years.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNote: The 3.x versions of Retrofit maintain forward binary-compatibility with the 2.x versions.\nThis means libraries compiled against 2.x can still be used with the 3.x versions.\u003c/p\u003e\n\u003ch2\u003e2.12.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFirst-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using \u003ccode\u003eCall.enqueue\u003c/code\u003e directly.\u003c/p\u003e\n\u003cp\u003eThe following converters support this feature through a new \u003ccode\u003ewithStreaming()\u003c/code\u003e factory method:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGson\u003c/li\u003e\n\u003cli\u003eJackson\u003c/li\u003e\n\u003cli\u003eMoshi\u003c/li\u003e\n\u003cli\u003eProtobuf\u003c/li\u003e\n\u003cli\u003eWire\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrimitive types used with \u003ccode\u003e@Tag\u003c/code\u003e now work by storing the value boxed with the boxed class as the key.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.11.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe built-in \u003ccode\u003eOptionalConverterFactory\u003c/code\u003e is now public to allow installing it before other converters which consume all types (e.g., Moshi, Gson, Jackson, etc.).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure that exceptions thrown from failure to parse method annotations can be observed by multiple threads/callers. Previously only the first caller would see the actual parsing exception and other callers would get a cryptic \u003ccode\u003eClassCastException\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.10.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport using \u003ccode\u003eUnit\u003c/code\u003e as a response type. This can be used for non-body HTTP methods like \u003ccode\u003eHEAD\u003c/code\u003e or body-containing HTTP methods like \u003ccode\u003eGET\u003c/code\u003e where the body will be discarded without deserialization.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ekotlinx.serialization converter!\u003c/p\u003e\n\u003cp\u003eThis was imported from \u003ca href=\"https://github.com/JakeWharton/retrofit2-kotlinx-serialization-converter/\"\u003egithub.com/JakeWharton/retrofit2-kotlinx-serialization-converter/\u003c/a\u003e and remains unchanged from its 1.0.0 release.\u003c/p\u003e\n\u003cp\u003eThe Maven coordinates are \u003ccode\u003ecom.squareup.retrofit2:converter-kotlinx-serialization\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eJAXB 3 converter!\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/square/retrofit/blob/trunk/CHANGELOG.md\"\u003ecom.squareup.retrofit2:retrofit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/square/retrofit/releases/tag/3.0.0\"\u003e3.0.0\u003c/a\u003e - 2025-05-15\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eChanged\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to OkHttp 4.12 (from 3.14).\u003c/p\u003e\n\u003cp\u003eThis is the version of OkHttp that is written in Kotlin, and as a result Retrofit now has a transitive Kotlin dependency. However, this is also the \u003cem\u003esupported\u003c/em\u003e version of OkHttp whereas the previous version was out of support for nearly 4 years.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNote: The 3.x versions of Retrofit maintain forward binary-compatibility with the 2.x versions.\nThis means libraries compiled against 2.x can still be used with the 3.x versions.\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/square/retrofit/releases/tag/2.12.0\"\u003e2.12.0\u003c/a\u003e - 2025-05-15\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFirst-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using \u003ccode\u003eCall.enqueue\u003c/code\u003e directly.\u003c/p\u003e\n\u003cp\u003eThe following converters support this feature through a new \u003ccode\u003ewithStreaming()\u003c/code\u003e factory method:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGson\u003c/li\u003e\n\u003cli\u003eJackson\u003c/li\u003e\n\u003cli\u003eMoshi\u003c/li\u003e\n\u003cli\u003eProtobuf\u003c/li\u003e\n\u003cli\u003eWire\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrimitive types used with \u003ccode\u003e@Tag\u003c/code\u003e now work by storing the value boxed with the boxed class as the key.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[2.11.0] - 2024-03-28\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe built-in \u003ccode\u003eOptionalConverterFactory\u003c/code\u003e is now public to allow installing it before other converters which consume all types (e.g., Moshi, Gson, Jackson, etc.).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure that exceptions thrown from failure to parse method annotations can be observed by multiple threads/callers. Previously only the first caller would see the actual parsing exception and other callers would get a cryptic \u003ccode\u003eClassCastException\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[2.10.0] - 2024-03-18\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport using \u003ccode\u003eUnit\u003c/code\u003e as a response type. This can be used for non-body HTTP methods like \u003ccode\u003eHEAD\u003c/code\u003e or body-containing HTTP methods like \u003ccode\u003eGET\u003c/code\u003e where the body will be discarded without deserialization.\u003c/li\u003e\n\u003cli\u003ekotlinx.serialization converter!\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/3ab0f1a2c18666adb79ebf4eacef6fbc40d3e801\"\u003e\u003ccode\u003e3ab0f1a\u003c/code\u003e\u003c/a\u003e Prepare version 3.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/e5c02d08f3777ce00a31fb37d77f15eecdf4e383\"\u003e\u003ccode\u003ee5c02d0\u003c/code\u003e\u003c/a\u003e Commit 2.x docs (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4378\"\u003e#4378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/5bc3f183cfa24ab1f382c2029dc82ee292caef1b\"\u003e\u003ccode\u003e5bc3f18\u003c/code\u003e\u003c/a\u003e Fix links on the proudction site (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4377\"\u003e#4377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/7c3b2290bd6cd985ebaa93bfc183abd1bf04b977\"\u003e\u003ccode\u003e7c3b229\u003c/code\u003e\u003c/a\u003e Remove compileOnly stdlib dependency (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4376\"\u003e#4376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/84185470adc33a0f1b3d8766f2d722c770e2e89a\"\u003e\u003ccode\u003e8418547\u003c/code\u003e\u003c/a\u003e Update okhttp monorepo to v4 (major) (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4375\"\u003e#4375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/06216a3b24ad828e511fd25b4858a1ed104c8719\"\u003e\u003ccode\u003e06216a3\u003c/code\u003e\u003c/a\u003e Try to fix removal of latest dir during release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/1697bdc4913a34871125c96c7be16b688c6e82bc\"\u003e\u003ccode\u003e1697bdc\u003c/code\u003e\u003c/a\u003e Prepare next development version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/5a6ce364ad5208999a8e0847de760f97d39ecffe\"\u003e\u003ccode\u003e5a6ce36\u003c/code\u003e\u003c/a\u003e Prepare version 2.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/4fb8aed0cc6ebcc581d128922768867ae14e85c1\"\u003e\u003ccode\u003e4fb8aed\u003c/code\u003e\u003c/a\u003e Fix artifact name (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4372\"\u003e#4372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/bf11ef4cfaa3c50967f79e87b3e27f33670b42bc\"\u003e\u003ccode\u003ebf11ef4\u003c/code\u003e\u003c/a\u003e Dedicated website build, final status job (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/square/retrofit/compare/2.9.0...3.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.squareup.retrofit2:converter-gson` from 2.9.0 to 3.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/square/retrofit/releases\"\u003ecom.squareup.retrofit2:converter-gson's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eChanged\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to OkHttp 4.12 (from 3.14).\u003c/p\u003e\n\u003cp\u003eThis is the version of OkHttp that is written in Kotlin, and as a result Retrofit now has a transitive Kotlin dependency. However, this is also the \u003cem\u003esupported\u003c/em\u003e version of OkHttp whereas the previous version was out of support for nearly 4 years.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNote: The 3.x versions of Retrofit maintain forward binary-compatibility with the 2.x versions.\nThis means libraries compiled against 2.x can still be used with the 3.x versions.\u003c/p\u003e\n\u003ch2\u003e2.12.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFirst-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using \u003ccode\u003eCall.enqueue\u003c/code\u003e directly.\u003c/p\u003e\n\u003cp\u003eThe following converters support this feature through a new \u003ccode\u003ewithStreaming()\u003c/code\u003e factory method:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGson\u003c/li\u003e\n\u003cli\u003eJackson\u003c/li\u003e\n\u003cli\u003eMoshi\u003c/li\u003e\n\u003cli\u003eProtobuf\u003c/li\u003e\n\u003cli\u003eWire\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrimitive types used with \u003ccode\u003e@Tag\u003c/code\u003e now work by storing the value boxed with the boxed class as the key.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.11.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe built-in \u003ccode\u003eOptionalConverterFactory\u003c/code\u003e is now public to allow installing it before other converters which consume all types (e.g., Moshi, Gson, Jackson, etc.).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure that exceptions thrown from failure to parse method annotations can be observed by multiple threads/callers. Previously only the first caller would see the actual parsing exception and other callers would get a cryptic \u003ccode\u003eClassCastException\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.10.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport using \u003ccode\u003eUnit\u003c/code\u003e as a response type. This can be used for non-body HTTP methods like \u003ccode\u003eHEAD\u003c/code\u003e or body-containing HTTP methods like \u003ccode\u003eGET\u003c/code\u003e where the body will be discarded without deserialization.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ekotlinx.serialization converter!\u003c/p\u003e\n\u003cp\u003eThis was imported from \u003ca href=\"https://github.com/JakeWharton/retrofit2-kotlinx-serialization-converter/\"\u003egithub.com/JakeWharton/retrofit2-kotlinx-serialization-converter/\u003c/a\u003e and remains unchanged from its 1.0.0 release.\u003c/p\u003e\n\u003cp\u003eThe Maven coordinates are \u003ccode\u003ecom.squareup.retrofit2:converter-kotlinx-serialization\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eJAXB 3 converter!\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/square/retrofit/blob/trunk/CHANGELOG.md\"\u003ecom.squareup.retrofit2:converter-gson's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/square/retrofit/releases/tag/3.0.0\"\u003e3.0.0\u003c/a\u003e - 2025-05-15\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eChanged\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to OkHttp 4.12 (from 3.14).\u003c/p\u003e\n\u003cp\u003eThis is the version of OkHttp that is written in Kotlin, and as a result Retrofit now has a transitive Kotlin dependency. However, this is also the \u003cem\u003esupported\u003c/em\u003e version of OkHttp whereas the previous version was out of support for nearly 4 years.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNote: The 3.x versions of Retrofit maintain forward binary-compatibility with the 2.x versions.\nThis means libraries compiled against 2.x can still be used with the 3.x versions.\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/square/retrofit/releases/tag/2.12.0\"\u003e2.12.0\u003c/a\u003e - 2025-05-15\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFirst-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using \u003ccode\u003eCall.enqueue\u003c/code\u003e directly.\u003c/p\u003e\n\u003cp\u003eThe following converters support this feature through a new \u003ccode\u003ewithStreaming()\u003c/code\u003e factory method:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGson\u003c/li\u003e\n\u003cli\u003eJackson\u003c/li\u003e\n\u003cli\u003eMoshi\u003c/li\u003e\n\u003cli\u003eProtobuf\u003c/li\u003e\n\u003cli\u003eWire\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrimitive types used with \u003ccode\u003e@Tag\u003c/code\u003e now work by storing the value boxed with the boxed class as the key.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[2.11.0] - 2024-03-28\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe built-in \u003ccode\u003eOptionalConverterFactory\u003c/code\u003e is now public to allow installing it before other converters which consume all types (e.g., Moshi, Gson, Jackson, etc.).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure that exceptions thrown from failure to parse method annotations can be observed by multiple threads/callers. Previously only the first caller would see the actual parsing exception and other callers would get a cryptic \u003ccode\u003eClassCastException\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[2.10.0] - 2024-03-18\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport using \u003ccode\u003eUnit\u003c/code\u003e as a response type. This can be used for non-body HTTP methods like \u003ccode\u003eHEAD\u003c/code\u003e or body-containing HTTP methods like \u003ccode\u003eGET\u003c/code\u003e where the body will be discarded without deserialization.\u003c/li\u003e\n\u003cli\u003ekotlinx.serialization converter!\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/3ab0f1a2c18666adb79ebf4eacef6fbc40d3e801\"\u003e\u003ccode\u003e3ab0f1a\u003c/code\u003e\u003c/a\u003e Prepare version 3.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/e5c02d08f3777ce00a31fb37d77f15eecdf4e383\"\u003e\u003ccode\u003ee5c02d0\u003c/code\u003e\u003c/a\u003e Commit 2.x docs (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4378\"\u003e#4378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/5bc3f183cfa24ab1f382c2029dc82ee292caef1b\"\u003e\u003ccode\u003e5bc3f18\u003c/code\u003e\u003c/a\u003e Fix links on the proudction site (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4377\"\u003e#4377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/7c3b2290bd6cd985ebaa93bfc183abd1bf04b977\"\u003e\u003ccode\u003e7c3b229\u003c/code\u003e\u003c/a\u003e Remove compileOnly stdlib dependency (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4376\"\u003e#4376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/84185470adc33a0f1b3d8766f2d722c770e2e89a\"\u003e\u003ccode\u003e8418547\u003c/code\u003e\u003c/a\u003e Update okhttp monorepo to v4 (major) (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4375\"\u003e#4375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/06216a3b24ad828e511fd25b4858a1ed104c8719\"\u003e\u003ccode\u003e06216a3\u003c/code\u003e\u003c/a\u003e Try to fix removal of latest dir during release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/1697bdc4913a34871125c96c7be16b688c6e82bc\"\u003e\u003ccode\u003e1697bdc\u003c/code\u003e\u003c/a\u003e Prepare next development version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/5a6ce364ad5208999a8e0847de760f97d39ecffe\"\u003e\u003ccode\u003e5a6ce36\u003c/code\u003e\u003c/a\u003e Prepare version 2.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/4fb8aed0cc6ebcc581d128922768867ae14e85c1\"\u003e\u003ccode\u003e4fb8aed\u003c/code\u003e\u003c/a\u003e Fix artifact name (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4372\"\u003e#4372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/bf11ef4cfaa3c50967f79e87b3e27f33670b42bc\"\u003e\u003ccode\u003ebf11ef4\u003c/code\u003e\u003c/a\u003e Dedicated website build, final status job (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/square/retrofit/compare/2.9.0...3.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gradle-wrapper` from 8.11.1 to 9.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gradle/gradle/releases\"\u003egradle-wrapper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.5.0\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.5.0.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTask provenance in reports and failure messages\u003c/li\u003e\n\u003cli\u003eType-safe accessors for precompiled Kotlin Settings plugins\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gradle.org/9.5.0/release-notes.html\"\u003eRead the Release Notes\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe would like to thank the following community members for their contributions to this release of Gradle:\n\u003ca href=\"https://github.com/atm1020\"\u003eatm1020\u003c/a\u003e,\n\u003ca href=\"https://github.com/mataha\"\u003emataha\u003c/a\u003e,\n\u003ca href=\"https://github.com/aSemy\"\u003eAdam\u003c/a\u003e,\n\u003ca href=\"https://github.com/kelemen\"\u003eAttila Kelemen\u003c/a\u003e,\n\u003ca href=\"https://github.com/britter\"\u003eBenedikt Ritter\u003c/a\u003e,\n\u003ca href=\"https://github.com/Vampire\"\u003eBjörn Kautler\u003c/a\u003e,\n\u003ca href=\"https://github.com/budindepunk\"\u003eCaro Silva Rode\u003c/a\u003e,\n\u003ca href=\"https://github.com/chanani\"\u003eCHANHAN\u003c/a\u003e,\n\u003ca href=\"https://github.com/DmitryNez\"\u003eDmitry Nezavitin\u003c/a\u003e,\n\u003ca href=\"https://github.com/Juneezee\"\u003eEng Zer Jun\u003c/a\u003e,\n\u003ca href=\"https://github.com/KugelLibelle\"\u003eKugelLibelle\u003c/a\u003e,\n\u003ca href=\"https://github.com/vmadalin\"\u003eMadalin Valceleanu\u003c/a\u003e,\n\u003ca href=\"https://github.com/quijote\"\u003eMarkus Gaisbauer\u003c/a\u003e,\n\u003ca href=\"https://github.com/koppor\"\u003eOliver Kopp\u003c/a\u003e,\n\u003ca href=\"https://github.com/hfhbd\"\u003ePhilip Wedemann\u003c/a\u003e,\n\u003ca href=\"https://github.com/ploober\"\u003eploober\u003c/a\u003e,\n\u003ca href=\"https://github.com/rpalcolea\"\u003eRoberto Perez Alcolea\u003c/a\u003e,\n\u003ca href=\"https://github.com/R0h1tAnand\"\u003eRohit Anand\u003c/a\u003e,\n\u003ca href=\"https://github.com/Suvrat1629\"\u003eSuvrat Acharya\u003c/a\u003e,\n\u003ca href=\"https://github.com/usv240\"\u003eUjwal Suresh Vanjare\u003c/a\u003e,\n\u003ca href=\"https://github.com/urdak\"\u003eVictor Merkulov\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eUpgrade instructions\u003c/h2\u003e\n\u003cp\u003eSwitch your build to use Gradle 9.5.0 by updating your wrapper:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./gradlew wrapper --gradle-version=9.5.0 \u0026amp;\u0026amp; ./gradlew wrapper\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the Gradle \u003ca href=\"https://docs.gradle.org/9.5.0/userguide/upgrading_version_9.html\"\u003e9.x upgrade guide\u003c/a\u003e to learn about deprecations, breaking changes and other considerations when upgrading.\u003c/p\u003e\n\u003cp\u003eFor Java, Groovy, Kotlin and Android compatibility, see the \u003ca href=\"https://docs.gradle.org/9.5.0/userguide/compatibility.html\"\u003efull compatibility notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReporting problems\u003c/h2\u003e\n\u003cp\u003eIf you find a problem with this release, please file a bug on \u003ca href=\"https://github.com/gradle/gradle/issues\"\u003eGitHub Issues\u003c/a\u003e adhering to our issue guidelines.\nIf you're not sure you're encountering a bug, please use the \u003ca href=\"https://discuss.gradle.org/c/help-discuss\"\u003eforum\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe hope you will build happiness with Gradle, and we look forward to your feedback via \u003ca href=\"https://twitter.com/gradle\"\u003eTwitter\u003c/a\u003e or on \u003ca href=\"https://github.com/gradle\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e9.5.0 RC4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/3fe117d68f3907790f3809f121aa36303a9151f8\"\u003e\u003ccode\u003e3fe117d\u003c/code\u003e\u003c/a\u003e Update jdks.yaml (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37703\"\u003e#37703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/33d145af6fbe7cf7c9d84646b6d7f32fea91d5e2\"\u003e\u003ccode\u003e33d145a\u003c/code\u003e\u003c/a\u003e Update jdks.yaml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/f7a05d1ed48442eb5da4d6e2b6593da55cdec1da\"\u003e\u003ccode\u003ef7a05d1\u003c/code\u003e\u003c/a\u003e Update Gradle wrapper to version 9.5.0-rc-4 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37654\"\u003e#37654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/266facdcbcb0b4c60120cc118eaf0f652bfcdfe5\"\u003e\u003ccode\u003e266facd\u003c/code\u003e\u003c/a\u003e Update Gradle wrapper to version 9.5.0-rc-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/0ad6dd8e143455707e444aa7e3d38327a3366513\"\u003e\u003ccode\u003e0ad6dd8\u003c/code\u003e\u003c/a\u003e Suppress OSC taskbar reset on plain/piped stdout (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37646\"\u003e#37646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/966025d5850d46c9158a2f25e4096222277ecf57\"\u003e\u003ccode\u003e966025d\u003c/code\u003e\u003c/a\u003e Suppress OSC taskbar reset on plain/piped stdout\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/e7455734449e422accebf44cf7b31bf93e3a770c\"\u003e\u003ccode\u003ee745573\u003c/code\u003e\u003c/a\u003e Polish IP docs (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37642\"\u003e#37642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/d5cfd079acd2c8f1182edd6ec23dbab571132d0a\"\u003e\u003ccode\u003ed5cfd07\u003c/code\u003e\u003c/a\u003e Ensure BuildOperationQueue will progress without extra leases (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37629\"\u003e#37629\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/acdf0c36fa13ba09a7ff5b51f79b9af4b1a097ee\"\u003e\u003ccode\u003eacdf0c3\u003c/code\u003e\u003c/a\u003e Ensure BuildOperationQueue will progress without extra leases\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/f7d0e4f6f7896426a8b24091388e4c252b62faef\"\u003e\u003ccode\u003ef7d0e4f\u003c/code\u003e\u003c/a\u003e Rename anchor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gradle/gradle/compare/v8.11.1...v9.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.core:core-ktx` from 1.16.0 to 1.18.0\n\nUpdates `androidx.test.ext:junit` from 1.2.1 to 1.3.0\n\nUpdates `androidx.test.espresso:espresso-core` from 3.6.1 to 3.7.0\n\nUpdates `androidx.lifecycle:lifecycle-runtime-ktx` from 2.8.7 to 2.10.0\n\nUpdates `androidx.activity:activity-compose` from 1.10.1 to 1.13.0\n\nUpdates `androidx.compose:compose-bom` from 2024.09.00 to 2026.05.00\n\nUpdates `androidx.appcompat:appcompat` from 1.7.0 to 1.7.1\n\nUpdates `com.google.android.material:material` from 1.12.0 to 1.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/material-components/material-components-android/releases\"\u003ecom.google.android.material:material's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.13.0\u003c/h2\u003e\n\u003ch1\u003eNew in 1.13.0!\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eDockedToolbarLayout\u003c/code\u003e (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/lib/java/com/google/android/material/dockedtoolbar/DockedToolbarLayout.java\"\u003esource\u003c/a\u003e, \u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/DockedToolbar.md\"\u003edoc\u003c/a\u003e, \u003ca href=\"https://m3.material.io/components/toolbars/overview\"\u003espec\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFloatingToolbarLayout\u003c/code\u003e (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/lib/java/com/google/android/material/floatingtoolbar/FloatingToolbarLayout.java\"\u003esource\u003c/a\u003e, \u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/FloatingToolbar.md\"\u003edoc\u003c/a\u003e, \u003ca href=\"https://m3.material.io/components/toolbars/overview\"\u003espec\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eLoadingIndicator\u003c/code\u003e (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/lib/java/com/google/android/material/loadingindicator/LoadingIndicator.java\"\u003esource\u003c/a\u003e, \u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/LoadingIndicator.md\"\u003edoc\u003c/a\u003e, \u003ca href=\"https://m3.material.io/components/loading-indicator/overview\"\u003espec\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMaterialSplitButton\u003c/code\u003e (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/lib/java/com/google/android/material/button/MaterialSplitButton.java\"\u003esource\u003c/a\u003e, \u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/SplitButton.md\"\u003edoc\u003c/a\u003e, \u003ca href=\"https://m3.material.io/components/split-button/overview\"\u003espec\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMaterialButtonGroup\u003c/code\u003e (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/lib/java/com/google/android/material/button/MaterialButtonGroup.java\"\u003esource\u003c/a\u003e, \u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/ButtonGroup.md\"\u003edoc\u003c/a\u003e, \u003ca href=\"https://m3.material.io/components/button-groups/overview\"\u003espec\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImportant\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRequired \u003ccode\u003eminSdkVersion\u003c/code\u003e is now 21 or higher, for Material and \u003ca href=\"https://developer.android.com/jetpack/androidx/versions#version-table\"\u003eAndroidX\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eNow built with \u003ccode\u003ecompileSdkVersion\u003c/code\u003e 35, Android Gradle Plugin (AGP) 8.7.3, Gradle 8.9, and \u003ccode\u003eandroid.nonTransitiveRClass=true\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003eThis means that \u003ca href=\"https://developer.android.com/build/optimize-your-build#use-non-transitive-r-classes\"\u003eR classes are no longer transitive\u003c/a\u003e and resources must be fully qualified with their library path when used programmatically (see the \u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/getting-started.md#non-transitive-r-classes-referencing-library-resources-programmatically\"\u003eGetting Started guide\u003c/a\u003e for more info).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eMaterial 3 Expressive has moved to the 1.14.0 versions of the library. To get a sneak peak, update to version \u003ca href=\"https://github.com/material-components/material-components-android/releases/tag/1.14.0-alpha04\"\u003e1.14.0-alpha04\u003c/a\u003e and use the \u003ccode\u003eMaterial3Expressive\u003c/code\u003e themes/styles in conjunction with new components mentioned above.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDependency Updates\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eDependency\u003c/th\u003e\n\u003cth\u003ePrevious version\u003c/th\u003e\n\u003cth\u003eNew version\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.appcompat:appcompat\u003c/td\u003e\n\u003ctd\u003e1.6.1\u003c/td\u003e\n\u003ctd\u003e1.7.0\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.constraintlayout:constraintlayout\u003c/td\u003e\n\u003ctd\u003e2.0.1\u003c/td\u003e\n\u003ctd\u003e2.1.0\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.dynamicanimation:dynamicanimation\u003c/td\u003e\n\u003ctd\u003e1.0.0\u003c/td\u003e\n\u003ctd\u003e1.1.0\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.graphics:graphics-shapes\u003c/td\u003e\n\u003ctd\u003eN/A\u003c/td\u003e\n\u003ctd\u003e1.0.1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ecom.android.tools.build:gradle\u003c/td\u003e\n\u003ctd\u003e7.4.2\u003c/td\u003e\n\u003ctd\u003e8.7.3\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eLibrary Updates\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eA11y\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eInclude \u0026quot;hour\u0026quot; and \u0026quot;minute\u0026quot; in announcements. For example: \u0026quot;Not checked, Hour - 11'0 clock. double tap to select Hour\u0026quot;. (960bb4cb825c607c244d51ed4f302752912e37cc)\u003c/li\u003e\n\u003cli\u003eMove responsibility of disabling hide on scroll to HideViewOnScrollBehavior and BottomAppBar (9c33476db68ffc15151b742516da2f7e8c4a98f7)\u003c/li\u003e\n\u003cli\u003ePrevent hide on scroll when Talkback is on (d56070586102b66486f7f8697de077c3d7689922)\u003c/li\u003e\n\u003cli\u003eAdd missing 'button' mention to Talkback output for close icon. (79bd7d7b1ba46b0593c7758a81b02bdb5a1dbf67)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBottomNavigationView\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate catalog demo to demonstrate adaptive bottom navigation bar (76936c42c43164b9930f616266f215bf7045003a)\u003c/li\u003e\n\u003cli\u003eFix early return in setItemGravity() (8a4d3c695117c46cf1c7235744d81196fb97110f)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBottomSheet\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent ACTION_DOWN events on the BottomSheetHandleDragView from setting touchingScrollChild to true. (af7f254bf660704368d46e630d34a81c479fa1c7)\u003c/li\u003e\n\u003cli\u003eFix keyboard animation on Android 14 (a0b4dfa8769f98851efe97569c900f75eb0d5ef2)\u003c/li\u003e\n\u003cli\u003eFixed main catalog demo cutting off content when screen size is too small. (005687d1b64ea5542168183511861f7d023682da)\u003c/li\u003e\n\u003cli\u003eRemove disruptive announcement \u0026quot;Drag handle double tapped\u0026quot;for BottomSheetDragHandleView. (95025c6728e49946c55d4b2688f97fa1d321cd02)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCarousel\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eRecyclerview children do not inherit layout direction (ca0b870a344ef6e8f5fadc1ec417ef11f5b23340)\u003c/li\u003e\n\u003cli\u003eUpdate keyline state if necessary if item size changes (52228c1b3bd50dd1a81bdaae40aeb93ef4d9ea9b)\u003c/li\u003e\n\u003cli\u003eUpdate multi-browse strategy to always have at least 1 medium item (916e9085f9ca66704f907fd6af14d7e55df5d411)\u003c/li\u003e\n\u003cli\u003eRecalculate keyline state if it doesn't match the current container size (d0f5d721a1f83b3b115d7f20bf865fb1df9063a3)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCheckbox\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate translations. (771119111e58d101f2540f0bbbb572073ff9c053)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eChip\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eGet default minTouchTargetSize from material attributes (436437a6fbf2d28658fea46320a350db33c7a455)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003eshow all\u003c/code\u003e Chip for a11y (8e334213fc806b399ec014bdf68a3778064de308)\u003c/li\u003e\n\u003cli\u003eUpdated flow layout to correctly layout padding when in RTL. (1eaf483fc94f522546d349e6984e24c15d226d18)\u003c/li\u003e\n\u003cli\u003eFix close icon focus ripple (a7ff8c9006b69cbfcc346f74ed8a9ebad6661346)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/84c0e6d6d493fcf176d2099683245b78afbeb78d\"\u003e\u003ccode\u003e84c0e6d\u003c/code\u003e\u003c/a\u003e Update library version to 1.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/46fde74a93f1a1e88eeeff91266086853365e437\"\u003e\u003ccode\u003e46fde74\u003c/code\u003e\u003c/a\u003e [Theme] Added missing Shape Attributes to Dialog themes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/8f58fcc6fcd5af77a249db19f94501c5a7a06a20\"\u003e\u003ccode\u003e8f58fcc\u003c/code\u003e\u003c/a\u003e Update library version to 1.13.0-rc01\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/64867cf0242dcbd358decdc21f6210614ea9bbd8\"\u003e\u003ccode\u003e64867cf\u003c/code\u003e\u003c/a\u003e [ProgressIndicator] Updated to not throw exceptions for calling `setIndetermi...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/f89b8afeb7fcf48201a44d62f6663523eadc2963\"\u003e\u003ccode\u003ef89b8af\u003c/code\u003e\u003c/a\u003e [LoadingIndicator] Added a default static drawable, which is displayed when t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/d56330d6a14db489bf9453da739c2ed4c029f384\"\u003e\u003ccode\u003ed56330d\u003c/code\u003e\u003c/a\u003e Update library version to 1.13.0-beta01\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/1886cf0485a7a9297fa847c7bec6ac6055025548\"\u003e\u003ccode\u003e1886cf0\u003c/code\u003e\u003c/a\u003e [LoadingIndicator] Fixed the animation no constant rotation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/61c5a6d042111cb90bdf2ad4fc626925f397700c\"\u003e\u003ccode\u003e61c5a6d\u003c/code\u003e\u003c/a\u003e [Internal] Restore binary compatibility (ViewOverlay)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/e722464dbc039cfb3282b2d58df93b4f538bbe6e\"\u003e\u003ccode\u003ee722464\u003c/code\u003e\u003c/a\u003e [MaterialButton] Updated the shapes of buttons when the orientation is changed.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/df9074c4f5cbb79fcd78ba1002b1131fd57db1f0\"\u003e\u003ccode\u003edf9074c\u003c/code\u003e\u003c/a\u003e [ButtonGroup] Fixed connected button groups to not morph button size.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/material-components/material-components-android/compare/1.12.0...1.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.constraintlayout:constraintlayout` from 2.1.4 to 2.2.1\n\nUpdates `com.github.bumptech.glide:glide` from 4.15.1 to 5.0.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/bumptech/glide/releases\"\u003ecom.github.bumptech.glide:glide's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eGlide v5.0.7\u003c/h2\u003e\n\u003ch2\u003eCompose\u003c/h2\u003e\n\u003cp\u003eN/A\u003c/p\u003e\n\u003ch2\u003eKTX\u003c/h2\u003e\n\u003cp\u003eN/A\u003c/p\u003e\n\u003ch2\u003eBuild Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd missing version bump\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cp\u003eN/A\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/bumptech/glide/compare/v5.0.6...v5.0.7\"\u003ehttps://github.com/bumptech/glide/compare/v5.0.6...v5.0.7\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eGlide v5.0.6\u003c/h2\u003e\n\u003ch2\u003eCompose\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVersion bump to 1.0.0-beta09\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eKTX\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVersion bump to 1.0.0-beta09\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBuild Changes\u003c/h2\u003e\n\u003cp\u003eN/A\u003c/p\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSet the background memory category only when trim level is higher than TRIM_MEMORY_UI_HIDDEN. See \u003ca href=\"https://redirect.github.com/bumptech/glide/pull/5669\"\u003ebumptech/glide#5669\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop appending requireOriginal to URIs loaded by Glide on Android R+. See \u003ca href=\"https://redirect.github.com/bumptech/glide/pull/5668\"\u003ebumptech/glide#5668\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eConverting a second set of Groovy Gradle files to Kotlin DSL. See \u003ca href=\"https://redirect.github.com/bumptech/glide/pull/5639\"\u003ebumptech/glide#5639\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigrate from Robolectric's Util.readBytes to Guava ByteStreams. See \u003ca href=\"https://redirect.github.com/bumptech/glide/pull/5636\"\u003ebumptech/glide#5636\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/bumptech/glide/compare/v5.0.5...v5.0.6\"\u003ehttps://github.com/bumptech/glide/compare/v5.0.5...v5.0.6\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eGlide v5.0.5\u003c/h2\u003e\n\u003ch2\u003eCompose\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVersion bump to 1.0.0-beta08\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eKTX\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVersion bump to 1.0.0-beta08\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBuild Changes\u003c/h2\u003e\n\u003cp\u003eN/A\u003c/p\u003e\n\u003ch2\u003eBugs\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestores GlideUrl fix for urls with IPV6 addresses fix that was accidentally reverted in 5.0.4. See \u003ca href=\"https://redirect.github.com/bumptech/glide/pull/5444\"\u003ebumptech/glide#5444\u003c/a\u003e for details\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/bumptech/glide/compare/v5.0.4...v5.0.5\"\u003ehttps://github.com/bumptech/glide/compare/v5.0.4...v5.0.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eGlide v5.0.4\u003c/h2\u003e\n\u003ch2\u003eCompose\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/c751c283ed852f73b7fd6f0ed8ba5b8b7e452b38\"\u003e\u003ccode\u003ec751c28\u003c/code\u003e\u003c/a\u003e Bump to 5.0.7 (\u003ca href=\"https://redirect.github.com/bumptech/glide/issues/5673\"\u003e#5673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/91f33f02ce5317075066a14e16038dd573d492fb\"\u003e\u003ccode\u003e91f33f0\u003c/code\u003e\u003c/a\u003e Bump ktx and compose versions to 1.0.0-beta09 (\u003ca href=\"https://redirect.github.com/bumptech/glide/issues/5672\"\u003e#5672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/c17a83cf5691671e13df259dd251f65a47007281\"\u003e\u003ccode\u003ec17a83c\u003c/code\u003e\u003c/a\u003e Update isAndroidPickerUri to support new picker URI variations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/c0a2dd4b1f7fa1f4d06474e660f921d80b6a9f2d\"\u003e\u003ccode\u003ec0a2dd4\u003c/code\u003e\u003c/a\u003e Stop appending requireOriginal to URIs loaded by Glide on Android R+\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/03ab8ba0168110d53d41267096663b5c8751a5b4\"\u003e\u003ccode\u003e03ab8ba\u003c/code\u003e\u003c/a\u003e A trim level of TRIM_MEMORY_UI_HIDDEN is applicable to a process with a state...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/d4278e03c08216c49f0cf6147447693eaadb30fb\"\u003e\u003ccode\u003ed4278e0\u003c/code\u003e\u003c/a\u003e Bump Gradle to 8.14.4.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/b12f574fd6ea20430c55c5a2eb29d624d843bf3e\"\u003e\u003ccode\u003eb12f574\u003c/code\u003e\u003c/a\u003e Allow limiting the size of LruBitmapPool/MemoryCache when in background\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/82657e94c17267743b866ce475d98f33dd551955\"\u003e\u003ccode\u003e82657e9\u003c/code\u003e\u003c/a\u003e No public description\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/d5915398eb200c6795aa3bfbcc4c6c2db1cf8b06\"\u003e\u003ccode\u003ed591539\u003c/code\u003e\u003c/a\u003e Allow limiting the size of LruBitmapPool/MemoryCache when in background\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/5e158121a6cac01503f1e0f6c312aa241f045552\"\u003e\u003ccode\u003e5e15812\u003c/code\u003e\u003c/a\u003e Converting a second set of Groovy Gradle files to Kotlin DSL.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/bumptech/glide/compare/v4.15.1...v5.0.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.android.application` from 8.9.1 to 9.2.1\n\nUpdates `org.jetbrains.kotlin.android` from 2.0.21 to 2.3.21\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.3.21\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84610\"\u003e\u003ccode\u003eKT-84610\u003c/code\u003e\u003c/a\u003e [Wasm] Failed to compile klibs in IC mode\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84566\"\u003e\u003ccode\u003eKT-84566\u003c/code\u003e\u003c/a\u003e Prevent launching Default dispatcher threads from IJ SDK in kotlin compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85358\"\u003e\u003ccode\u003eKT-85358\u003c/code\u003e\u003c/a\u003e Native: roll back the workaround for KT-84678 once MapLibre has been properly fixed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85626\"\u003e\u003ccode\u003eKT-85626\u003c/code\u003e\u003c/a\u003e  \u003ccode\u003e@JvmRecord\u003c/code\u003e in commonMain breaks compileCommonMainKotlinMetadata with \u0026quot;Cannot access 'java.lang.Record'\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85405\"\u003e\u003ccode\u003eKT-85405\u003c/code\u003e\u003c/a\u003e Postpone/Revert \u003ccode\u003eDontIgnoreUpperBoundViolatedOnImplicitArguments\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84678\"\u003e\u003ccode\u003eKT-84678\u003c/code\u003e\u003c/a\u003e K/N: Undefined symbol from SPM-added ObjC frameworks when linking iOS target\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85021\"\u003e\u003ccode\u003eKT-85021\u003c/code\u003e\u003c/a\u003e False positive SUBCLASS_CANT_CALL_COMPANION_PROTECTED_NON_STATIC error in multi-module project\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eJavaScript\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-82395\"\u003e\u003ccode\u003eKT-82395\u003c/code\u003e\u003c/a\u003e Support top-level declarations from compiler plugins in JS incremental compilation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84475\"\u003e\u003ccode\u003eKT-84475\u003c/code\u003e\u003c/a\u003e K/JS: false-positive exportability warnings in multi-module project\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84633\"\u003e\u003ccode\u003eKT-84633\u003c/code\u003e\u003c/a\u003e Kotlin/JS: \u0026quot;Serializer for class not found\u0026quot; error when IR output granularity is \u003ccode\u003ewhole-program\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85047\"\u003e\u003ccode\u003eKT-85047\u003c/code\u003e\u003c/a\u003e Kotlin/JS: \u003ccode\u003e@JsStatic\u003c/code\u003e on suspend fun of class companion generates incorrect d.ts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84517\"\u003e\u003ccode\u003eKT-84517\u003c/code\u003e\u003c/a\u003e K/JS: bad mappings data in outputted Kotlin stdlib source map\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eLibraries\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-71848\"\u003e\u003ccode\u003eKT-71848\u003c/code\u003e\u003c/a\u003e Kotlinx.metadata: Add \u003ccode\u003eCompilerPluginData\u003c/code\u003e into Km API\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNative. C and ObjC Import\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85399\"\u003e\u003ccode\u003eKT-85399\u003c/code\u003e\u003c/a\u003e Kotlin/Native: TypeCastException when casting ObjC Protocol MetaClass with genericSafeCasts enabled\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85508\"\u003e\u003ccode\u003eKT-85508\u003c/code\u003e\u003c/a\u003e K/N: TypeCastException when using nw_parameters_create_secure_tcp block parameter on 2.3.20\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84729\"\u003e\u003ccode\u003eKT-84729\u003c/code\u003e\u003c/a\u003e Update Gradle plugin-publish version to enable configuration cache badge on Gradle plugins portal\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Compiler plugins\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85257\"\u003e\u003ccode\u003eKT-85257\u003c/code\u003e\u003c/a\u003e AGP/Compose: MergeMappingFileTask clears R8 artifacts due to \u003ccode\u003e@OutputDirectory\u003c/code\u003e annotation on AGP 9.1+\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85105\"\u003e\u003ccode\u003eKT-85105\u003c/code\u003e\u003c/a\u003e Scripts: JVM backend internal error (IR lowering) when scratch file contains anonymous object\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85103\"\u003e\u003ccode\u003eKT-85103\u003c/code\u003e\u003c/a\u003e Exception while generating code when explain destructuring decls\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84842\"\u003e\u003ccode\u003eKT-84842\u003c/code\u003e\u003c/a\u003e scriptCompilationClasspathFromContext behavior changed from 2.3.10 to 2.3.20\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85029\"\u003e\u003ccode\u003eKT-85029\u003c/code\u003e\u003c/a\u003e Kotlin Scripting: ScriptDiagnostic reports \u0026quot;at null\u0026quot; instead of error location\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Statistics (FUS)\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.3.21\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84610\"\u003e\u003ccode\u003eKT-84610\u003c/code\u003e\u003c/a\u003e [Wasm] Failed to compile klibs in IC mode\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84566\"\u003e\u003ccode\u003eKT-84566\u003c/code\u003e\u003c/a\u003e Prevent launching Default dispatcher threads from IJ SDK in kotlin compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85358\"\u003e\u003ccode\u003eKT-85358\u003c/code\u003e\u003c/a\u003e Native: roll back the workaround for KT-84678 once MapLibre has been properly fixed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85626\"\u003e\u003ccode\u003eKT-85626\u003c/code\u003e\u003c/a\u003e  \u003ccode\u003e@JvmRecord\u003c/code\u003e in commonMain breaks compileCommonMainKotlinMetadata with \u0026quot;Cannot access 'java.lang.Record'\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85405\"\u003e\u003ccode\u003eKT-85405\u003c/code\u003e\u003c/a\u003e Postpone/Revert \u003ccode\u003eDontIgnoreUpperBoundViolatedOnImplicitArguments\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84678\"\u003e\u003ccode\u003eKT-84678\u003c/code\u003e\u003c/a\u003e K/N: Undefined symbol from SPM-added ObjC frameworks when linking iOS target\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85021\"\u003e\u003ccode\u003eKT-85021\u003c/code\u003e\u003c/a\u003e False positive SUBCLASS_CANT_CALL_COMPANION_PROTECTED_NON_STATIC error in multi-module project\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eJavaScript\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-82395\"\u003e\u003ccode\u003eKT-82395\u003c/code\u003e\u003c/a\u003e Support top-level declarations from compiler plugins in JS incremental compilation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84475\"\u003e\u003ccode\u003eKT-84475\u003c/code\u003e\u003c/a\u003e K/JS: false-positive exportability warnings in multi-module project\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84633\"\u003e\u003ccode\u003eKT-84633\u003c/code\u003e\u003c/a\u003e Kotlin/JS: \u0026quot;Serializer for class not found\u0026quot; error when IR output granularity is \u003ccode\u003ewhole-program\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85047\"\u003e\u003ccode\u003eKT-85047\u003c/code\u003e\u003c/a\u003e Kotlin/JS: \u003ccode\u003e@JsStatic\u003c/code\u003e on suspend fun of class companion generates incorrect d.ts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84517\"\u003e\u003ccode\u003eKT-84517\u003c/code\u003e\u003c/a\u003e K/JS: bad mappings data in outputted Kotlin stdlib source map\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eLibraries\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-71848\"\u003e\u003ccode\u003eKT-71848\u003c/code\u003e\u003c/a\u003e Kotlinx.metadata: Add \u003ccode\u003eCompilerPluginData\u003c/code\u003e into Km API\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNative. C and ObjC Import\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85399\"\u003e\u003ccode\u003eKT-85399\u003c/code\u003e\u003c/a\u003e Kotlin/Native: TypeCastException when casting ObjC Protocol MetaClass with genericSafeCasts enabled\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85508\"\u003e\u003ccode\u003eKT-85508\u003c/code\u003e\u003c/a\u003e K/N: TypeCastException when using nw_parameters_create_secure_tcp block parameter on 2.3.20\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84729\"\u003e\u003ccode\u003eKT-84729\u003c/code\u003e\u003c/a\u003e Update Gradle plugin-publish version to enable configuration cache badge on Gradle plugins portal\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Compiler plugins\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85257\"\u003e\u003ccode\u003eKT-85257\u003c/code\u003e\u003c/a\u003e AGP/Compose: MergeMappingFileTask clears R8 artifacts due to \u003ccode\u003e@OutputDirectory\u003c/code\u003e annotation on AGP 9.1+\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85105\"\u003e\u003ccode\u003eKT-85105\u003c/code\u003e\u003c/a\u003e Scripts: JVM backend internal error (IR lowering) when scratch file contains anonymous object\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85103\"\u003e\u003ccode\u003eKT-85103\u003c/code\u003e\u003c/a\u003e Exception while generating code when explain destructuring decls\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84842\"\u003e\u003ccode\u003eKT-84842\u003c/code\u003e\u003c/a\u003e scriptCompilationClasspathFromContext behavior changed from 2.3.10 to 2.3.20\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85029\"\u003e\u003ccode\u003eKT-85029\u003c/code\u003e\u003c/a\u003e Kotlin Scripting: ScriptDiagnostic reports \u0026quot;at null\u0026quot; instead of error location\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Statistics (FUS)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85628\"\u003e\u003ccode\u003eKT-85628\u003c/code\u003e\u003c/a\u003e KGP: composite build FUS metrics fail on access of 'configurationTimeMetrics'\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/fea1ad8c18995b80d1ca0e3917056104613d23db\"\u003e\u003ccode\u003efea1ad8\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.3.21-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/09c341e858b8f70d92955fc6b67d6a04962760b4\"\u003e\u003ccode\u003e09c341e\u003c/code\u003e\u003c/a\u003e disable swift export execution tests in order to update macos\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/67a08681cdd53b318217e6f35d835e0ab3b2e31c\"\u003e\u003ccode\u003e67a0868\u003c/code\u003e\u003c/a\u003e Avoid accessing KotlinNativeLink taskProvider when task was not executed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/f89e5dbc1867714116e17be1066d6c68e30cc2d4\"\u003e\u003ccode\u003ef89e5db\u003c/code\u003e\u003c/a\u003e [K/N] Disable TSAN in runtime tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/45d6c859c027c4e82b14b4861e36bc125600e2b0\"\u003e\u003ccode\u003e45d6c85\u003c/code\u003e\u003c/a\u003e [K/N] Don't generate generic safe casts for Objective-C types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9261a6f0790b7504e0223e9e0a0dd242fe0cc3f7\"\u003e\u003ccode\u003e9261a6f\u003c/code\u003e\u003c/a\u003e [K/N][tests] Add a reproducer for KT-85508\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/c9ab9db37a191f2eb1ce0f5b7ff502ca9d4b3a0d\"\u003e\u003ccode\u003ec9ab9db\u003c/code\u003e\u003c/a\u003e [K/N][tests] Add a reproducer for KT-85399\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/502e84484e520fbe1a93958be8da97e06a04d7ed\"\u003e\u003ccode\u003e502e844\u003c/code\u003e\u003c/a\u003e Explain: fix for destructuring declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0c26485d83f532aa8afbb868895061b7132fd7c8\"\u003e\u003ccode\u003e0c26485\u003c/code\u003e\u003c/a\u003e Explain: fix for object literals\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/68a9e3f99fcd59c5440970f5f34aff09ce462a69\"\u003e\u003ccode\u003e68a9e3f\u003c/code\u003e\u003c/a\u003e [minor] fix testdata name in explain test\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.0.21...v2.3.21\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.plugin.compose` from 2.0.21 to 2.3.21\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.3.21\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84610\"\u003e\u003ccode\u003eKT-84610\u003c/code\u003e\u003c/a\u003e [Wasm...\n\n_Description has been truncated_","html_url":"https://github.com/Yakup24/Elaro/pull/16","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yakup24%2FElaro/issues/16","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/16/packages"}],"issue_packages":[{"old_version":"3.6.1","new_version":"3.7.0","update_type":"minor","path":"/kaasu-android","pr_created_at":"2026-09-13T13:26:18.000Z","version_change":"3.6.1 → 3.7.0","issue":{"uuid":"5440319369","node_id":"PR_kwDOUZA9f88AAAABDVjxQg","number":5,"state":"closed","title":"chore: bump the androidx group in /kaasu-android with 11 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-09-13T14:13:13.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-13T13:26:18.000Z","updated_at":"2026-09-13T14:13:15.000Z","time_to_close":2815,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore: bump","group_name":"androidx","update_count":11,"packages":[{"name":"androidx.core:core-ktx","old_version":"1.15.0","new_version":"1.19.0"},{"name":"androidx.navigation:navigation-compose","old_version":"2.8.5","new_version":"2.10.1"},{"name":"androidx.hilt:hilt-navigation-compose","old_version":"1.2.0","new_version":"1.4.0"},{"name":"androidx.room:room-runtime","old_version":"2.7.0","new_version":"2.8.5"},{"name":"androidx.room:room-ktx","old_version":"2.7.0","new_version":"2.8.5"},{"name":"androidx.room:room-compiler","old_version":"2.7.0","new_version":"2.8.5"},{"name":"androidx.fragment:fragment-ktx","old_version":"1.8.5","new_version":"1.9.0"},{"name":"androidx.hilt:hilt-work","old_version":"1.2.0","new_version":"1.4.0"},{"name":"androidx.hilt:hilt-compiler","old_version":"1.2.0","new_version":"1.4.0"},{"name":"androidx.test.ext:junit","old_version":"1.2.1","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.6.1","new_version":"3.7.0"}],"path":"/kaasu-android","ecosystem":"maven"},"body":"Bumps the androidx group in /kaasu-android with 11 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| androidx.core:core-ktx | `1.15.0` | `1.19.0` |\n| androidx.navigation:navigation-compose | `2.8.5` | `2.10.1` |\n| androidx.hilt:hilt-navigation-compose | `1.2.0` | `1.4.0` |\n| androidx.room:room-runtime | `2.7.0` | `2.8.5` |\n| androidx.room:room-ktx | `2.7.0` | `2.8.5` |\n| androidx.room:room-compiler | `2.7.0` | `2.8.5` |\n| androidx.fragment:fragment-ktx | `1.8.5` | `1.9.0` |\n| androidx.hilt:hilt-work | `1.2.0` | `1.4.0` |\n| androidx.hilt:hilt-compiler | `1.2.0` | `1.4.0` |\n| androidx.test.ext:junit | `1.2.1` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.6.1` | `3.7.0` |\n\nUpdates `androidx.core:core-ktx` from 1.15.0 to 1.19.0\n\nUpdates `androidx.navigation:navigation-compose` from 2.8.5 to 2.10.1\n\nUpdates `androidx.hilt:hilt-navigation-compose` from 1.2.0 to 1.4.0\n\nUpdates `androidx.room:room-runtime` from 2.7.0 to 2.8.5\n\nUpdates `androidx.room:room-ktx` from 2.7.0 to 2.8.5\n\nUpdates `androidx.room:room-compiler` from 2.7.0 to 2.8.5\n\nUpdates `androidx.room:room-ktx` from 2.7.0 to 2.8.5\n\nUpdates `androidx.room:room-compiler` from 2.7.0 to 2.8.5\n\nUpdates `androidx.fragment:fragment-ktx` from 1.8.5 to 1.9.0\n\nUpdates `androidx.hilt:hilt-work` from 1.2.0 to 1.4.0\n\nUpdates `androidx.hilt:hilt-compiler` from 1.2.0 to 1.4.0\n\nUpdates `androidx.hilt:hilt-compiler` from 1.2.0 to 1.4.0\n\nUpdates `androidx.test.ext:junit` from 1.2.1 to 1.3.0\n\nUpdates `androidx.test.espresso:espresso-core` from 3.6.1 to 3.7.0\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/abdulhakeem19/kaasu/pull/5","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/abdulhakeem19%2Fkaasu/issues/5","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/5/packages"}},{"old_version":"3.6.1","new_version":"3.7.0","update_type":"minor","path":"/android","pr_created_at":"2026-09-13T08:49:34.000Z","version_change":"3.6.1 → 3.7.0","issue":{"uuid":"5439146765","node_id":"PR_kwDORIzpkc8AAAABDUrjOg","number":308,"state":"open","title":"Android: Bump the android-dependencies group in /android with 20 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-13T08:49:34.000Z","updated_at":"2026-09-13T09:11:21.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Android: Bump","group_name":"android-dependencies","update_count":20,"packages":[{"name":"gradle-wrapper","old_version":"9.4.1","new_version":"9.7.1","repository_url":"https://github.com/gradle/gradle"},{"name":"com.google.code.gson:gson","old_version":"2.11.0","new_version":"2.14.0","repository_url":"https://github.com/google/gson"},{"name":"androidx.core:core-ktx","old_version":"1.13.1","new_version":"1.19.0"},{"name":"androidx.test.ext:junit","old_version":"1.2.1","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.6.1","new_version":"3.7.0"},{"name":"androidx.compose:compose-bom","old_version":"2026.02.01","new_version":"2026.09.00"},{"name":"androidx.navigation:navigation-compose","old_version":"2.8.4","new_version":"2.10.1"},{"name":"androidx.security:security-crypto","old_version":"1.1.0-alpha06","new_version":"1.1.0"},{"name":"com.squareup.okhttp3:okhttp","old_version":"4.12.0","new_version":"5.5.0","repository_url":"https://github.com/lysine-dev/okhttp"},{"name":"org.jetbrains.kotlinx:kotlinx-serialization-json","old_version":"1.7.3","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.serialization"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-android","old_version":"1.9.0","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-play-services","old_version":"1.9.0","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"com.google.android.gms:play-services-auth","old_version":"21.4.0","new_version":"22.0.0"},{"name":"com.patrykandpatrick.vico:compose-m3","old_version":"2.0.2","new_version":"3.3.1","repository_url":"https://github.com/patrykandpatrick/vico"},{"name":"androidx.core:core-splashscreen","old_version":"1.0.1","new_version":"1.2.0"},{"name":"androidx.browser:browser","old_version":"1.8.0","new_version":"1.10.0"},{"name":"com.google.ai.edge.litertlm:litertlm-android","old_version":"0.16.0","new_version":"0.17.0","repository_url":"https://github.com/google-ai-edge/LiteRT-LM"},{"name":"com.android.application","old_version":"9.2.0","new_version":"9.4.0"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.2.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.2.10","new_version":"2.4.20","repository_url":"https://github.com/JetBrains/kotlin"}],"path":"/android","ecosystem":"maven"},"body":"Bumps the android-dependencies group in /android with 20 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `9.4.1` | `9.7.1` |\n| [com.google.code.gson:gson](https://github.com/google/gson) | `2.11.0` | `2.14.0` |\n| androidx.core:core-ktx | `1.13.1` | `1.19.0` |\n| androidx.test.ext:junit | `1.2.1` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.6.1` | `3.7.0` |\n| androidx.compose:compose-bom | `2026.02.01` | `2026.09.00` |\n| androidx.navigation:navigation-compose | `2.8.4` | `2.10.1` |\n| androidx.security:security-crypto | `1.1.0-alpha06` | `1.1.0` |\n| [com.squareup.okhttp3:okhttp](https://github.com/lysine-dev/okhttp) | `4.12.0` | `5.5.0` |\n| [org.jetbrains.kotlinx:kotlinx-serialization-json](https://github.com/Kotlin/kotlinx.serialization) | `1.7.3` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-android](https://github.com/Kotlin/kotlinx.coroutines) | `1.9.0` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-play-services](https://github.com/Kotlin/kotlinx.coroutines) | `1.9.0` | `1.11.0` |\n| com.google.android.gms:play-services-auth | `21.4.0` | `22.0.0` |\n| [com.patrykandpatrick.vico:compose-m3](https://github.com/patrykandpatrick/vico) | `2.0.2` | `3.3.1` |\n| androidx.core:core-splashscreen | `1.0.1` | `1.2.0` |\n| androidx.browser:browser | `1.8.0` | `1.10.0` |\n| [com.google.ai.edge.litertlm:litertlm-android](https://github.com/google-ai-edge/LiteRT-LM) | `0.16.0` | `0.17.0` |\n| com.android.application | `9.2.0` | `9.4.0` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.2.10` | `2.4.20` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.2.10` | `2.4.20` |\n\nUpdates `gradle-wrapper` from 9.4.1 to 9.7.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gradle/gradle/releases\"\u003egradle-wrapper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.7.1\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.7.1.\u003c/p\u003e\n\u003cp\u003eThis is a patch release for 9.7.0. We recommend using 9.7.1 instead of 9.7.0.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of 9.7.0 release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIsolated Projects graduates to incubating\u003c/li\u003e\n\u003cli\u003eBroader Configuration Cache compatibility\u003c/li\u003e\n\u003cli\u003eResilient Sync helps you fix broken builds\u003c/li\u003e\n\u003cli\u003eMore source locations in problem reports\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gradle.org/9.7.1/release-notes.html\"\u003eRead the Release Notes\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe would like to thank the following community members for their contributions to this release of Gradle:\n\u003ca href=\"https://github.com/aSemy\"\u003eAdam\u003c/a\u003e,\n\u003ca href=\"https://github.com/Gautam-aman\"\u003eAman Gautam\u003c/a\u003e,\n\u003ca href=\"https://github.com/YukiCodepth\"\u003eAman Kumar\u003c/a\u003e,\n\u003ca href=\"https://github.com/adubrouski\"\u003eAnton Dubrouski\u003c/a\u003e,\n\u003ca href=\"https://github.com/liutikas\"\u003eAurimas\u003c/a\u003e,\n\u003ca href=\"https://github.com/gbhavya07\"\u003egbhavya07\u003c/a\u003e,\n\u003ca href=\"https://github.com/joshfriend\"\u003eJosh Friend\u003c/a\u003e,\n\u003ca href=\"https://github.com/nicklauslittle-gov\"\u003enicklauslittle-gov\u003c/a\u003e,\n\u003ca href=\"https://github.com/psoni674\"\u003ePragati\u003c/a\u003e,\n\u003ca href=\"https://github.com/Project516\"\u003eproject516\u003c/a\u003e,\n\u003ca href=\"https://github.com/Uomocapra\"\u003eQin Mi\u003c/a\u003e,\n\u003ca href=\"https://github.com/rkdfx\"\u003eRavi\u003c/a\u003e,\n\u003ca href=\"https://github.com/sk-reddy17\"\u003esk-reddy17\u003c/a\u003e,\n\u003ca href=\"https://github.com/Suvrat1629\"\u003eSuvrat Acharya\u003c/a\u003e,\n\u003ca href=\"https://github.com/ShreckYe\"\u003eYongshun Ye\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eUpgrade instructions\u003c/h2\u003e\n\u003cp\u003eSwitch your build to use Gradle 9.7.1 by updating your wrapper:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./gradlew :wrapper --gradle-version=9.7.1 \u0026amp;\u0026amp; ./gradlew :wrapper\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the Gradle \u003ca href=\"https://docs.gradle.org/9.7.1/userguide/upgrading_version_9.html\"\u003e9.x upgrade guide\u003c/a\u003e to learn about deprecations, breaking changes and other considerations when upgrading.\u003c/p\u003e\n\u003cp\u003eFor Java, Groovy, Kotlin and Android compatibility, see the \u003ca href=\"https://docs.gradle.org/9.7.1/userguide/compatibility.html\"\u003efull compatibility notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReporting problems\u003c/h2\u003e\n\u003cp\u003eIf you find a problem with this release, please file a bug on \u003ca href=\"https://github.com/gradle/gradle/issues\"\u003eGitHub Issues\u003c/a\u003e adhering to our issue guidelines.\nIf you're not sure you're encountering a bug, please use the \u003ca href=\"https://discuss.gradle.org/c/help-discuss\"\u003eforum\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe hope you will build happiness with Gradle, and we look forward to your feedback via \u003ca href=\"https://twitter.com/gradle\"\u003eTwitter\u003c/a\u003e or on \u003ca href=\"https://github.com/gradle\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e9.7.0\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.7.0.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/92f0512e7f06d84621afba191f75e265363890cf\"\u003e\u003ccode\u003e92f0512\u003c/code\u003e\u003c/a\u003e update fixed issues for 9.7.1 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38892\"\u003e#38892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/820ee75a99a179bbffa41bcedc6477b685fabb9f\"\u003e\u003ccode\u003e820ee75\u003c/code\u003e\u003c/a\u003e update fixed issues for 9.7.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/82c23f9bd2a89b4cc644e1f90a28a8668feb3dee\"\u003e\u003ccode\u003e82c23f9\u003c/code\u003e\u003c/a\u003e Fix annotation parameter ordering problem in KTS (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38878\"\u003e#38878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/ef11a7268fe8cc8d6ab849ec911aa11220180553\"\u003e\u003ccode\u003eef11a72\u003c/code\u003e\u003c/a\u003e Fix annotation parameter ordering issue\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/bb0d8a974a71b1003efea41e4046e98855cd5ff8\"\u003e\u003ccode\u003ebb0d8a9\u003c/code\u003e\u003c/a\u003e Make relevant tests polyglot (run for multiple DSLs)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/336e129d7f95c03486acafc97abf59734acfed48\"\u003e\u003ccode\u003e336e129\u003c/code\u003e\u003c/a\u003e Update signing configuration (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38874\"\u003e#38874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/4bdf0da2dad9884d089a6062a45ea7183e7d735d\"\u003e\u003ccode\u003e4bdf0da\u003c/code\u003e\u003c/a\u003e Update signing configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/cd9b92c1b82856248cf1dc58b50378238bec7b52\"\u003e\u003ccode\u003ecd9b92c\u003c/code\u003e\u003c/a\u003e List issues resolved in 9.7.1 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38839\"\u003e#38839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/5f4e381964897ad8d6b99e5a7c77f26dba3259fb\"\u003e\u003ccode\u003e5f4e381\u003c/code\u003e\u003c/a\u003e List issues resolved in 9.7.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/1e08ab551367aeb5fb48b26e72807e1d2b27c939\"\u003e\u003ccode\u003e1e08ab5\u003c/code\u003e\u003c/a\u003e Keep type-use annotations in extracted ABI classes (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38810\"\u003e#38810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gradle/gradle/compare/v9.4.1...v9.7.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.code.gson:gson` from 2.11.0 to 2.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/gson/releases\"\u003ecom.google.code.gson:gson's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eGson 2.14.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type adapters for \u003ccode\u003ejava.time\u003c/code\u003e classes by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2948\"\u003egoogle/gson#2948\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWhen the \u003ccode\u003ejava.time\u003c/code\u003e API is available, Gson automatically can read and write instances of classes like \u003ccode\u003eInstant\u003c/code\u003e and \u003ccode\u003eDuration\u003c/code\u003e. The format it uses essentially freezes the JSON representation that \u003ccode\u003eReflectiveTypeAdapterFactory\u003c/code\u003e established by default, based on the private fields of \u003ccode\u003ejava.time\u003c/code\u003e classes. That's not a great representation, but it is understandable. Changing it to anything else would break compatibility with systems that are expecting the current format.\u003c/p\u003e\n\u003cp\u003eWith this change, Gson no longer tries to access private fields of these classes using reflection. So it is no longer necessary to run with \u003ccode\u003e--add-opens\u003c/code\u003e for these classes on recent JDKs.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003ecom.google.gson.graph\u003c/code\u003e by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2990\"\u003egoogle/gson#2990\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis package was not part of any released artifact and depended on Gson internals in potentially problematic ways.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eValidate that strings being parsed as integers consist of ASCII characters by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2995\"\u003egoogle/gson#2995\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003ePreviously, strings could contain non-ASCII Unicode digits and still be parsed as integers. That's inconsistent with how JSON numbers are treated.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix duplicate key detection when first value is null by \u003ca href=\"https://github.com/andrewstellman\"\u003e\u003ccode\u003e@​andrewstellman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/3006\"\u003egoogle/gson#3006\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis could potentially break code that was relying on the incorrect behaviour. For example, this JSON string was previously accepted but will no longer be: \u003ccode\u003e{\u0026quot;foo\u0026quot;: null, \u0026quot;foo\u0026quot;: bar}\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003eSerializable\u003c/code\u003e from internal \u003ccode\u003eType\u003c/code\u003e implementation classes. by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/3011\"\u003egoogle/gson#3011\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe nested classes \u003ccode\u003eParameterizedTypeImpl\u003c/code\u003e, \u003ccode\u003eGenericArrayTypeImpl\u003c/code\u003e, and \u003ccode\u003eWildcardTypeImpl\u003c/code\u003e in \u003ccode\u003eGsonTypes\u003c/code\u003e are implementations of the corresponding types (without \u003ccode\u003eImpl\u003c/code\u003e) in \u003ccode\u003ejava.lang.reflect\u003c/code\u003e. For some reason, they were serializable, even though the \u003ccode\u003ejava.lang.reflect\u003c/code\u003e implementations are not. Having unnecessarily serializable classes could \u003cem\u003econceivably\u003c/em\u003e have been a security problem if they were part of a larger exploit using serialization. (We do not consider this a likely scenario and do not suggest that you need to update Gson just to get this change.)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eLegacyProtoTypeAdapterFactory\u003c/code\u003e. by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/3014\"\u003egoogle/gson#3014\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is not part of any released artifact, but may be of use when trying to fix code that is currently accessing the internals of protobuf classes via reflection.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake AppendableWriter do flush and close if delegation object supports by \u003ca href=\"https://github.com/MukjepScarlet\"\u003e\u003ccode\u003e@​MukjepScarlet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2925\"\u003egoogle/gson#2925\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther less visible changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd default capacity to EnumTypeAdapter maps by \u003ca href=\"https://github.com/MukjepScarlet\"\u003e\u003ccode\u003e@​MukjepScarlet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2959\"\u003egoogle/gson#2959\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: move derived adapters from Gson to TypeAdapters by \u003ca href=\"https://github.com/MukjepScarlet\"\u003e\u003ccode\u003e@​MukjepScarlet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2951\"\u003egoogle/gson#2951\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOptimize \u003ccode\u003enew Gson()\u003c/code\u003e by \u003ca href=\"https://github.com/MukjepScarlet\"\u003e\u003ccode\u003e@​MukjepScarlet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2864\"\u003egoogle/gson#2864\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ThirdGoddess\"\u003e\u003ccode\u003e@​ThirdGoddess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/google/gson/pull/2944\"\u003egoogle/gson#2944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lmj798\"\u003e\u003ccode\u003e@​lmj798\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/google/gson/pull/2988\"\u003egoogle/gson#2988\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Eng-YasminKotb\"\u003e\u003ccode\u003e@​Eng-YasminKotb\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/google/gson/pull/3005\"\u003egoogle/gson#3005\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/andrewstellman\"\u003e\u003ccode\u003e@​andrewstellman\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/google/gson/pull/3006\"\u003egoogle/gson#3006\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/gson/compare/gson-parent-2.13.2...gson-parent-2.14.0\"\u003ehttps://github.com/google/gson/compare/gson-parent-2.13.2...gson-parent-2.14.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eGson 2.13.2\u003c/h2\u003e\n\u003cp\u003eThe main changes in this release are just newer dependencies.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/3ff35d6269894901ab8006258395aafc4b9765cd\"\u003e\u003ccode\u003e3ff35d6\u003c/code\u003e\u003c/a\u003e [maven-release-plugin] prepare release gson-parent-2.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/a3024fde2a5c12b9a9a0b6b914ae4899aa574d81\"\u003e\u003ccode\u003ea3024fd\u003c/code\u003e\u003c/a\u003e Bump the maven group with 13 updates (\u003ca href=\"https://redirect.github.com/google/gson/issues/3002\"\u003e#3002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/5689ffe44952ca6ed44c595886b9043286311b23\"\u003e\u003ccode\u003e5689ffe\u003c/code\u003e\u003c/a\u003e Bump the github-actions group across 1 directory with 3 updates (\u003ca href=\"https://redirect.github.com/google/gson/issues/3018\"\u003e#3018\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/48db33cbf93af6b2f5b117dfdfd826de47f7229c\"\u003e\u003ccode\u003e48db33c\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eLegacyProtoTypeAdapterFactory\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/google/gson/issues/3014\"\u003e#3014\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/53d703ee76ca3e951fa4a727307c1f28dbcaf3aa\"\u003e\u003ccode\u003e53d703e\u003c/code\u003e\u003c/a\u003e Update outdated comment regarding serializable types (\u003ca href=\"https://redirect.github.com/google/gson/issues/3012\"\u003e#3012\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/0189b727761f31596d1a27b7c60b42478dc9f331\"\u003e\u003ccode\u003e0189b72\u003c/code\u003e\u003c/a\u003e Remove \u003ccode\u003eSerializable\u003c/code\u003e from internal \u003ccode\u003eType\u003c/code\u003e implementation classes. (\u003ca href=\"https://redirect.github.com/google/gson/issues/3011\"\u003e#3011\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/f4d371d29c04066dbe7fdb31f642831f9c7f40cd\"\u003e\u003ccode\u003ef4d371d\u003c/code\u003e\u003c/a\u003e Fix duplicate key detection when first value is null (\u003ca href=\"https://redirect.github.com/google/gson/issues/3006\"\u003e#3006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/27d9ba1eeeeb156540cf5397504a4f9f256e911f\"\u003e\u003ccode\u003e27d9ba1\u003c/code\u003e\u003c/a\u003e Fix typo in README (JPMS dependencies section) (\u003ca href=\"https://redirect.github.com/google/gson/issues/3005\"\u003e#3005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/1fa9b7a0a994b006b3be00e2df9de778e71e6807\"\u003e\u003ccode\u003e1fa9b7a\u003c/code\u003e\u003c/a\u003e Validate that strings being parsed as integers consist of ASCII characters (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/b7d59549188867deb42e46073fb38735a5beda1c\"\u003e\u003ccode\u003eb7d5954\u003c/code\u003e\u003c/a\u003e Add iterator fail-fast tests for LinkedTreeMap.clear() (\u003ca href=\"https://redirect.github.com/google/gson/issues/2992\"\u003e#2992\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/gson/compare/gson-parent-2.11.0...gson-parent-2.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.core:core-ktx` from 1.13.1 to 1.19.0\n\nUpdates `androidx.test.ext:junit` from 1.2.1 to 1.3.0\n\nUpdates `androidx.test.espresso:espresso-core` from 3.6.1 to 3.7.0\n\nUpdates `androidx.compose:compose-bom` from 2026.02.01 to 2026.09.00\n\nUpdates `androidx.navigation:navigation-compose` from 2.8.4 to 2.10.1\n\nUpdates `androidx.security:security-crypto` from 1.1.0-alpha06 to 1.1.0\n\nUpdates `com.squareup.okhttp3:okhttp` from 4.12.0 to 5.5.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/lysine-dev/okhttp/blob/main/CHANGELOG.md\"\u003ecom.squareup.okhttp3:okhttp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 5.5.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-08-16\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eThis release introduces \u003cstrong\u003eopt-in\u003c/strong\u003e support for [Encrypted Client Hello (ECH)]. This new feature\nimproves user privacy by encrypting domain names in transit. With regular TLS, your coffee shop’s\nWi-Fi router can see that you’re visiting \u003cem\u003ewikipedia.com\u003c/em\u003e, but it cannot see which page you’re\nlooking at. With ECH, the router observes only the IP address. This additional privacy is most\neffective on sites hosted by big CDNs because the IP address doesn’t imply a particular website.\u003c/p\u003e\n\u003cp\u003eThis requires ECH support in the platform’s TLS stack. Today this is only Android 17 (API 37,\nreleased June 2026). When other TLS stacks add ECH support, we'll integrate them.\u003c/p\u003e\n\u003cp\u003eECH took a lot of work to implement because the encryption keys are published over DNS in the\n[HTTPS resource record], and we needed to write new code to fetch these records. This release\nincludes a major update to OkHttp’s DNS API: it now supports multiple resource record types (not\njust IP addresses!), asynchronous streaming results, and in-memory caching.\u003c/p\u003e\n\u003cp\u003eTo opt in, you can use \u003ccode\u003eDnsOverHttps\u003c/code\u003e:\u003c/p\u003e\n\u003cpre lang=\"kotlin\"\u003e\u003ccode\u003e// DnsOverHttps itself uses OkHttpClient. Build both clients upon the\n// same bootstrap client so they share a connection pool and dispatcher.\nval bootstrapClient = OkHttpClient()\n\u003cp\u003e// This sample uses Cloudflare's 1.1.1.1 DnsOverHttps service.\nval client = bootstrapClient.newBuilder()\n.dns(DnsOverHttps.Builder()\n.client(bootstrapClient)\n.url(\u0026quot;\u003ca href=\"https://1.1.1.1/dns-query\u0026amp;quot;.toHttpUrl()\"\u003ehttps://1.1.1.1/dns-query\u0026amp;quot;.toHttpUrl()\u003c/a\u003e)\n.build())\n.build()\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eYou could also opt in with our new \u003ccode\u003eAndroidDns\u003c/code\u003e API. Unfortunately, the privacy benefits of ECH are\nthwarted because its DNS queries are not encrypted by default.\u003c/p\u003e\n\u003cpre lang=\"kotlin\"\u003e\u003ccode\u003e// AndroidDns fetches the HTTPS DNS resource records necessary for ECH.\nval client = OkHttpClient.Builder()\n  .dns(AndroidDns())\n  .build()\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003eNew: OkHttp artifacts are now signed with our [new signing key]. This project and three sibling\nprojects ([Retrofit], [Okio], and [SQLDelight]) recently joined [the Commonhaus Foundation].\u003c/li\u003e\n\u003cli\u003eFix: MockWebServer’s \u003ccode\u003e@StartStop\u003c/code\u003e annotation now supports \u003ccode\u003e@Nested\u003c/code\u003e JUnit 5 tests.\u003c/li\u003e\n\u003cli\u003eFix: Our default TLS hostname verifier now reject hosts that fail IP canonicalization.\u003c/li\u003e\n\u003cli\u003eFix: Closing a multipart part's sink no longer closes the entire request body.\u003c/li\u003e\n\u003cli\u003eFix: Flush HTTP/1 request bodies before detaching the timeout. We had a bug where timeouts\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/a94bdf152084d11acecd44dcd09ffef203f4f0aa\"\u003e\u003ccode\u003ea94bdf1\u003c/code\u003e\u003c/a\u003e Prepare for release 5.5.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/ecc3b05adfe6b2607b8ec251562c2cccf7c1923a\"\u003e\u003ccode\u003eecc3b05\u003c/code\u003e\u003c/a\u003e Use a fixed size for DoH request body (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9687\"\u003e#9687\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/9926082660dfa6f1cc848c6f465cf5ccb998e415\"\u003e\u003ccode\u003e9926082\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Use a fixed size for DoH request body\u0026quot; (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9686\"\u003e#9686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/0070c2e7b4c162ee03abf1c88fd94083e94697f4\"\u003e\u003ccode\u003e0070c2e\u003c/code\u003e\u003c/a\u003e Use a fixed size for DoH request body\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/15764539c69842dad607462f102a2507223dbfe7\"\u003e\u003ccode\u003e1576453\u003c/code\u003e\u003c/a\u003e Order ServiceMetadata records per the spec (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9683\"\u003e#9683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/fb582e976a9a82d691342a4d57b3c72208ce416c\"\u003e\u003ccode\u003efb582e9\u003c/code\u003e\u003c/a\u003e Flip wiring of Dns.SYSTEM (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9682\"\u003e#9682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/4e884abb1a207c321acffb070c476acb4b89fa3f\"\u003e\u003ccode\u003e4e884ab\u003c/code\u003e\u003c/a\u003e retryOnConnectionFailure doesn't impact ECH retries (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9681\"\u003e#9681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/0433cee8131b63fa2c0634fa2f9b3a01f9a8b1f3\"\u003e\u003ccode\u003e0433cee\u003c/code\u003e\u003c/a\u003e Only one contributing.md doc (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9678\"\u003e#9678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/a2cf5aa9f8711dabe514871e9dc4a9336a0e403f\"\u003e\u003ccode\u003ea2cf5aa\u003c/code\u003e\u003c/a\u003e Don't recover after an ECH public_name fails to verify (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9680\"\u003e#9680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/5410de9760bce8719129c3d08eb19e5bace75f6e\"\u003e\u003ccode\u003e5410de9\u003c/code\u003e\u003c/a\u003e Test ECH + HTTP proxy (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9671\"\u003e#9671\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/lysine-dev/okhttp/compare/parent-4.12.0...parent-5.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlinx:kotlinx-serialization-json` from 1.7.3 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-serialization-json's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.20 and provides a new Json exceptions API and some bugfixes and improvements.\u003c/p\u003e\n\u003ch2\u003eExpose Json exceptions structure\u003c/h2\u003e\n\u003cp\u003eTo make working with exceptions easier and providing proper error codes in e.g., REST APIs,\nclasses \u003ccode\u003eJsonException\u003c/code\u003e, \u003ccode\u003eJsonDecodingException\u003c/code\u003e, and \u003ccode\u003eJsonEncodingException\u003c/code\u003e are now public.\nThey have relevant public properties, such as \u003ccode\u003eshortMessage\u003c/code\u003e, \u003ccode\u003epath\u003c/code\u003e, \u003ccode\u003eoffset\u003c/code\u003e, and others.\nThis API is currently experimental, and we're going to improve it further in the subsequent releases.\nSee the linked issues for the details: \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1930\"\u003e#1930\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1877\"\u003e#1877\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eAbility to hide user input from exception messages for security/privacy reasons.\u003c/h2\u003e\n\u003cp\u003eHistorically, exception messages in kotlinx.serialization often included the input Json itself for debuggability reason.\nSuch behavior may pose additional challenges for logging, analytics, and other systems, since\na system is not always allowed to store user data due to privacy/security reasons, which imposes additional sanitation logic.\nTo address this issue, a new property \u003ccode\u003eexceptionsWithDebugInfo\u003c/code\u003e is added to \u003ccode\u003eJsonConfiguration\u003c/code\u003e.\nDisable it to hide user input from exception messages.\nIMPORTANT: This behavior will be enabled by default when this property becomes stable.\nSee \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2590\"\u003e#2590\u003c/a\u003e for more details.\u003c/p\u003e\n\u003ch2\u003eBugfixes and improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCBOR: Relax value range check when decoding numbers (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse a specialized writeDecimalLong method for IO stream integrations in Json (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3152\"\u003e#3152\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.0\u003c/h2\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.0 and contains all of the changes from 1.10.0-RC.\nThe only additional change is a fix for ProtoBuf packing of Kotlin unsigned types (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3079\"\u003e#3079\u003c/a\u003e).\nBig thanks to \u003ca href=\"https://github.com/KosmX\"\u003eKosmX\u003c/a\u003e for contributing the fix.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eFor your convenience, the changelog for 1.10.0-RC is duplicated below:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eStabilization of APIs\u003c/h2\u003e\n\u003cp\u003ekotlinx-serialization 1.10 and subsequent releases will be focused on stabilization of existing APIs.\nThe following APIs and configuration options are no longer experimental because they're widely used without any known major issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eJson\u003c/code\u003e configuration options: \u003ccode\u003edecodeEnumsCaseInsensitive\u003c/code\u003e, \u003ccode\u003eallowTrailingComma\u003c/code\u003e, \u003ccode\u003eallowComments\u003c/code\u003e, and \u003ccode\u003eprettyPrintIndent\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3100\"\u003e#3100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@EncodeDefault\u003c/code\u003e annotation and its modes. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3106\"\u003e#3106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonUnquotedLiteral\u003c/code\u003e constructor function (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2900\"\u003e#2900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonPrimitive\u003c/code\u003e constructor function overloads that accept unsigned types. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJSON DSL functions on \u003ccode\u003eJsonElement\u003c/code\u003e with \u003ccode\u003eNothing?\u003c/code\u003e overloads. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eReadiness for return value checker\u003c/h2\u003e\n\u003cp\u003eKotlin 2.3.0 \u003ca href=\"https://kotlinlang.org/docs/whatsnew23.html#unused-return-value-checker\"\u003eintroduces a new feature\u003c/a\u003e aimed at helping you to catch bugs related to the accidentally ignored return value of the function.\nkotlinx-serialization 1.10.0-RC code is fully marked for this feature, meaning that you can get warnings for unused function calls like \u003ccode\u003eJson.encodeToString(...)\u003c/code\u003e. To get the warnings, the feature has to be enabled in your project as \u003ca href=\"https://kotlinlang.org/docs/unused-return-value-checker.html#configure-the-unused-return-value-checker\"\u003edescribed here\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ePolymorphism improvements\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md\"\u003eorg.jetbrains.kotlinx:kotlinx-serialization-json's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.11.0 / 2026-04-10\u003c/h1\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.20 and provides new Json exceptions API and some bugfixes and improvements.\u003c/p\u003e\n\u003ch2\u003eExpose Json exceptions structure\u003c/h2\u003e\n\u003cp\u003eTo make working with exceptions easier and providing proper error codes in e.g., REST APIs,\nclasses \u003ccode\u003eJsonException\u003c/code\u003e, \u003ccode\u003eJsonDecodingException\u003c/code\u003e, and \u003ccode\u003eJsonEncodingException\u003c/code\u003e are now public.\nThey have relevant public properties, such as \u003ccode\u003eshortMessage\u003c/code\u003e, \u003ccode\u003epath\u003c/code\u003e, \u003ccode\u003eoffset\u003c/code\u003e, and others.\nThis API is currently experimental, and we're going to improve it further in the subsequent releases.\nSee the linked issues for the details: \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1930\"\u003e#1930\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1877\"\u003e#1877\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eAbility to hide user input from exception messages for security/privacy reasons.\u003c/h2\u003e\n\u003cp\u003eHistorically, exception messages in kotlinx.serialization often included the input Json itself for debuggability reason.\nSuch behavior may pose additional challenges for logging, analytics, and other systems, since\na system is not always allowed to store user data due to privacy/security reasons, which imposes additional sanitation logic.\nTo address this issue, a new property \u003ccode\u003eexceptionsWithDebugInfo\u003c/code\u003e is added to \u003ccode\u003eJsonConfiguration\u003c/code\u003e.\nDisable it to hide user input from exception messages.\nIMPORTANT: This behavior will be enabled by default when this property becomes stable.\nSee \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2590\"\u003e#2590\u003c/a\u003e for more details.\u003c/p\u003e\n\u003ch2\u003eBugfixes and improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCBOR: Relax value range check when decoding numbers (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse a specialized writeDecimalLong method for IO stream integrations in Json (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3152\"\u003e#3152\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.10.0 / 2026-01-21\u003c/h1\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.0 and contains all of the changes from 1.10.0-RC.\nThe only additional change is a fix for ProtoBuf packing of Kotlin unsigned types (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3079\"\u003e#3079\u003c/a\u003e).\nBig thanks to \u003ca href=\"https://github.com/KosmX\"\u003eKosmX\u003c/a\u003e for contributing the fix.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eFor your convenience, the changelog for 1.10.0-RC is duplicated below:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eStabilization of APIs\u003c/h2\u003e\n\u003cp\u003ekotlinx-serialization 1.10 and subsequent releases will be focused on stabilization of existing APIs.\nThe following APIs and configuration options are no longer experimental because they're widely used without any known major issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eJson\u003c/code\u003e configuration options: \u003ccode\u003edecodeEnumsCaseInsensitive\u003c/code\u003e, \u003ccode\u003eallowTrailingComma\u003c/code\u003e, \u003ccode\u003eallowComments\u003c/code\u003e, and \u003ccode\u003eprettyPrintIndent\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3100\"\u003e#3100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@EncodeDefault\u003c/code\u003e annotation and its modes. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3106\"\u003e#3106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonUnquotedLiteral\u003c/code\u003e constructor function (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2900\"\u003e#2900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonPrimitive\u003c/code\u003e constructor function overloads that accept unsigned types. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJSON DSL functions on \u003ccode\u003eJsonElement\u003c/code\u003e with \u003ccode\u003eNothing?\u003c/code\u003e overloads. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eReadiness for return value checker\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/6956af2e6073347c7832c3c5b374fa3b5a345956\"\u003e\u003ccode\u003e6956af2\u003c/code\u003e\u003c/a\u003e Prepare 1.11 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/390d84c68a19cbf7fa453dec22a333648bde49b4\"\u003e\u003ccode\u003e390d84c\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/431fe2dc0a144300b33038820d24fc30302c8abc\"\u003e\u003ccode\u003e431fe2d\u003c/code\u003e\u003c/a\u003e Use local repo for publishing (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3171\"\u003e#3171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/05c12b60a6717b99053fb82e1f94d2f859727374\"\u003e\u003ccode\u003e05c12b6\u003c/code\u003e\u003c/a\u003e Add usage attribute to \u0026quot;testRepositories\u0026quot; configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/a4e1f082ef2e72caa139b474c05657de6015da20\"\u003e\u003ccode\u003ea4e1f08\u003c/code\u003e\u003c/a\u003e Bump Kover version to 0.9.8 release (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3174\"\u003e#3174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/304e858ccc7066854637d86ab80056f5f2bcc094\"\u003e\u003ccode\u003e304e858\u003c/code\u003e\u003c/a\u003e Expose Json exceptions structure (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/4a0338ef5093d765138151bc30282e909ca459e4\"\u003e\u003ccode\u003e4a0338e\u003c/code\u003e\u003c/a\u003e Included G Play SDK verification file for core-jvm (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3169\"\u003e#3169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/421f64c74f0ea6d4a3cdc8dd483505366e3f6c8f\"\u003e\u003ccode\u003e421f64c\u003c/code\u003e\u003c/a\u003e CBOR: Relax value range check when decoding numbers (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/85a4f126ec491c77e2b3686cc22c1bae27a20783\"\u003e\u003ccode\u003e85a4f12\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/bd38b0e49bce38d1a55576e89856bc63990167ed\"\u003e\u003ccode\u003ebd38b0e\u003c/code\u003e\u003c/a\u003e Remove dead code\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/compare/v1.7.3...v1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-android` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874\"\u003e\u003ccode\u003e8564f65\u003c/code\u003e\u003c/a\u003e Version 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c\"\u003e\u003ccode\u003ea4c6af9\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9\"\u003e\u003ccode\u003eef917b4\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd\"\u003e\u003ccode\u003e5ebc421\u003c/code\u003e\u003c/a\u003e Update the release procedure description (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80\"\u003e\u003ccode\u003e95f46a0\u003c/code\u003e\u003c/a\u003e Remove old maven repository settings (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672\"\u003e#4672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc\"\u003e\u003ccode\u003eb4f4f0a\u003c/code\u003e\u003c/a\u003e Fix package name of \u003ccode\u003eToMapCollectionSamplesTest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674\"\u003e#4674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/86738dca7dc9ac82249abc8206263fa0065ee631\"\u003e\u003ccode\u003e86738dc\u003c/code\u003e\u003c/a\u003e Added templates to the issue creation wizard (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/330fcc221fb583f0b119f34191f735a73b827378\"\u003e\u003ccode\u003e330fcc2\u003c/code\u003e\u003c/a\u003e Version 1.11.0-rc02\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/e31cef6e9f2d26794be7d75ecbf3033b6432d582\"\u003e\u003ccode\u003ee31cef6\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/dc6e9f61eaf3a67f4bf474a7987aedc3f16cef37\"\u003e\u003ccode\u003edc6e9f6\u003c/code\u003e\u003c/a\u003e Restore Promise-related functions on Wasm/JS as HIDDEN (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/compare/1.9.0...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-play-services` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-play-services's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-play-services's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874\"\u003e\u003ccode\u003e8564f65\u003c/code\u003e\u003c/a\u003e Version 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c\"\u003e\u003ccode\u003ea4c6af9\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9\"\u003e\u003ccode\u003eef917b4\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd\"\u003e\u003ccode\u003e5ebc421\u003c/code\u003e\u003c/a\u003e Update the release procedure description (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80\"\u003e\u003ccode\u003e95f46a0\u003c/code\u003e\u003c/a\u003e Remove old maven repository settings (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672\"\u003e#4672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc\"\u003e\u003ccode\u003eb4f4f0a\u003c/code\u003e\u003c/a\u003e Fix package name of \u003ccode\u003eToMapCollectionSamplesTest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674\"\u003e#4674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/86738dca7dc9ac82249abc8206263fa0065ee631\"\u003e\u003ccode\u003e86738dc\u003c/code\u003e\u003c/a\u003e Added templates to the issue creation wizard (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/330fcc221fb583f0b119f34191f735a73b827378\"\u003e\u003ccode\u003e330fcc2\u003c/code\u003e\u003c/a\u003e Version 1.11.0-rc02\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/e31cef6e9f2d26794be7d75ecbf3033b6432d582\"\u003e\u003ccode\u003ee31cef6\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/dc6e9f61eaf3a67f4bf474a7987aedc3f16cef37\"\u003e\u003ccode\u003edc6e9f6\u003c/code\u003e\u003c/a\u003e Restore Promise-related functions on Wasm/JS as HIDDEN (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/compare/1.9.0...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-play-services` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-play-services's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including co...\n\n_Description has been truncated_","html_url":"https://github.com/apoorvdarshan/fud-ai/pull/308","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/apoorvdarshan%2Ffud-ai/issues/308","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/308/packages"}},{"old_version":"3.5.1","new_version":"3.7.0","update_type":"minor","path":null,"pr_created_at":"2026-09-12T05:59:41.000Z","version_change":"3.5.1 → 3.7.0","issue":{"uuid":"5431577689","node_id":"PR_kwDOQ9ZvqM8AAAABDO33YQ","number":117,"state":"closed","title":"Bump the minor-and-patch group across 1 directory with 8 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-09-12T06:45:27.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-12T05:59:41.000Z","updated_at":"2026-09-12T06:45:37.000Z","time_to_close":2746,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"minor-and-patch","update_count":8,"packages":[{"name":"org.mockito:mockito-core","old_version":"5.5.0","new_version":"5.23.0","repository_url":"https://github.com/mockito/mockito"},{"name":"org.robolectric:robolectric","old_version":"4.11.1","new_version":"4.16.1","repository_url":"https://github.com/robolectric/robolectric"},{"name":"androidx.test:core","old_version":"1.5.0","new_version":"1.7.0"},{"name":"androidx.core:core-ktx","old_version":"1.10.1","new_version":"1.19.0"},{"name":"androidx.documentfile:documentfile","old_version":"1.0.1","new_version":"1.1.0"},{"name":"androidx.test.ext:junit","old_version":"1.1.5","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.5.1","new_version":"3.7.0"},{"name":"com.android.application","old_version":"9.3.1","new_version":"9.4.0"}],"path":null,"ecosystem":"maven"},"body":"Bumps the minor-and-patch group with 8 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [org.mockito:mockito-core](https://github.com/mockito/mockito) | `5.5.0` | `5.23.0` |\n| [org.robolectric:robolectric](https://github.com/robolectric/robolectric) | `4.11.1` | `4.16.1` |\n| androidx.test:core | `1.5.0` | `1.7.0` |\n| androidx.core:core-ktx | `1.10.1` | `1.19.0` |\n| androidx.documentfile:documentfile | `1.0.1` | `1.1.0` |\n| androidx.test.ext:junit | `1.1.5` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.5.1` | `3.7.0` |\n| com.android.application | `9.3.1` | `9.4.0` |\n\n\nUpdates `org.mockito:mockito-core` from 5.5.0 to 5.23.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mockito/mockito/releases\"\u003eorg.mockito:mockito-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.23.0\u003c/h2\u003e\n\u003ch2\u003eNOTE: Breaking change for Android\u003c/h2\u003e\n\u003cp\u003eThe \u003ccode\u003emockito-android\u003c/code\u003e artifact has a breaking change: tests now require a device or emulator based on API 28+ (Android P). This is to enable new support for mocking Kotlin classes. See \u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3788\"\u003e#3788\u003c/a\u003e for more details.\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003cem\u003eChangelog generated by \u003ca href=\"https://github.com/shipkit/shipkit-changelog\"\u003eShipkit Changelog Gradle Plugin\u003c/a\u003e\u003c/em\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch4\u003e5.23.0\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e2026-03-11 - \u003ca href=\"https://github.com/mockito/mockito/compare/v5.22.0...v5.23.0\"\u003e6 commit(s)\u003c/a\u003e by Brice Dutheil, Joshua Selbo, Philippe Kernevez\u003c/li\u003e\n\u003cli\u003eReplace mockito-android mock maker implementation with dexmaker-mockito-inline [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3792\"\u003e#3792\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3792\"\u003emockito/mockito#3792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix StackOverflowError with AbstractList after using mockSingleton [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3790\"\u003e#3790\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3790\"\u003emockito/mockito#3790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMark parameters of \u003ccode\u003eMockito.when\u003c/code\u003e \u003ccode\u003e@Nullable\u003c/code\u003e [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3503\"\u003e#3503\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3503\"\u003emockito/mockito#3503\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev5.22.0\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003cem\u003eChangelog generated by \u003ca href=\"https://github.com/shipkit/shipkit-changelog\"\u003eShipkit Changelog Gradle Plugin\u003c/a\u003e\u003c/em\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch4\u003e5.22.0\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e2026-02-27 - \u003ca href=\"https://github.com/mockito/mockito/compare/v5.21.0...v5.22.0\"\u003e6 commit(s)\u003c/a\u003e by Joshua Selbo, NiMv1, Rafael Winterhalter, dependabot[bot], eunbin son\u003c/li\u003e\n\u003cli\u003eAvoid mocking of internal static utilities [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3785\"\u003e#3785\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3785\"\u003emockito/mockito#3785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump graalvm/setup-graalvm from 1.4.4 to 1.4.5 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3780\"\u003e#3780\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3780\"\u003emockito/mockito#3780\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStatic mocking of UUID.class corrupted under JDK 25 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3778\"\u003e#3778\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3778\"\u003emockito/mockito#3778\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 5 to 6 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3774\"\u003e#3774\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3774\"\u003emockito/mockito#3774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: clarify RETURNS_MOCKS behavior with sealed abstract enums (Java 15+) [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3773\"\u003e#3773\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3773\"\u003emockito/mockito#3773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd tests for Sets utility class [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3771\"\u003e#3771\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3771\"\u003emockito/mockito#3771\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd core API to enable Kotlin singleton mocking [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3762\"\u003e#3762\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3762\"\u003emockito/mockito#3762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStubbing Kotlin \u003ccode\u003eobject\u003c/code\u003e singletons [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3652\"\u003e#3652\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3652\"\u003emockito/mockito#3652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorrect documentation for RETURNS_MOCKS [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3285\"\u003e#3285\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3285\"\u003emockito/mockito#3285\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev5.21.0\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003cem\u003eChangelog generated by \u003ca href=\"https://github.com/shipkit/shipkit-changelog\"\u003eShipkit Changelog Gradle Plugin\u003c/a\u003e\u003c/em\u003e\u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch4\u003e5.21.0\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e2025-12-09 - \u003ca href=\"https://github.com/mockito/mockito/compare/v5.20.0...v5.21.0\"\u003e17 commit(s)\u003c/a\u003e by Giulio Longfils, Joshua Selbo, Woongi9, Zylox, dependabot[bot]\u003c/li\u003e\n\u003cli\u003eBump graalvm/setup-graalvm from 1.4.3 to 1.4.4 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3768\"\u003e#3768\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3768\"\u003emockito/mockito#3768\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump graalvm/setup-graalvm from 1.4.2 to 1.4.3 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3767\"\u003e#3767\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3767\"\u003emockito/mockito#3767\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3765\"\u003e#3765\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3765\"\u003emockito/mockito#3765\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdds output of matchers to potential mismatch; Fixes \u003ca href=\"https://redirect.github.com/mockito/mockito/issues/2468\"\u003e#2468\u003c/a\u003e [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3760\"\u003e#3760\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3760\"\u003emockito/mockito#3760\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eForbid mocking WeakReference with inline mock maker [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3759\"\u003e#3759\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3759\"\u003emockito/mockito#3759\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStackOverflowError when mocking WeakReference [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3758\"\u003e#3758\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3758\"\u003emockito/mockito#3758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 to 5 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3756\"\u003e#3756\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3756\"\u003emockito/mockito#3756\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump graalvm/setup-graalvm from 1.4.1 to 1.4.2 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3755\"\u003e#3755\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3755\"\u003emockito/mockito#3755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport primitives in GenericArrayReturnType. [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3753\"\u003e#3753\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3753\"\u003emockito/mockito#3753\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClassNotFoundException when stubbing array of primitive type on Android [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3752\"\u003e#3752\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3752\"\u003emockito/mockito#3752\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump graalvm/setup-graalvm from 1.4.0 to 1.4.1 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3744\"\u003e#3744\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3744\"\u003emockito/mockito#3744\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump gradle/actions from 4 to 5 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3743\"\u003e#3743\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3743\"\u003emockito/mockito#3743\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump org.graalvm.buildtools.native from 0.11.0 to 0.11.1 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3738\"\u003e#3738\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3738\"\u003emockito/mockito#3738\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump com.diffplug.spotless:spotless-plugin-gradle from 7.2.1 to 8.0.0 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3735\"\u003e#3735\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3735\"\u003emockito/mockito#3735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump graalvm/setup-graalvm from 1.3.7 to 1.4.0 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3734\"\u003e#3734\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3734\"\u003emockito/mockito#3734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump org.assertj:assertj-core from 3.27.5 to 3.27.6 [(\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3733\"\u003e#3733\u003c/a\u003e)](\u003ca href=\"https://redirect.github.com/mockito/mockito/pull/3733\"\u003emockito/mockito#3733\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/a231205b240e7884a63bf0f63440012867a4da21\"\u003e\u003ccode\u003ea231205\u003c/code\u003e\u003c/a\u003e Fix StackOverflowError with AbstractList after using mockSingleton (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3790\"\u003e#3790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/f6a91a6a6138c776fa8b41ffb3fd078c64802044\"\u003e\u003ccode\u003ef6a91a6\u003c/code\u003e\u003c/a\u003e Replace mockito-android mock maker implementation with dexmaker-mockito-inlin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/aa2298a627ab2c0bce07f648e444477d8e2e05ba\"\u003e\u003ccode\u003eaa2298a\u003c/code\u003e\u003c/a\u003e fix: make spotless happy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/a6729d657e232ca64da81d9801d7b8f3be6fc49a\"\u003e\u003ccode\u003ea6729d6\u003c/code\u003e\u003c/a\u003e chore: update BDDMockito with jspecify annotation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/bb83c922484cfd3693d61549b5d6ef39a9c02c2b\"\u003e\u003ccode\u003ebb83c92\u003c/code\u003e\u003c/a\u003e chore: move jspecify as a compile only dependency\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/47a46954cd1c0f8ef64ec63d43da9b71081d74e6\"\u003e\u003ccode\u003e47a4695\u003c/code\u003e\u003c/a\u003e chore: add jspecify with minimal change. Fixes \u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3503\"\u003e#3503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/25f13951d35ca391ee50207e6c564f3e869f3d91\"\u003e\u003ccode\u003e25f1395\u003c/code\u003e\u003c/a\u003e Add core API to enable Kotlin singleton mocking (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3762\"\u003e#3762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/ef9ee5529853d96028b520f84a41ffd41afc9a1d\"\u003e\u003ccode\u003eef9ee55\u003c/code\u003e\u003c/a\u003e Avoids mocking private static methods, as well as package-private static meth...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/d16fcfc274d7ca03a2b4bdc22dd7c3ec6dac8690\"\u003e\u003ccode\u003ed16fcfc\u003c/code\u003e\u003c/a\u003e Bump graalvm/setup-graalvm from 1.4.4 to 1.4.5 (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3780\"\u003e#3780\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mockito/mockito/commit/27eb8a3acdd9c9eb3ff788a71b22777026874439\"\u003e\u003ccode\u003e27eb8a3\u003c/code\u003e\u003c/a\u003e Clarify \u003ccode\u003eRETURNS_MOCKS\u003c/code\u003e behavior with sealed abstract enums (Java 15+) (\u003ca href=\"https://redirect.github.com/mockito/mockito/issues/3773\"\u003e#3773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mockito/mockito/compare/v5.5.0...v5.23.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.robolectric:robolectric` from 4.11.1 to 4.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/robolectric/robolectric/releases\"\u003eorg.robolectric:robolectric's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eRobolectric 4.16.1 is a minor release that fixes some issues when Robolectric is used for Android Platform development. Most notably, it is updated to support the deletion of \u003ca href=\"https://developer.android.com/reference/android/hardware/fingerprint/FingerprintManager\"\u003eFingerprintManager\u003c/a\u003e in the Android Framework, as well as some improvements to the \u003ccode\u003eVirtualDeviceManager\u003c/code\u003e shadow.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/robolectric/robolectric/compare/robolectric-4.16...robolectric-4.16.1\"\u003ehttps://github.com/robolectric/robolectric/compare/robolectric-4.16...robolectric-4.16.1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eRobolectric 4.16 supports Android Baklava (SDK 36), and you need to use JDK 21 if running tests with SDK 36 target. It also removes support for Android L (SDK 21 and 22).\u003c/p\u003e\n\u003cp\u003eOne exciting new feature is native resources (ResourcesMode.NATIVE). Note this is currently only available in SDK 36.\u003c/p\u003e\n\u003cp\u003eIf you have any issues, please file them \u003ca href=\"https://github.com/robolectric/robolectric/issues\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReuse \u003ccode\u003eShadowUIModeManager\u003c/code\u003e in \u003ccode\u003eShadowUIModeManagerTest\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10368\"\u003erobolectric/robolectric#10368\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate AndroidX by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10373\"\u003erobolectric/robolectric#10373\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency gradle to v8.14.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10372\"\u003erobolectric/robolectric#10372\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency com.googlecode.libphonenumber:libphonenumber to v9.0.7 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10371\"\u003erobolectric/robolectric#10371\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency org.bouncycastle:bcprov-jdk18on to v1.81 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10374\"\u003erobolectric/robolectric#10374\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ApplicationInfo inconsistencies in Robolectric. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10375\"\u003erobolectric/robolectric#10375\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd shadow for new resolveActivityAsUser variant. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10377\"\u003erobolectric/robolectric#10377\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdjust to indevelopment SDK changes. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10379\"\u003erobolectric/robolectric#10379\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding support to the Simulator for picking up the device configuration from a Configurer. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10381\"\u003erobolectric/robolectric#10381\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClean up SDK ranges for shadow methods in Baklava. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10380\"\u003erobolectric/robolectric#10380\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a shadow for Equalizer in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10384\"\u003erobolectric/robolectric#10384\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate example to be consistent with robolectric.org by \u003ca href=\"https://github.com/seadowg\"\u003e\u003ccode\u003e@​seadowg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/7475\"\u003erobolectric/robolectric#7475\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate the \u003ccode\u003esimulator-gradle-plugin\u003c/code\u003e to depends on AGP \u003ccode\u003egradle-api\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10386\"\u003erobolectric/robolectric#10386\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace custom \u003ccode\u003egetOrDefault()\u003c/code\u003e with the corresponding Java method by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10370\"\u003erobolectric/robolectric#10370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Javadoc for \u003ccode\u003eShadowPausedLooper\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10387\"\u003erobolectric/robolectric#10387\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix condition in \u003ccode\u003eResourceHelper#parseFloatAttribute()\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10369\"\u003erobolectric/robolectric#10369\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eValidate listener in \u003ccode\u003eShadowAccountManager#addOnAccountsUpdatedListener()\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10361\"\u003erobolectric/robolectric#10361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for UiModeManager.setNightMode(UiModeManager.MODE_NIGHT_CUSTOM) in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10390\"\u003erobolectric/robolectric#10390\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLazily register the simulator plugin by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10391\"\u003erobolectric/robolectric#10391\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable stricter plugin validation by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10388\"\u003erobolectric/robolectric#10388\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the VirtualDeviceManager#getVirtualDevice(int deviceId) to the ShadowVirtualDeviceManager. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10395\"\u003erobolectric/robolectric#10395\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix various small warnings by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10394\"\u003erobolectric/robolectric#10394\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd shadow implement of AccessibilityService#getRootInActiveWindow in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10397\"\u003erobolectric/robolectric#10397\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd more information to the generated POM file by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10392\"\u003erobolectric/robolectric#10392\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange ShadowChoreographer.getDefaultFrameDelay into a shadow method. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10404\"\u003erobolectric/robolectric#10404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRestore removed methods from \u003ccode\u003eConfig\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10406\"\u003erobolectric/robolectric#10406\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd shadow override for Network SocketFactory. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10409\"\u003erobolectric/robolectric#10409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing deprecations to some \u003ccode\u003eConfig.Builder\u003c/code\u003e methods by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10408\"\u003erobolectric/robolectric#10408\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003etestDebugUnitTest\u003c/code\u003e from the dependencies of the \u003ccode\u003esimulator\u003c/code\u003e task by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10413\"\u003erobolectric/robolectric#10413\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMerge branch 'google' into 'master' by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10414\"\u003erobolectric/robolectric#10414\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the snapshot version to 4.16 by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10415\"\u003erobolectric/robolectric#10415\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ability to specify is80211azNtbMeasurement to ShadowRangingResult in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10410\"\u003erobolectric/robolectric#10410\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded implementation for Path.op by \u003ca href=\"https://github.com/GisoBartels\"\u003e\u003ccode\u003e@​GisoBartels\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10288\"\u003erobolectric/robolectric#10288\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix massive code warnings of ShadowVirtualDeviceManagerTest by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10399\"\u003erobolectric/robolectric#10399\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove redundant String concatenation by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10417\"\u003erobolectric/robolectric#10417\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigrate deprecated APIs to idleMainLooper for ShadowVirtualDeviceManagerTest by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10418\"\u003erobolectric/robolectric#10418\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace Stream#toList to Stream#collect(Collectors.toList()) by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10420\"\u003erobolectric/robolectric#10420\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport Java 11 in the simulator gradle plugin by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10421\"\u003erobolectric/robolectric#10421\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate AndroidX by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10422\"\u003erobolectric/robolectric#10422\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/524ea8e634ad51b39356a41fbb4a3474034dd250\"\u003e\u003ccode\u003e524ea8e\u003c/code\u003e\u003c/a\u003e Bump version to 4.16.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/54fd1eeaf0ce87ac3280a7156a666dcddffe874f\"\u003e\u003ccode\u003e54fd1ee\u003c/code\u003e\u003c/a\u003e Implement ResTable support for shared libraries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/1e35e634fc7c22e1d54fe3ac73ab8fce704bd4db\"\u003e\u003ccode\u003e1e35e63\u003c/code\u003e\u003c/a\u003e When a top-level exception occurs in the Simulator, print the stack trace and...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/e2c046f467de139f346eff3e0c0ff2d3610f66e6\"\u003e\u003ccode\u003ee2c046f\u003c/code\u003e\u003c/a\u003e Added custom ThreadFactory to name threads in LocalUIController\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/7f3165a0f04a222579f46dec49d02242e4bb1b0d\"\u003e\u003ccode\u003e7f3165a\u003c/code\u003e\u003c/a\u003e Add newly required \u003ccode\u003e--add-exports\u003c/code\u003e arguments to test tasks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/db54b4b046e460eb6e5df5f19c8ae8abfa276455\"\u003e\u003ccode\u003edb54b4b\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eVirtualDeviceParamsBuilder\u003c/code\u003e to support creating new virtual devices.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/b73adc38c8f5aed39e3e08d844145c5fe2e7ad33\"\u003e\u003ccode\u003eb73adc3\u003c/code\u003e\u003c/a\u003e Implement shadow behavior for VirtualDeviceManager#registerVirtualDeviceListener\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/1e05fdeb1c5fe630b070dad13553806b58650149\"\u003e\u003ccode\u003e1e05fde\u003c/code\u003e\u003c/a\u003e Create shadow for VirtualDeviceManager$VirtualDevice#createVirtualCamera\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/d160747766edebd7b36e61d37f930fd253e7f429\"\u003e\u003ccode\u003ed160747\u003c/code\u003e\u003c/a\u003e Future proof ShadowFingerprintManagerTest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/d7a0438407c7eb82488b4474e51128d44a493eda\"\u003e\u003ccode\u003ed7a0438\u003c/code\u003e\u003c/a\u003e Add maxSdk for ShadowFingerprintManager.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/robolectric/robolectric/compare/robolectric-4.11.1...robolectric-4.16.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.test:core` from 1.5.0 to 1.7.0\n\nUpdates `androidx.core:core-ktx` from 1.10.1 to 1.19.0\n\nUpdates `androidx.documentfile:documentfile` from 1.0.1 to 1.1.0\n\nUpdates `androidx.test.ext:junit` from 1.1.5 to 1.3.0\n\nUpdates `androidx.test.espresso:espresso-core` from 3.5.1 to 3.7.0\n\nUpdates `com.android.application` from 9.3.1 to 9.4.0\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/JoshAtticus/Compressor/pull/117","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/JoshAtticus%2FCompressor/issues/117","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/117/packages"}},{"old_version":"3.6.1","new_version":"3.7.0","update_type":"minor","path":null,"pr_created_at":"2026-09-07T19:09:56.000Z","version_change":"3.6.1 → 3.7.0","issue":{"uuid":"5378239870","node_id":"PR_kwDOURiohM8AAAABCkLB_A","number":6,"state":"closed","title":"Bump the androidx group with 11 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-13T19:45:37.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-07T19:09:56.000Z","updated_at":"2026-09-13T19:45:39.000Z","time_to_close":520541,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"androidx","update_count":11,"packages":[{"name":"androidx.core:core-ktx","old_version":"1.15.0","new_version":"1.19.0"},{"name":"androidx.navigation:navigation-compose","old_version":"2.8.9","new_version":"2.10.0"},{"name":"androidx.compose:compose-bom","old_version":"2025.04.01","new_version":"2026.08.00"},{"name":"androidx.hilt:hilt-work","old_version":"1.2.0","new_version":"1.4.0"},{"name":"androidx.hilt:hilt-compiler","old_version":"1.2.0","new_version":"1.4.0"},{"name":"androidx.room:room-runtime","old_version":"2.7.1","new_version":"2.8.4"},{"name":"androidx.room:room-ktx","old_version":"2.7.1","new_version":"2.8.4"},{"name":"androidx.room:room-compiler","old_version":"2.7.1","new_version":"2.8.4"},{"name":"androidx.hilt:hilt-navigation-compose","old_version":"1.2.0","new_version":"1.4.0"},{"name":"androidx.test.ext:junit","old_version":"1.2.1","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.6.1","new_version":"3.7.0"}],"path":null,"ecosystem":"maven"},"body":"Bumps the androidx group with 11 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| androidx.core:core-ktx | `1.15.0` | `1.19.0` |\n| androidx.navigation:navigation-compose | `2.8.9` | `2.10.0` |\n| androidx.compose:compose-bom | `2025.04.01` | `2026.08.00` |\n| androidx.hilt:hilt-work | `1.2.0` | `1.4.0` |\n| androidx.hilt:hilt-compiler | `1.2.0` | `1.4.0` |\n| androidx.room:room-runtime | `2.7.1` | `2.8.4` |\n| androidx.room:room-ktx | `2.7.1` | `2.8.4` |\n| androidx.room:room-compiler | `2.7.1` | `2.8.4` |\n| androidx.hilt:hilt-navigation-compose | `1.2.0` | `1.4.0` |\n| androidx.test.ext:junit | `1.2.1` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.6.1` | `3.7.0` |\n\nUpdates `androidx.core:core-ktx` from 1.15.0 to 1.19.0\n\nUpdates `androidx.navigation:navigation-compose` from 2.8.9 to 2.10.0\n\nUpdates `androidx.compose:compose-bom` from 2025.04.01 to 2026.08.00\n\nUpdates `androidx.hilt:hilt-work` from 1.2.0 to 1.4.0\n\nUpdates `androidx.hilt:hilt-compiler` from 1.2.0 to 1.4.0\n\nUpdates `androidx.hilt:hilt-compiler` from 1.2.0 to 1.4.0\n\nUpdates `androidx.room:room-runtime` from 2.7.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.7.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.7.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.7.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.7.1 to 2.8.4\n\nUpdates `androidx.hilt:hilt-navigation-compose` from 1.2.0 to 1.4.0\n\nUpdates `androidx.test.ext:junit` from 1.2.1 to 1.3.0\n\nUpdates `androidx.test.espresso:espresso-core` from 3.6.1 to 3.7.0\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/hiwebhq/hi3-hashkit/pull/6","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/hiwebhq%2Fhi3-hashkit/issues/6","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/6/packages"}},{"old_version":"3.5.1","new_version":"3.7.0","update_type":"minor","path":null,"pr_created_at":"2026-09-06T18:51:17.000Z","version_change":"3.5.1 → 3.7.0","issue":{"uuid":"5366961223","node_id":"PR_kwDOUQYzHs8AAAABCbNLBw","number":3,"state":"open","title":"Bump androidx.test.espresso:espresso-core from 3.5.1 to 3.7.0","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-06T18:51:17.000Z","updated_at":"2026-09-06T20:19:26.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"androidx.test.espresso:espresso-core","old_version":"3.5.1","new_version":"3.7.0","repository_url":null}],"path":null,"ecosystem":"maven"},"body":"Bumps androidx.test.espresso:espresso-core from 3.5.1 to 3.7.0.\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=androidx.test.espresso:espresso-core\u0026package-manager=gradle\u0026previous-version=3.5.1\u0026new-version=3.7.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/JCPrieto/YiActionController/pull/3","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/JCPrieto%2FYiActionController/issues/3","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/3/packages"}},{"old_version":"3.5.1","new_version":"3.7.0","update_type":"minor","path":null,"pr_created_at":"2026-09-05T20:09:30.000Z","version_change":"3.5.1 → 3.7.0","issue":{"uuid":"5360624908","node_id":"PR_kwDOUIFqrM8AAAABCWeXPw","number":23,"state":"closed","title":"chore(deps): bump the androidx group across 1 directory with 8 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-05T20:39:41.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-05T20:09:30.000Z","updated_at":"2026-09-05T20:39:45.000Z","time_to_close":1811,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"androidx","update_count":8,"packages":[{"name":"androidx.core:core-ktx","old_version":"1.12.0","new_version":"1.19.0"},{"name":"androidx.core:core-splashscreen","old_version":"1.0.1","new_version":"1.2.0"},{"name":"androidx.room:room-runtime","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.security:security-crypto","old_version":"1.1.0-alpha06","new_version":"1.1.0"},{"name":"androidx.test.ext:junit","old_version":"1.1.5","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.5.1","new_version":"3.7.0"}],"path":null,"ecosystem":"maven"},"body":"Bumps the androidx group with 6 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| androidx.core:core-ktx | `1.12.0` | `1.19.0` |\n| androidx.core:core-splashscreen | `1.0.1` | `1.2.0` |\n| androidx.room:room-runtime | `2.6.1` | `2.8.4` |\n| androidx.security:security-crypto | `1.1.0-alpha06` | `1.1.0` |\n| androidx.test.ext:junit | `1.1.5` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.5.1` | `3.7.0` |\n\n\nUpdates `androidx.core:core-ktx` from 1.12.0 to 1.19.0\n\nUpdates `androidx.core:core-splashscreen` from 1.0.1 to 1.2.0\n\nUpdates `androidx.room:room-runtime` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `androidx.security:security-crypto` from 1.1.0-alpha06 to 1.1.0\n\nUpdates `androidx.test.ext:junit` from 1.1.5 to 1.3.0\n\nUpdates `androidx.test.espresso:espresso-core` from 3.5.1 to 3.7.0","html_url":"https://github.com/bwhtech/helpdesk_mobile/pull/23","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/bwhtech%2Fhelpdesk_mobile/issues/23","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/23/packages"}},{"old_version":"3.6.1","new_version":"3.7.0","update_type":"minor","path":null,"pr_created_at":"2026-09-04T23:42:10.000Z","version_change":"3.6.1 → 3.7.0","issue":{"uuid":"5354162321","node_id":"PR_kwDOTccscM8AAAABCRihzg","number":28,"state":"closed","title":"Bump the gradle-dependencies group across 1 directory with 15 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-11T23:35:09.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-04T23:42:10.000Z","updated_at":"2026-09-11T23:35:11.000Z","time_to_close":604379,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"gradle-dependencies","update_count":15,"packages":[{"name":"androidx.core:core-ktx","old_version":"1.16.0","new_version":"1.19.0"},{"name":"androidx.test.ext:junit","old_version":"1.2.1","new_version":"1.3.0"},{"name":"androidx.test:core","old_version":"1.6.1","new_version":"1.7.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.6.1","new_version":"3.7.0"},{"name":"androidx.compose:compose-bom","old_version":"2026.06.01","new_version":"2026.08.00"},{"name":"androidx.navigation:navigation-compose","old_version":"2.9.1","new_version":"2.10.0"},{"name":"androidx.appcompat:appcompat","old_version":"1.7.0","new_version":"1.8.0"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-test","old_version":"1.10.2","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"org.robolectric:robolectric","old_version":"4.14.1","new_version":"4.16.1","repository_url":"https://github.com/robolectric/robolectric"},{"name":"com.android.application","old_version":"8.11.1","new_version":"8.13.2"},{"name":"org.jetbrains.kotlin.android","old_version":"2.2.0","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.2.0","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.google.devtools.ksp","old_version":"2.2.0-2.0.2","new_version":"2.3.11","repository_url":"https://github.com/google/ksp"},{"name":"com.google.gms.google-services","old_version":"4.4.2","new_version":"4.5.0"},{"name":"com.google.firebase.crashlytics","old_version":"3.0.3","new_version":"3.0.8"}],"path":null,"ecosystem":"maven"},"body":"Bumps the gradle-dependencies group with 15 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| androidx.core:core-ktx | `1.16.0` | `1.19.0` |\n| androidx.test.ext:junit | `1.2.1` | `1.3.0` |\n| androidx.test:core | `1.6.1` | `1.7.0` |\n| androidx.test.espresso:espresso-core | `3.6.1` | `3.7.0` |\n| androidx.compose:compose-bom | `2026.06.01` | `2026.08.00` |\n| androidx.navigation:navigation-compose | `2.9.1` | `2.10.0` |\n| androidx.appcompat:appcompat | `1.7.0` | `1.8.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-test](https://github.com/Kotlin/kotlinx.coroutines) | `1.10.2` | `1.11.0` |\n| [org.robolectric:robolectric](https://github.com/robolectric/robolectric) | `4.14.1` | `4.16.1` |\n| com.android.application | `8.11.1` | `8.13.2` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.2.0` | `2.4.10` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.2.0` | `2.4.10` |\n| [com.google.devtools.ksp](https://github.com/google/ksp) | `2.2.0-2.0.2` | `2.3.11` |\n| com.google.gms.google-services | `4.4.2` | `4.5.0` |\n| com.google.firebase.crashlytics | `3.0.3` | `3.0.8` |\n\n\nUpdates `androidx.core:core-ktx` from 1.16.0 to 1.19.0\n\nUpdates `androidx.test.ext:junit` from 1.2.1 to 1.3.0\n\nUpdates `androidx.test:core` from 1.6.1 to 1.7.0\n\nUpdates `androidx.test.espresso:espresso-core` from 3.6.1 to 3.7.0\n\nUpdates `androidx.compose:compose-bom` from 2026.06.01 to 2026.08.00\n\nUpdates `androidx.navigation:navigation-compose` from 2.9.1 to 2.10.0\n\nUpdates `androidx.appcompat:appcompat` from 1.7.0 to 1.8.0\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-test` from 1.10.2 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-test's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-test's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874\"\u003e\u003ccode\u003e8564f65\u003c/code\u003e\u003c/a\u003e Version 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c\"\u003e\u003ccode\u003ea4c6af9\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9\"\u003e\u003ccode\u003eef917b4\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd\"\u003e\u003ccode\u003e5ebc421\u003c/code\u003e\u003c/a\u003e Update the release procedure description (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80\"\u003e\u003ccode\u003e95f46a0\u003c/code\u003e\u003c/a\u003e Remove old maven repository settings (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672\"\u003e#4672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc\"\u003e\u003ccode\u003eb4f4f0a\u003c/code\u003e\u003c/a\u003e Fix package name of \u003ccode\u003eToMapCollectionSamplesTest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674\"\u003e#4674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/86738dca7dc9ac82249abc8206263fa0065ee631\"\u003e\u003ccode\u003e86738dc\u003c/code\u003e\u003c/a\u003e Added templates to the issue creation wizard (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/330fcc221fb583f0b119f34191f735a73b827378\"\u003e\u003ccode\u003e330fcc2\u003c/code\u003e\u003c/a\u003e Version 1.11.0-rc02\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/e31cef6e9f2d26794be7d75ecbf3033b6432d582\"\u003e\u003ccode\u003ee31cef6\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/dc6e9f61eaf3a67f4bf474a7987aedc3f16cef37\"\u003e\u003ccode\u003edc6e9f6\u003c/code\u003e\u003c/a\u003e Restore Promise-related functions on Wasm/JS as HIDDEN (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/compare/1.10.2...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.robolectric:robolectric` from 4.14.1 to 4.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/robolectric/robolectric/releases\"\u003eorg.robolectric:robolectric's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eRobolectric 4.16.1 is a minor release that fixes some issues when Robolectric is used for Android Platform development. Most notably, it is updated to support the deletion of \u003ca href=\"https://developer.android.com/reference/android/hardware/fingerprint/FingerprintManager\"\u003eFingerprintManager\u003c/a\u003e in the Android Framework, as well as some improvements to the \u003ccode\u003eVirtualDeviceManager\u003c/code\u003e shadow.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/robolectric/robolectric/compare/robolectric-4.16...robolectric-4.16.1\"\u003ehttps://github.com/robolectric/robolectric/compare/robolectric-4.16...robolectric-4.16.1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eRobolectric 4.16 supports Android Baklava (SDK 36), and you need to use JDK 21 if running tests with SDK 36 target. It also removes support for Android L (SDK 21 and 22).\u003c/p\u003e\n\u003cp\u003eOne exciting new feature is native resources (ResourcesMode.NATIVE). Note this is currently only available in SDK 36.\u003c/p\u003e\n\u003cp\u003eIf you have any issues, please file them \u003ca href=\"https://github.com/robolectric/robolectric/issues\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReuse \u003ccode\u003eShadowUIModeManager\u003c/code\u003e in \u003ccode\u003eShadowUIModeManagerTest\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10368\"\u003erobolectric/robolectric#10368\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate AndroidX by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10373\"\u003erobolectric/robolectric#10373\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency gradle to v8.14.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10372\"\u003erobolectric/robolectric#10372\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency com.googlecode.libphonenumber:libphonenumber to v9.0.7 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10371\"\u003erobolectric/robolectric#10371\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency org.bouncycastle:bcprov-jdk18on to v1.81 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10374\"\u003erobolectric/robolectric#10374\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ApplicationInfo inconsistencies in Robolectric. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10375\"\u003erobolectric/robolectric#10375\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd shadow for new resolveActivityAsUser variant. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10377\"\u003erobolectric/robolectric#10377\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdjust to indevelopment SDK changes. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10379\"\u003erobolectric/robolectric#10379\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding support to the Simulator for picking up the device configuration from a Configurer. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10381\"\u003erobolectric/robolectric#10381\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClean up SDK ranges for shadow methods in Baklava. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10380\"\u003erobolectric/robolectric#10380\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a shadow for Equalizer in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10384\"\u003erobolectric/robolectric#10384\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate example to be consistent with robolectric.org by \u003ca href=\"https://github.com/seadowg\"\u003e\u003ccode\u003e@​seadowg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/7475\"\u003erobolectric/robolectric#7475\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate the \u003ccode\u003esimulator-gradle-plugin\u003c/code\u003e to depends on AGP \u003ccode\u003egradle-api\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10386\"\u003erobolectric/robolectric#10386\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace custom \u003ccode\u003egetOrDefault()\u003c/code\u003e with the corresponding Java method by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10370\"\u003erobolectric/robolectric#10370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Javadoc for \u003ccode\u003eShadowPausedLooper\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10387\"\u003erobolectric/robolectric#10387\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix condition in \u003ccode\u003eResourceHelper#parseFloatAttribute()\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10369\"\u003erobolectric/robolectric#10369\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eValidate listener in \u003ccode\u003eShadowAccountManager#addOnAccountsUpdatedListener()\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10361\"\u003erobolectric/robolectric#10361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for UiModeManager.setNightMode(UiModeManager.MODE_NIGHT_CUSTOM) in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10390\"\u003erobolectric/robolectric#10390\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLazily register the simulator plugin by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10391\"\u003erobolectric/robolectric#10391\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable stricter plugin validation by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10388\"\u003erobolectric/robolectric#10388\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the VirtualDeviceManager#getVirtualDevice(int deviceId) to the ShadowVirtualDeviceManager. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10395\"\u003erobolectric/robolectric#10395\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix various small warnings by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10394\"\u003erobolectric/robolectric#10394\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd shadow implement of AccessibilityService#getRootInActiveWindow in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10397\"\u003erobolectric/robolectric#10397\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd more information to the generated POM file by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10392\"\u003erobolectric/robolectric#10392\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange ShadowChoreographer.getDefaultFrameDelay into a shadow method. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10404\"\u003erobolectric/robolectric#10404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRestore removed methods from \u003ccode\u003eConfig\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10406\"\u003erobolectric/robolectric#10406\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd shadow override for Network SocketFactory. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10409\"\u003erobolectric/robolectric#10409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing deprecations to some \u003ccode\u003eConfig.Builder\u003c/code\u003e methods by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10408\"\u003erobolectric/robolectric#10408\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003etestDebugUnitTest\u003c/code\u003e from the dependencies of the \u003ccode\u003esimulator\u003c/code\u003e task by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10413\"\u003erobolectric/robolectric#10413\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMerge branch 'google' into 'master' by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10414\"\u003erobolectric/robolectric#10414\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the snapshot version to 4.16 by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10415\"\u003erobolectric/robolectric#10415\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ability to specify is80211azNtbMeasurement to ShadowRangingResult in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10410\"\u003erobolectric/robolectric#10410\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded implementation for Path.op by \u003ca href=\"https://github.com/GisoBartels\"\u003e\u003ccode\u003e@​GisoBartels\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10288\"\u003erobolectric/robolectric#10288\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix massive code warnings of ShadowVirtualDeviceManagerTest by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10399\"\u003erobolectric/robolectric#10399\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove redundant String concatenation by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10417\"\u003erobolectric/robolectric#10417\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigrate deprecated APIs to idleMainLooper for ShadowVirtualDeviceManagerTest by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10418\"\u003erobolectric/robolectric#10418\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace Stream#toList to Stream#collect(Collectors.toList()) by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10420\"\u003erobolectric/robolectric#10420\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport Java 11 in the simulator gradle plugin by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10421\"\u003erobolectric/robolectric#10421\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate AndroidX by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10422\"\u003erobolectric/robolectric#10422\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/524ea8e634ad51b39356a41fbb4a3474034dd250\"\u003e\u003ccode\u003e524ea8e\u003c/code\u003e\u003c/a\u003e Bump version to 4.16.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/54fd1eeaf0ce87ac3280a7156a666dcddffe874f\"\u003e\u003ccode\u003e54fd1ee\u003c/code\u003e\u003c/a\u003e Implement ResTable support for shared libraries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/1e35e634fc7c22e1d54fe3ac73ab8fce704bd4db\"\u003e\u003ccode\u003e1e35e63\u003c/code\u003e\u003c/a\u003e When a top-level exception occurs in the Simulator, print the stack trace and...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/e2c046f467de139f346eff3e0c0ff2d3610f66e6\"\u003e\u003ccode\u003ee2c046f\u003c/code\u003e\u003c/a\u003e Added custom ThreadFactory to name threads in LocalUIController\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/7f3165a0f04a222579f46dec49d02242e4bb1b0d\"\u003e\u003ccode\u003e7f3165a\u003c/code\u003e\u003c/a\u003e Add newly required \u003ccode\u003e--add-exports\u003c/code\u003e arguments to test tasks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/db54b4b046e460eb6e5df5f19c8ae8abfa276455\"\u003e\u003ccode\u003edb54b4b\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eVirtualDeviceParamsBuilder\u003c/code\u003e to support creating new virtual devices.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/b73adc38c8f5aed39e3e08d844145c5fe2e7ad33\"\u003e\u003ccode\u003eb73adc3\u003c/code\u003e\u003c/a\u003e Implement shadow behavior for VirtualDeviceManager#registerVirtualDeviceListener\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/1e05fdeb1c5fe630b070dad13553806b58650149\"\u003e\u003ccode\u003e1e05fde\u003c/code\u003e\u003c/a\u003e Create shadow for VirtualDeviceManager$VirtualDevice#createVirtualCamera\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/d160747766edebd7b36e61d37f930fd253e7f429\"\u003e\u003ccode\u003ed160747\u003c/code\u003e\u003c/a\u003e Future proof ShadowFingerprintManagerTest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/d7a0438407c7eb82488b4474e51128d44a493eda\"\u003e\u003ccode\u003ed7a0438\u003c/code\u003e\u003c/a\u003e Add maxSdk for ShadowFingerprintManager.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/robolectric/robolectric/compare/robolectric-4.14.1...robolectric-4.16.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.android.application` from 8.11.1 to 8.13.2\n\nUpdates `org.jetbrains.kotlin.android` from 2.2.0 to 2.4.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.10\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eKotlin 2.4.10-RC2\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.10\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.4.0\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83867\"\u003e\u003ccode\u003eKT-83867\u003c/code\u003e\u003c/a\u003e OVERLOAD_RESOLUTION_AMBIGUITY false positive with assertEquals in IJ repo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83723\"\u003e\u003ccode\u003eKT-83723\u003c/code\u003e\u003c/a\u003e [Analysis API] Enable experimental KDoc resolver by default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83388\"\u003e\u003ccode\u003eKT-83388\u003c/code\u003e\u003c/a\u003e Analysis API: properly support KMP in KotlinPackageProvider\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/5687445832cd835b4509b9fbc264cdf1a8201093\"\u003e\u003ccode\u003e5687445\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ba30392c459dd7c1ae74c1501e83453144416bc9\"\u003e\u003ccode\u003eba30392\u003c/code\u003e\u003c/a\u003e [Wasm] Support regenerate unchanged modules flag on KGP\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6307e7310d14eef05f199ebccd9518379772d3a7\"\u003e\u003ccode\u003e6307e73\u003c/code\u003e\u003c/a\u003e [Wasm] Implement Xwasm-IC-generate-unchanged-modules flag\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/39d7aee8470b7ce61fea8f76c317456e2756f7c0\"\u003e\u003ccode\u003e39d7aee\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a2956bed85f99752b78881075665d81a82e98ab2\"\u003e\u003ccode\u003ea2956be\u003c/code\u003e\u003c/a\u003e [Gradle] Update karma.conf.js to use 'require(...)' instead plain strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9b1361ce7a6cfd2edd6f8cdb05198573fb839b61\"\u003e\u003ccode\u003e9b1361c\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Updated regression test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a4c153af52ad4694c0cca14c25812db54b19f90e\"\u003e\u003ccode\u003ea4c153a\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Fix toochain to 2.4.0 for abiValidation compat config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bc04b90d245cd27d8339fe51bd43a90dd4c04e9f\"\u003e\u003ccode\u003ebc04b90\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bbcb94baa2eed1cc5ccb39147dcf5a5a184d7a14\"\u003e\u003ccode\u003ebbcb94b\u003c/code\u003e\u003c/a\u003e [CRI] explicitly disable CRI generation for non-JVM targets to avoid false-po...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6c2c458f1d2e4b4f8638fb16f12ff1dd375c4ae2\"\u003e\u003ccode\u003e6c2c458\u003c/code\u003e\u003c/a\u003e Scripting: fix jvmTarget processing from script annotations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.2.0...v2.4.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.plugin.compose` from 2.2.0 to 2.4.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.10\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eKotlin 2.4.10-RC2\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.plugin.compose's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.10\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.4.0\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83867\"\u003e\u003ccode\u003eKT-83867\u003c/code\u003e\u003c/a\u003e OVERLOAD_RESOLUTION_AMBIGUITY false positive with assertEquals in IJ repo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83723\"\u003e\u003ccode\u003eKT-83723\u003c/code\u003e\u003c/a\u003e [Analysis API] Enable experimental KDoc resolver by default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83388\"\u003e\u003ccode\u003eKT-83388\u003c/code\u003e\u003c/a\u003e Analysis API: properly support KMP in KotlinPackageProvider\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/5687445832cd835b4509b9fbc264cdf1a8201093\"\u003e\u003ccode\u003e5687445\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ba30392c459dd7c1ae74c1501e83453144416bc9\"\u003e\u003ccode\u003eba30392\u003c/code\u003e\u003c/a\u003e [Wasm] Support regenerate unchanged modules flag on KGP\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6307e7310d14eef05f199ebccd9518379772d3a7\"\u003e\u003ccode\u003e6307e73\u003c/code\u003e\u003c/a\u003e [Wasm] Implement Xwasm-IC-generate-unchanged-modules flag\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/39d7aee8470b7ce61fea8f76c317456e2756f7c0\"\u003e\u003ccode\u003e39d7aee\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a2956bed85f99752b78881075665d81a82e98ab2\"\u003e\u003ccode\u003ea2956be\u003c/code\u003e\u003c/a\u003e [Gradle] Update karma.conf.js to use 'require(...)' instead plain strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9b1361ce7a6cfd2edd6f8cdb05198573fb839b61\"\u003e\u003ccode\u003e9b1361c\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Updated regression test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a4c153af52ad4694c0cca14c25812db54b19f90e\"\u003e\u003ccode\u003ea4c153a\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Fix toochain to 2.4.0 for abiValidation compat config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bc04b90d245cd27d8339fe51bd43a90dd4c04e9f\"\u003e\u003ccode\u003ebc04b90\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bbcb94baa2eed1cc5ccb39147dcf5a5a184d7a14\"\u003e\u003ccode\u003ebbcb94b\u003c/code\u003e\u003c/a\u003e [CRI] explicitly disable CRI generation for non-JVM targets to avoid false-po...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6c2c458f1d2e4b4f8638fb16f12ff1dd375c4ae2\"\u003e\u003ccode\u003e6c2c458\u003c/code\u003e\u003c/a\u003e Scripting: fix jvmTarget processing from script annotations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.2.0...v2.4.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.plugin.compose` from 2.2.0 to 2.4.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.10\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eKotlin 2.4.10-RC2\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.plugin.compose's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.10\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.4.0\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83867\"\u003e\u003ccode\u003eKT-83867\u003c/code\u003e\u003c/a\u003e OVERLOAD_RESOLUTION_AMBIGUITY false positive with assertEquals in IJ repo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83723\"\u003e\u003ccode\u003eKT-83723\u003c/code\u003e\u003c/a\u003e [Analysis API] Enable experimental KDoc resolver by default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83388\"\u003e\u003ccode\u003eKT-83388\u003c/code\u003e\u003c/a\u003e Analysis API: properly support KMP in KotlinPackageProvider\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/5687445832cd835b4509b9fbc264cdf1a8201093\"\u003e\u003ccode\u003e5687445\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ba30392c459dd7c1ae74c1501e83453144416bc9\"\u003e\u003ccode\u003eba30392\u003c/code\u003e\u003c/a\u003e [Wasm] Support regenerate unchanged modules flag on KGP\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6307e7310d14eef05f199ebccd9518379772d3a7\"\u003e\u003ccode\u003e6307e73\u003c/code\u003e\u003c/a\u003e [Wasm] Implement Xwasm-IC-generate-unchanged-modules flag\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/39d7aee8470b7ce61fea8f76c317456e2756f7c0\"\u003e\u003ccode\u003e39d7aee\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a2956bed85f99752b78881075665d81a82e98ab2\"\u003e\u003ccode\u003ea2956be\u003c/code\u003e\u003c/a\u003e [Gradle] Update karma.conf.js to use 'require(...)' instead plain strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9b1361ce7a6cfd2edd6f8cdb05198573fb839b61\"\u003e\u003ccode\u003e9b1361c\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Updated regression test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a4c153af52ad4694c0cca14c25812db54b19f90e\"\u003e\u003ccode\u003ea4c153a\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Fix toochain to 2.4.0 for abiValidation compat config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bc04b90d245cd27d8339fe51bd43a90dd4c04e9f\"\u003e\u003ccode\u003ebc04b90\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bbcb94baa2eed1cc5ccb39147dcf5a5a184d7a14\"\u003e\u003ccode\u003ebbcb94b\u003c/code\u003e\u003c/a\u003e [CRI] explicitly disable CRI generation for non-JVM targets to avoid false-po...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6c2c458f1d2e4b4f8638fb16f12ff1dd375c4ae2\"\u003e\u003ccode\u003e6c2c458\u003c/code\u003e\u003c/a\u003e Scripting: fix jvmTarget processing from script annotations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.2.0...v2.4.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.devtools.ksp` from 2.2.0-2.0.2 to 2.3.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/ksp/releases\"\u003ecom.google.devtools.ksp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.3.11\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eorg.gradle.isolated-projects\u003c/code\u003e for project isolation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3051\"\u003e#3051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix premature \u003ccode\u003ekspDebugAndroidTest\u003c/code\u003e task skipping on Android library modules (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix missing parent declaration exception for \u003ccode\u003e@NotNull\u003c/code\u003e annotations during incremental compilation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3030\"\u003e#3030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClean output directories instead of skipping tasks when processor classpath transitions to empty (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3046\"\u003e#3046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix build cache misses by marking \u003ccode\u003eKspGradleConfig.logLevel\u003c/code\u003e as \u003ccode\u003e@Internal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3039\"\u003e#3039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eorg.gradle.isolated-projects=true\u003c/code\u003e to KSP Gradle properties reference table (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3076\"\u003e#3076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd KSP Gradle properties reference table to README documentation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3070\"\u003e#3070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument collection values in \u003ccode\u003eKSValueArgument.value\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3069\"\u003e#3069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate error messaging for \u003ccode\u003eksp.useKSP2\u003c/code\u003e deprecation notice (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3066\"\u003e#3066\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThanks to \u003ca href=\"https://github.com/simonlebras\"\u003e\u003ccode\u003e@​simonlebras\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/ChristianKatzmann\"\u003e\u003ccode\u003e@​ChristianKatzmann\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/Yong-yuan-X\"\u003e\u003ccode\u003e@​Yong-yuan-X\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/bacecek\"\u003e\u003ccode\u003e@​bacecek\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/KlyneChrysler\"\u003e\u003ccode\u003e@​KlyneChrysler\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/Shaurya2k06\"\u003e\u003ccode\u003e@​Shaurya2k06\u003c/code\u003e\u003c/a\u003e, and everyone who reported bugs and participated in discussions!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/ksp/compare/2.3.10...2.3.11\"\u003ehttps://github.com/google/ksp/compare/2.3.10...2.3.11\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.3.10\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix OOMs caused by unstopped coroutine Dispatcher threads by moving KSP task cache to a gradle build service (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2817\"\u003e#2817\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSanitize ':' in internal-name module suffix so KSP works with Kotlin 2.4.0 default module names (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2964\"\u003e#2964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFilter source file trees in KspAATask to restore NO-SOURCE skipping behaviour (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2947\"\u003e#2947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix R-class resolution in KSP when AGP 9 built-in Kotlin is enabled (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2857\"\u003e#2857\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix KSP2 incremental cache path normalization mismatch (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2854\"\u003e#2854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize line endings for KspAATask source roots to prevent cross-platform remote build cache misses (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2849\"\u003e#2849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bug where KSP incremental compilation does not consider library class references in annotations (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3011\"\u003e#3011\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eConsume all Kotlin sources in KSP to support other code generators (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3001\"\u003e#3001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix configuration cache invalidation in klib cross-compilation check (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3014\"\u003e#3014\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMemoized hash code for \u003ccode\u003eKSTypeImpl\u003c/code\u003e to speed up processing (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2896\"\u003e#2896\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix incorrect name generation for data classes annotated with \u003ccode\u003e@JvmRecord\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2813\"\u003e#2813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInclude \u003ccode\u003ekotlinx.coroutines\u003c/code\u003e in the distributed uber jar \u003ccode\u003esymbol-processing-aa-embeddable\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2938\"\u003e#2938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew debugging features for incremental compilation, including additional logging and dependency graph visualization (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3015\"\u003e#3015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeprecate the \u003ccode\u003eksp(...)\u003c/code\u003e Gradle configuration in Kotlin Multiplatform (KMP) projects in favor of target-specific configurations (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2956\"\u003e#2956\u003c/a\u003e). Note: Non-KMP projects are also affected. For migration details, see the \u003ca href=\"https://kotlinlang.org/docs/ksp-multiplatform.html#avoid-the-ksp-configuration-on-ksp-1-0-1\"\u003edocumentation\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThanks to \u003ca href=\"https://github.com/mvanhorn\"\u003e\u003ccode\u003e@​mvanhorn\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/Yong-yuan-X\"\u003e\u003ccode\u003e@​Yong-yuan-X\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/MariusVolkhart\"\u003e\u003ccode\u003e@​MariusVolkhart\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/shmuelr\"\u003e\u003ccode\u003e@​shmuelr\u003c/code\u003e\u003c/a\u003e and everyone who reported bugs and participated in discussions!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/ksp/compare/2.3.9...2.3.10\"\u003ehttps://github.com/google/ksp/compare/2.3.9...2.3.10\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.3.9\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleaned up native cross-compilation support checks to prevent Gradle Configuration Cache invalidation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2953\"\u003e#2953\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a compilation performance regression in in PsiResolutionStrategy introduced in 2.3.8  (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2948\"\u003e#2948\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThanks to everyone who reported bugs and participated in discussions!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/ksp/compare/2.3.8...2.3.9\"\u003ehttps://github.com/google/ksp/compare/2.3.8...2.3.9\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/c44fd9a91192679e07a1d905dda022796e32bbbe\"\u003e\u003ccode\u003ec44fd9a\u003c/code\u003e\u003c/a\u003e Rename coroutines core-jvm alias to coreJvm per review\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/5cec34dab94b81371fca720ff188fb42c38c108f\"\u003e\u003ccode\u003e5cec34d\u003c/code\u003e\u003c/a\u003e Move root build plugin versions to the version catalog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/b956e6b1f856717db7cbd1a24e23f73a7216c998\"\u003e\u003ccode\u003eb956e6b\u003c/code\u003e\u003c/a\u003e Move remaining kotlin-analysis-api versions to the version catalog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/9aed49722363306f8dc75c193b9c1f956907a628\"\u003e\u003ccode\u003e9aed497\u003c/code\u003e\u003c/a\u003e Do not cherry-pick conflicting commits in CI auto-merge workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/145dcd65fc7227a5fbb32a0e993681ac925f1a93\"\u003e\u003ccode\u003e145dcd6\u003c/code\u003e\u003c/a\u003e Update gradle wrapper to 9.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/68762a9376230007f02d10...\n\n_Description has been truncated_","html_url":"https://github.com/CiobanDaniel/route-planner-android/pull/28","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/CiobanDaniel%2Froute-planner-android/issues/28","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/28/packages"}},{"old_version":"3.5.1","new_version":"3.7.0","update_type":"minor","path":null,"pr_created_at":"2026-09-04T12:28:21.000Z","version_change":"3.5.1 → 3.7.0","issue":{"uuid":"5348065257","node_id":"PR_kwDOSyQXzc8AAAABCMolPw","number":36,"state":"closed","title":"chore(deps): bump the android-deps group across 1 directory with 29 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-11T12:25:32.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-04T12:28:21.000Z","updated_at":"2026-09-11T12:25:34.000Z","time_to_close":604631,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"android-deps","update_count":29,"packages":[{"name":"com.android.application","old_version":"8.13.0","new_version":"9.4.0"},{"name":"org.jetbrains.kotlin.android","old_version":"1.9.22","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.google.dagger.hilt.android","old_version":"2.50","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"com.google.gms.google-services","old_version":"4.4.0","new_version":"4.5.0"},{"name":"com.google.firebase.crashlytics","old_version":"2.9.9","new_version":"3.0.8"},{"name":"androidx.core:core-ktx","old_version":"1.12.0","new_version":"1.19.0"},{"name":"androidx.compose:compose-bom","old_version":"2023.10.01","new_version":"2026.08.00"},{"name":"com.google.android.material:material","old_version":"1.11.0","new_version":"1.14.0","repository_url":"https://github.com/material-components/material-components-android"},{"name":"androidx.navigation:navigation-compose","old_version":"2.7.6","new_version":"2.10.0"},{"name":"com.google.dagger:hilt-android","old_version":"2.50","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"androidx.hilt:hilt-navigation-compose","old_version":"1.1.0","new_version":"1.4.0"},{"name":"com.squareup.retrofit2:retrofit","old_version":"2.11.0","new_version":"3.0.0","repository_url":"https://github.com/square/retrofit"},{"name":"com.squareup.okhttp3:logging-interceptor","old_version":"4.12.0","new_version":"5.5.0","repository_url":"https://github.com/lysine-dev/okhttp"},{"name":"androidx.room:room-runtime","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-ktx","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-compiler","old_version":"2.6.1","new_version":"2.8.4"},{"name":"io.coil-kt:coil-compose","old_version":"2.5.0","new_version":"2.7.0","repository_url":"https://github.com/coil-kt/coil"},{"name":"androidx.security:security-crypto","old_version":"1.1.0-alpha06","new_version":"1.1.0"},{"name":"com.google.android.libraries.identity.googleid:googleid","old_version":"1.1.1","new_version":"1.2.0"},{"name":"com.google.android.gms:play-services-auth","old_version":"21.0.0","new_version":"22.0.0"},{"name":"com.google.firebase:firebase-bom","old_version":"32.7.1","new_version":"34.18.0"},{"name":"androidx.exifinterface:exifinterface","old_version":"1.3.7","new_version":"1.4.2"},{"name":"androidx.test.ext:junit","old_version":"1.1.5","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.5.1","new_version":"3.7.0"},{"name":"gradle-wrapper","old_version":"8.13","new_version":"9.7.1","repository_url":"https://github.com/gradle/gradle"}],"path":null,"ecosystem":"maven"},"body":"Bumps the android-deps group with 25 updates in the /android directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| com.android.application | `8.13.0` | `9.4.0` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `1.9.22` | `2.4.10` |\n| [com.google.dagger.hilt.android](https://github.com/google/dagger) | `2.50` | `2.60.1` |\n| com.google.gms.google-services | `4.4.0` | `4.5.0` |\n| com.google.firebase.crashlytics | `2.9.9` | `3.0.8` |\n| androidx.core:core-ktx | `1.12.0` | `1.19.0` |\n| androidx.compose:compose-bom | `2023.10.01` | `2026.08.00` |\n| [com.google.android.material:material](https://github.com/material-components/material-components-android) | `1.11.0` | `1.14.0` |\n| androidx.navigation:navigation-compose | `2.7.6` | `2.10.0` |\n| [com.google.dagger:hilt-android](https://github.com/google/dagger) | `2.50` | `2.60.1` |\n| androidx.hilt:hilt-navigation-compose | `1.1.0` | `1.4.0` |\n| [com.squareup.retrofit2:retrofit](https://github.com/square/retrofit) | `2.11.0` | `3.0.0` |\n| [com.squareup.okhttp3:logging-interceptor](https://github.com/lysine-dev/okhttp) | `4.12.0` | `5.5.0` |\n| androidx.room:room-runtime | `2.6.1` | `2.8.4` |\n| androidx.room:room-ktx | `2.6.1` | `2.8.4` |\n| androidx.room:room-compiler | `2.6.1` | `2.8.4` |\n| [io.coil-kt:coil-compose](https://github.com/coil-kt/coil) | `2.5.0` | `2.7.0` |\n| androidx.security:security-crypto | `1.1.0-alpha06` | `1.1.0` |\n| com.google.android.libraries.identity.googleid:googleid | `1.1.1` | `1.2.0` |\n| com.google.android.gms:play-services-auth | `21.0.0` | `22.0.0` |\n| com.google.firebase:firebase-bom | `32.7.1` | `34.18.0` |\n| androidx.exifinterface:exifinterface | `1.3.7` | `1.4.2` |\n| androidx.test.ext:junit | `1.1.5` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.5.1` | `3.7.0` |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `8.13` | `9.7.1` |\n\n\nUpdates `com.android.application` from 8.13.0 to 9.4.0\n\nUpdates `org.jetbrains.kotlin.android` from 1.9.22 to 2.4.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.10\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eKotlin 2.4.10-RC2\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.10\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.4.0\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83867\"\u003e\u003ccode\u003eKT-83867\u003c/code\u003e\u003c/a\u003e OVERLOAD_RESOLUTION_AMBIGUITY false positive with assertEquals in IJ repo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83723\"\u003e\u003ccode\u003eKT-83723\u003c/code\u003e\u003c/a\u003e [Analysis API] Enable experimental KDoc resolver by default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83388\"\u003e\u003ccode\u003eKT-83388\u003c/code\u003e\u003c/a\u003e Analysis API: properly support KMP in KotlinPackageProvider\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/5687445832cd835b4509b9fbc264cdf1a8201093\"\u003e\u003ccode\u003e5687445\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ba30392c459dd7c1ae74c1501e83453144416bc9\"\u003e\u003ccode\u003eba30392\u003c/code\u003e\u003c/a\u003e [Wasm] Support regenerate unchanged modules flag on KGP\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6307e7310d14eef05f199ebccd9518379772d3a7\"\u003e\u003ccode\u003e6307e73\u003c/code\u003e\u003c/a\u003e [Wasm] Implement Xwasm-IC-generate-unchanged-modules flag\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/39d7aee8470b7ce61fea8f76c317456e2756f7c0\"\u003e\u003ccode\u003e39d7aee\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a2956bed85f99752b78881075665d81a82e98ab2\"\u003e\u003ccode\u003ea2956be\u003c/code\u003e\u003c/a\u003e [Gradle] Update karma.conf.js to use 'require(...)' instead plain strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9b1361ce7a6cfd2edd6f8cdb05198573fb839b61\"\u003e\u003ccode\u003e9b1361c\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Updated regression test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a4c153af52ad4694c0cca14c25812db54b19f90e\"\u003e\u003ccode\u003ea4c153a\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Fix toochain to 2.4.0 for abiValidation compat config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bc04b90d245cd27d8339fe51bd43a90dd4c04e9f\"\u003e\u003ccode\u003ebc04b90\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bbcb94baa2eed1cc5ccb39147dcf5a5a184d7a14\"\u003e\u003ccode\u003ebbcb94b\u003c/code\u003e\u003c/a\u003e [CRI] explicitly disable CRI generation for non-JVM targets to avoid false-po...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6c2c458f1d2e4b4f8638fb16f12ff1dd375c4ae2\"\u003e\u003ccode\u003e6c2c458\u003c/code\u003e\u003c/a\u003e Scripting: fix jvmTarget processing from script annotations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v1.9.22...v2.4.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger.hilt.android` from 2.50 to 2.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger.hilt.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5203\"\u003e#5203\u003c/a\u003e: Fixes regression in Dagger 2.60 where the Hilt compiler options (like fastInit) failed to propagate to the Hilt aggregation compilation tasks. (e181a0d88)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5204\"\u003e#5204\u003c/a\u003e: Fixes \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e import error by removing the annotation from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e (3f2dd8fba)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7a89b6cea7d47167f2d5f9912f61f3fee333d88\"\u003e\u003ccode\u003ef7a89b6\u003c/code\u003e\u003c/a\u003e 2.60.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/76780171d7c3ff0dc0240644f703cf181fd8b8e8\"\u003e\u003ccode\u003e7678017\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/974fe294b70f2a3ea43731a4f5b95e75c2bcb38d\"\u003e\u003ccode\u003e974fe29\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/823484c63fbdcc61d413bba40d164272f22e51a8\"\u003e\u003ccode\u003e823484c\u003c/code\u003e\u003c/a\u003e Make Android*InjectionTest$ApplicationReturnsNull public.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/c26f8d7be8ff1856667ddb3b070a410b3aeabfcc\"\u003e\u003ccode\u003ec26f8d7\u003c/code\u003e\u003c/a\u003e Add test for \u003ccode\u003e@AssistedFactory\u003c/code\u003e compilations without compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e181a0d884a3f14c8a7967af5d45f0a8c9a600ac\"\u003e\u003ccode\u003ee181a0d\u003c/code\u003e\u003c/a\u003e Fix Hilt compiler option propagation to Hilt aggregation tasks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/812e2f337718a79dd45ab8488398b5a893291ae8\"\u003e\u003ccode\u003e812e2f3\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3f2dd8fbab0a71ec09dc4f9dc543d89ec108c7f0\"\u003e\u003ccode\u003e3f2dd8f\u003c/code\u003e\u003c/a\u003e Delete \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e90e102c73d67ccb3aaad1835391e6cee2a17b42\"\u003e\u003ccode\u003ee90e102\u003c/code\u003e\u003c/a\u003e Update Dagger version in yml config and REAME.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.50...dagger-2.60.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.gms.google-services` from 4.4.0 to 4.5.0\n\nUpdates `com.google.firebase.crashlytics` from 2.9.9 to 3.0.8\n\nUpdates `androidx.core:core-ktx` from 1.12.0 to 1.19.0\n\nUpdates `androidx.compose:compose-bom` from 2023.10.01 to 2026.08.00\n\nUpdates `com.google.android.material:material` from 1.11.0 to 1.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/material-components/material-components-android/releases\"\u003ecom.google.android.material:material's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.14.0\u003c/h2\u003e\n\u003ch1\u003eNew in 1.14.0!\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eExpressive Themes (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/getting-started.md#material3expressive-themes\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Lists (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/List.md\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Button Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/CommonButton.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Icon Button Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/IconButton.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Button Group Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/ButtonGroup.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive FAB Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/FloatingActionButton.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Top App Bar Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/TopAppBar.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Navigation Bar (BottomNavigationView) Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/BottomNavigation.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Navigation Rail Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/NavigationRail.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Search Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/Search.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Progress Indicator Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/ProgressIndicator.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Slider Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/Slider.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEmphasized Typescale (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/theming/Typography.md#emphasized-scale\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImportant\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRequired \u003ccode\u003eminSdkVersion\u003c/code\u003e is now 23 or higher, for Material and \u003ca href=\"https://developer.android.com/jetpack/androidx/versions#version-table\"\u003eAndroidX\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eLibrary is now built with Android Gradle Plugin (AGP) 8.11.1 and Gradle 8.13.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDependency Updates\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eDependency\u003c/th\u003e\n\u003cth\u003ePrevious version\u003c/th\u003e\n\u003cth\u003eNew version\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.constraintlayout:constraintlayout\u003c/td\u003e\n\u003ctd\u003e2.1.0\u003c/td\u003e\n\u003ctd\u003e2.2.1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.core:core\u003c/td\u003e\n\u003ctd\u003e1.6.0\u003c/td\u003e\n\u003ctd\u003e1.16.0\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.customview:customview\u003c/td\u003e\n\u003ctd\u003eN/A\u003c/td\u003e\n\u003ctd\u003e1.2.0\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ecom.android.tools.build:gradle\u003c/td\u003e\n\u003ctd\u003e8.7.3\u003c/td\u003e\n\u003ctd\u003e8.11.1\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eLibrary Updates\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eAppBar\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eFixed the bug that setBackground will reset the internal MaterialShapeDrawable for lift-on-scroll feature. (1adc50110ed6491661f89aa535355b1480fac73a)\u003c/li\u003e\n\u003cli\u003eAdd support for navigation button with circle background (015e0534e1a6205224097f258102f913832f99ed)\u003c/li\u003e\n\u003cli\u003eImprove keyboard navigation in TopAppBar catalog demos (98a73a61d272d3e38ee87dd4b322f7787c374a9c)\u003c/li\u003e\n\u003cli\u003eRemoved special key shortcut and keyboard navigation cluster for top app bar for correct keyboard navigation a11y. (ee52adbf051f744f2345ec5b7f4ab4df3b101d4d)\u003c/li\u003e\n\u003cli\u003eUpdated ripple color on actions in M3 toolbar. (3b971c9fe9d6ae9a175d96a448a2e740fa97996f)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBottomAppBar\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eRemove special key shortcut and keyboard navigation cluster for bottom app bar for correct keyboard navigation a11y. (5c73d7a9284fb8e8409452bb95751bf70912acfd)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBottomNavigationView\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eFix navigation item layout in non-compact windows (78189012dada1fae4516eaccab7b8f75c481aa73)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBottomSheet\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecated enableEdgeToEdge for bottom sheet dialogs on API 35+. (603f1ef9d5223fc06fa432c4175473eda2138330)\u003c/li\u003e\n\u003cli\u003ePrevent ACTION_DOWN events on the BottomSheetHandleDragView from setting touchingScrollChild to true. (af7f254bf660704368d46e630d34a81c479fa1c7)\u003c/li\u003e\n\u003cli\u003eFixed keyboard animation on Android 14 (a0b4dfa8769f98851efe97569c900f75eb0d5ef2)\u003c/li\u003e\n\u003cli\u003eFixed crash when protections are set before setContentView is called (d2119098489f6f6b55d77f2c7966b8ddf16c90ed)\u003c/li\u003e\n\u003cli\u003eAdded half-expanded state description for accessibility (95e7b452088d88005982a3f29ec212ef7ee8696d)\u003c/li\u003e\n\u003cli\u003eAdded support for androidx.core ProtectionLayout API and update dependency to 1.16 (e7f9f639d2f4a3b9f619ce704df82cbb14e49222)\u003c/li\u003e\n\u003cli\u003eMake handle respond to keyboard input (1ee07687af2c4c84f515e45c1b809d65aeecbbf4)\u003c/li\u003e\n\u003cli\u003eDelete duplicate \u0026quot;Handling insets and fullscreen\u0026quot; section (5e7e8238f7be448af6b4db4b2ad6128737c0bc50)\u003c/li\u003e\n\u003cli\u003eAdded support for Nested Scrolling with multiple nested scroll children. (4e4e8f3388beb7e82a87cb67142aa34444a79740)\u003c/li\u003e\n\u003cli\u003eMake behavior_draggableOnNestedScroll public (a67afdff0d207239d0f427a37e44074936db3166)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/66c334b7946dabf33adfe1a2b7cad6bcaa4ea3ad\"\u003e\u003ccode\u003e66c334b\u003c/code\u003e\u003c/a\u003e [Release] Update library version to 1.14.0 stable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/12e57b5143609a96de8516426336bcf3b3e321f7\"\u003e\u003ccode\u003e12e57b5\u003c/code\u003e\u003c/a\u003e [Focus Rings] Add setters and getters for stroke widths and inner inset\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/f4652d6af613395835b17ce329ceb03f43fc4a84\"\u003e\u003ccode\u003ef4652d6\u003c/code\u003e\u003c/a\u003e [NavigationView] Improve focus saving when opening NavigationView\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/14b9ac97b0863fa7fea6f59954441cea9f4e7e14\"\u003e\u003ccode\u003e14b9ac9\u003c/code\u003e\u003c/a\u003e [Focus Rings] Add setters for outer and inner stroke colors and for refreshin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/d6de1da0f5532090d8b7de697e13c180f56e11e1\"\u003e\u003ccode\u003ed6de1da\u003c/code\u003e\u003c/a\u003e [A11y][BottomSheet] Auto-expand when a focused view is off-screen in non-touc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/41cfb65e8393cd7ff0f9dc082b400c852405e9cc\"\u003e\u003ccode\u003e41cfb65\u003c/code\u003e\u003c/a\u003e [A11y][NavigationView] Request and restore focus when opened and closed in Dr...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/8f63e9485bf6da5a9a0aaefa4bbf26c8ec1364a5\"\u003e\u003ccode\u003e8f63e94\u003c/code\u003e\u003c/a\u003e [Catalog] Fix lift on scroll glitchiness in All Components demo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/80aa0cc0233af0e81a846271de0d5218beeceeaf\"\u003e\u003ccode\u003e80aa0cc\u003c/code\u003e\u003c/a\u003e [Release] Update library version to 1.14.0-rc01\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/fd44c9d58699e18de06ca5de8687fe79f390568b\"\u003e\u003ccode\u003efd44c9d\u003c/code\u003e\u003c/a\u003e [Button] [SplitButton] Fix inset and optical centering issue for SplitButton ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/e6ae416e7fc791d733eedde96ffea66d313ef231\"\u003e\u003ccode\u003ee6ae416\u003c/code\u003e\u003c/a\u003e [SearchView] Make sure IME is hidden when EditText loses focus\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/material-components/material-components-android/compare/1.11.0...1.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.navigation:navigation-compose` from 2.7.6 to 2.10.0\n\nUpdates `com.google.dagger:hilt-android` from 2.50 to 2.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5203\"\u003e#5203\u003c/a\u003e: Fixes regression in Dagger 2.60 where the Hilt compiler options (like fastInit) failed to propagate to the Hilt aggregation compilation tasks. (e181a0d88)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5204\"\u003e#5204\u003c/a\u003e: Fixes \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e import error by removing the annotation from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e (3f2dd8fba)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7a89b6cea7d47167f2d5f9912f61f3fee333d88\"\u003e\u003ccode\u003ef7a89b6\u003c/code\u003e\u003c/a\u003e 2.60.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/76780171d7c3ff0dc0240644f703cf181fd8b8e8\"\u003e\u003ccode\u003e7678017\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/974fe294b70f2a3ea43731a4f5b95e75c2bcb38d\"\u003e\u003ccode\u003e974fe29\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/823484c63fbdcc61d413bba40d164272f22e51a8\"\u003e\u003ccode\u003e823484c\u003c/code\u003e\u003c/a\u003e Make Android*InjectionTest$ApplicationReturnsNull public.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/c26f8d7be8ff1856667ddb3b070a410b3aeabfcc\"\u003e\u003ccode\u003ec26f8d7\u003c/code\u003e\u003c/a\u003e Add test for \u003ccode\u003e@AssistedFactory\u003c/code\u003e compilations without compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e181a0d884a3f14c8a7967af5d45f0a8c9a600ac\"\u003e\u003ccode\u003ee181a0d\u003c/code\u003e\u003c/a\u003e Fix Hilt compiler option propagation to Hilt aggregation tasks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/812e2f337718a79dd45ab8488398b5a893291ae8\"\u003e\u003ccode\u003e812e2f3\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3f2dd8fbab0a71ec09dc4f9dc543d89ec108c7f0\"\u003e\u003ccode\u003e3f2dd8f\u003c/code\u003e\u003c/a\u003e Delete \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e90e102c73d67ccb3aaad1835391e6cee2a17b42\"\u003e\u003ccode\u003ee90e102\u003c/code\u003e\u003c/a\u003e Update Dagger version in yml config and REAME.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.50...dagger-2.60.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger:hilt-compiler` from 2.50 to 2.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5203\"\u003e#5203\u003c/a\u003e: Fixes regression in Dagger 2.60 where the Hilt compiler options (like fastInit) failed to propagate to the Hilt aggregation compilation tasks. (e181a0d88)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5204\"\u003e#5204\u003c/a\u003e: Fixes \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e import error by removing the annotation from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e (3f2dd8fba)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7a89b6cea7d47167f2d5f9912f61f3fee333d88\"\u003e\u003ccode\u003ef7a89b6\u003c/code\u003e\u003c/a\u003e 2.60.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/76780171d7c3ff0dc0240644f703cf181fd8b8e8\"\u003e\u003ccode\u003e7678017\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/974fe294b70f2a3ea43731a4f5b95e75c2bcb38d\"\u003e\u003ccode\u003e974fe29\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/823484c63fbdcc61d413bba40d164272f22e51a8\"\u003e\u003ccode\u003e823484c\u003c/code\u003e\u003c/a\u003e Make Android*InjectionTest$ApplicationReturnsNull public.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/c26f8d7be8ff1856667ddb3b070a410b3aeabfcc\"\u003e\u003ccode\u003ec26f8d7\u003c/code\u003e\u003c/a\u003e Add test for \u003ccode\u003e@AssistedFactory\u003c/code\u003e compilations without compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e181a0d884a3f14c8a7967af5d45f0a8c9a600ac\"\u003e\u003ccode\u003ee181a0d\u003c/code\u003e\u003c/a\u003e Fix Hilt compiler option propagation to Hilt aggregation tasks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/812e2f337718a79dd45ab8488398b5a893291ae8\"\u003e\u003ccode\u003e812e2f3\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3f2dd8fbab0a71ec09dc4f9dc543d89ec108c7f0\"\u003e\u003ccode\u003e3f2dd8f\u003c/code\u003e\u003c/a\u003e Delete \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e90e102c73d67ccb3aaad1835391e6cee2a17b42\"\u003e\u003ccode\u003ee90e102\u003c/code\u003e\u003c/a\u003e Update Dagger version in yml config and REAME.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.50...dagger-2.60.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.hilt:hilt-navigation-compose` from 1.1.0 to 1.4.0\n\nUpdates `androidx.hilt:hilt-work` from 1.1.0 to 1.4.0\n\nUpdates `androidx.hilt:hilt-compiler` from 1.1.0 to 1.4.0\n\nUpdates `com.squareup.retrofit2:retrofit` from 2.11.0 to 3.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/square/retrofit/releases\"\u003ecom.squareup.retrofit2:retrofit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eChanged\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to OkHttp 4.12 (from 3.14).\u003c/p\u003e\n\u003cp\u003eThis is the version of OkHttp that is written in Kotlin, and as a result Retrofit now has a transitive Kotlin dependency. However, this is also the \u003cem\u003esupported\u003c/em\u003e version of OkHttp whereas the previous version was out of support for nearly 4 years.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNote: The 3.x versions of Retrofit maintain forward binary-compatibility with the 2.x versions.\nThis means libraries compiled against 2.x can still be used with the 3.x versions.\u003c/p\u003e\n\u003ch2\u003e2.12.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFirst-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using \u003ccode\u003eCall.enqueue\u003c/code\u003e directly.\u003c/p\u003e\n\u003cp\u003eThe following converters support this feature through a new \u003ccode\u003ewithStreaming()\u003c/code\u003e factory method:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGson\u003c/li\u003e\n\u003cli\u003eJackson\u003c/li\u003e\n\u003cli\u003eMoshi\u003c/li\u003e\n\u003cli\u003eProtobuf\u003c/li\u003e\n\u003cli\u003eWire\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrimitive types used with \u003ccode\u003e@Tag\u003c/code\u003e now work by storing the value boxed with the boxed class as the key.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/lysine-dev/retrofit/blob/trunk/CHANGELOG.md\"\u003ecom.squareup.retrofit2:retrofit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/releases/tag/3.0.0\"\u003e3.0.0\u003c/a\u003e - 2025-05-15\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eChanged\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to OkHttp 4.12 (from 3.14).\u003c/p\u003e\n\u003cp\u003eThis is the version of OkHttp that is written in Kotlin, and as a result Retrofit now has a transitive Kotlin dependency. However, this is also the \u003cem\u003esupported\u003c/em\u003e version of OkHttp whereas the previous version was out of support for nearly 4 years.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNote: The 3.x versions of Retrofit maintain forward binary-compatibility with the 2.x versions.\nThis means libraries compiled against 2.x can still be used with the 3.x versions.\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/releases/tag/2.12.0\"\u003e2.12.0\u003c/a\u003e - 2025-05-15\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFirst-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using \u003ccode\u003eCall.enqueue\u003c/code\u003e directly.\u003c/p\u003e\n\u003cp\u003eThe following converters support this feature through a new \u003ccode\u003ewithStreaming()\u003c/code\u003e factory method:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGson\u003c/li\u003e\n\u003cli\u003eJackson\u003c/li\u003e\n\u003cli\u003eMoshi\u003c/li\u003e\n\u003cli\u003eProtobuf\u003c/li\u003e\n\u003cli\u003eWire\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrimitive types used with \u003ccode\u003e@Tag\u003c/code\u003e now work by storing the value boxed with the boxed class as the key.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/3ab0f1a2c18666adb79ebf4eacef6fbc40d3e801\"\u003e\u003ccode\u003e3ab0f1a\u003c/code\u003e\u003c/a\u003e Prepare version 3.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/e5c02d08f3777ce00a31fb37d77f15eecdf4e383\"\u003e\u003ccode\u003ee5c02d0\u003c/code\u003e\u003c/a\u003e Commit 2.x docs (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4378\"\u003e#4378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/5bc3f183cfa24ab1f382c2029dc82ee292caef1b\"\u003e\u003ccode\u003e5bc3f18\u003c/code\u003e\u003c/a\u003e Fix links on the proudction site (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4377\"\u003e#4377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/7c3b2290bd6cd985ebaa93bfc183abd1bf04b977\"\u003e\u003ccode\u003e7c3b229\u003c/code\u003e\u003c/a\u003e Remove compileOnly stdlib dependency (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4376\"\u003e#4376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/84185470adc33a0f1b3d8766f2d722c770e2e89a\"\u003e\u003ccode\u003e8418547\u003c/code\u003e\u003c/a\u003e Update okhttp monorepo to v4 (major) (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4375\"\u003e#4375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/06216a3b24ad828e511fd25b4858a1ed104c8719\"\u003e\u003ccode\u003e06216a3\u003c/code\u003e\u003c/a\u003e Try to fix removal of latest dir during release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/1697bdc4913a34871125c96c7be16b688c6e82bc\"\u003e\u003ccode\u003e1697bdc\u003c/code\u003e\u003c/a\u003e Prepare next development version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/5a6ce364ad5208999a8e0847de760f97d39ecffe\"\u003e\u003ccode\u003e5a6ce36\u003c/code\u003e\u003c/a\u003e Prepare version 2.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/4fb8aed0cc6ebcc581d128922768867ae14e85c1\"\u003e\u003ccode\u003e4fb8aed\u003c/code\u003e\u003c/a\u003e Fix artifact name (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4372\"\u003e#4372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/bf11ef4cfaa3c50967f79e87b3e27f33670b42bc\"\u003e\u003ccode\u003ebf11ef4\u003c/code\u003e\u003c/a\u003e Dedicated website build, final status job (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/square/retrofit/compare/2.11.0...3.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.squareup.retrofit2:converter-gson` from 2.11.0 to 3.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/square/retrofit/releases\"\u003ecom.squareup.retrofit2:converter-gson's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eChanged\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to OkHttp 4.12 (from 3.14).\u003c/p\u003e\n\u003cp\u003eThis is the version of OkHttp that is written in Kotlin, and as a result Retrofit now has a transitive Kotlin dependency. However, this is also the \u003cem\u003esupported\u003c/em\u003e version of OkHttp whereas the previous version was out of support for nearly 4 years.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNote: The 3.x versions of Retrofit maintain forward binary-compatibility with the 2.x versions.\nThis means libraries compiled against 2.x can still be used with the 3.x versions.\u003c/p\u003e\n\u003ch2\u003e2.12.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFirst-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using \u003ccode\u003eCall.enqueue\u003c/code\u003e directly.\u003c/p\u003e\n\u003cp\u003eThe following converters support this feature through a new \u003ccode\u003ewithStreaming()\u003c/code\u003e factory method:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGson\u003c/li\u003e\n\u003cli\u003eJackson\u003c/li\u003e\n\u003cli\u003eMoshi\u003c/li\u003e\n\u003cli\u003eProtobuf\u003c/li\u003e\n\u003cli\u003eWire\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrimitive types used with \u003ccode\u003e@Tag\u003c/code\u003e now work by storing the value boxed with the boxed class as the key.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/lysine-dev/retrofit/blob/trunk/CHANGELOG.md\"\u003ecom.squareup.retrofit2:converter-gson's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/releases/tag/3.0.0\"\u003e3.0.0\u003c/a\u003e - 2025-05-15\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eChanged\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to OkHttp 4.12 (from 3.14).\u003c/p\u003e\n\u003cp\u003eThis is the version of OkHttp that is written in Kotlin, and as a result Retrofit now has a transitive Kotlin dependency. However, this is also the \u003cem\u003esupported\u003c/em\u003e version of OkHttp whereas the previous version was out of support for nearly 4 years.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNote: The 3.x versions of Retrofit maintain forward binary-compatibility with the 2.x versions.\nThis means libraries compiled against 2.x can still be used with the 3.x versions.\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/releases/tag/2.12.0\"\u003e2.12.0\u003c/a\u003e - 2025-05-15\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFirst-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using \u003ccode\u003eCall.enqueue\u003c/code\u003e directly.\u003c/p\u003e\n\u003cp\u003eThe following converters support this feature through a new \u003ccode\u003ewithStreaming()\u003c/code\u003e factory method:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGson\u003c/li\u003e\n\u003cli\u003eJackson\u003c/li\u003e\n\u003cli\u003eMoshi\u003c/li\u003e\n\u003cli\u003eProtobuf\u003c/li\u003e\n\u003cli\u003eWire\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrimitive types used with \u003ccode\u003e@Tag\u003c/code\u003e now work by storing the value boxed with the boxed class as the key.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/3ab0f1a2c18666adb79ebf4eacef6fbc40d3e801\"\u003e\u003ccode\u003e3ab0f1a\u003c/code\u003e\u003c/a\u003e Prepare version 3.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/e5c02d08f3777ce00a31fb37d77f15eecdf4e383\"\u003e\u003ccode\u003ee5c02d0\u003c/code\u003e\u003c/a\u003e Commit 2.x docs (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4378\"\u003e#4378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/5bc3f183cfa24ab1f382c2029dc82ee292caef1b\"\u003e\u003ccode\u003e5bc3f18\u003c/code\u003e\u003c/a\u003e Fix links on the proudction site (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4377\"\u003e#4377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/7c3b2290bd6cd985ebaa93bfc183abd1bf04b977\"\u003e\u003ccode\u003e7c3b229\u003c/code\u003e\u003c/a\u003e Remove compileOnly stdlib dependency (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4376\"\u003e#4376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/84185470adc33a0f1b3d8766f2d722c770e2e89a\"\u003e\u003ccode\u003e8418547\u003c/code\u003e\u003c/a\u003e Update okhttp monorepo to v4 (major) (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4375\"\u003e#4375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/06216a3b24ad828e511fd25b4858a1ed104c8719\"\u003e\u003ccode\u003e06216a3\u003c/code\u003e\u003c/a\u003e Try to fix removal of latest dir during release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/1697bdc4913a34871125c96c7be16b688c6e82bc\"\u003e\u003ccode\u003e1697bdc\u003c/code\u003e\u003c/a\u003e Prepare next development version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/5a6ce364ad5208999a8e0847de760f97d39ecffe\"\u003e\u003ccode\u003e5a6ce36\u003c/code\u003e\u003c/a\u003e Prepare version 2.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/4fb8aed0cc6ebcc581d128922768867ae14e85c1\"\u003e\u003ccode\u003e4fb8aed\u003c/code\u003e\u003c/a\u003e Fix artifact name (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4372\"\u003e#4372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/bf11ef4cfaa3c50967f79e87b3e27f33670b42bc\"\u003e\u003ccode\u003ebf11ef4\u003c/code\u003e\u003c/a\u003e Dedicated website build, final status job (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/square/retrofit/compare/2.11.0...3.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.squareup.okhttp3:logging-interceptor` from 4.12.0 to 5.5.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/lysine-dev/okhttp/blob/main/CHANGELOG.md\"\u003ecom.squareup.okhttp3:logging-interceptor's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 5.5.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-08-16\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eThis release introduces \u003cstrong\u003eopt-in\u003c/strong\u003e support for [Encrypted Client Hello (ECH)]. This new feature\nimproves user privacy by encrypting domain names in transit. With regular TLS, your coffee shop’s\nWi-Fi router can see that you’re visiting \u003cem\u003ewikipedia.com\u003c/em\u003e, but it cannot see which page you’re\nlooking at. With ECH, the router observes only the IP address. This additional privacy is most\neffective on sites hosted by big CDNs because the IP address doesn’t imply a particular website.\u003c/p\u003e\n\u003cp\u003eThis requires ECH support in the platform’s TLS stack. Today this is only Android 17 (API 37,\nreleased June 2026). When other TLS stacks add ECH support, we'll integrate them.\u003c/p\u003e\n\u003cp\u003eECH took a lot of work to implement because the encryption keys are published over DNS in the\n[HTTPS resource record], and we needed to write new code to fetch these records. This release\nincludes a major update to OkHttp’s DNS API: it now supports multiple resource record types (not\njust IP addresses!), asynchronous streaming results, and in-memory caching.\u003c/p\u003e\n\u003cp\u003eTo opt in, you can use \u003ccode\u003eDnsOverHttps\u003c/code\u003e:\u003c/p\u003e\n\u003cpre lang=\"kotlin\"\u003e\u003ccode\u003e// DnsOverHttps itself uses OkHttpClient. Build both clients upon the\n// same bootstrap client so they share a connection pool and dispatcher.\nval bootstrapClient = OkHttpClient()\n\u003cp\u003e// This sample uses Cloudflare's 1.1.1.1 DnsOverHttps service.\nval client = bootstrapClient.newBuilder()\n.dns(DnsOverHttps.Builder()\n.client(bootstrapClient)\n.url(\u0026quot;\u003ca href=\"https://1.1.1.1/dns-query\u0026amp;quot;.toHttpUrl()\"\u003ehttps://1.1.1.1/dns-query\u0026amp;quot;.toHttpUrl()\u003c/a\u003e)\n.build())\n.build()\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eYou could also opt in with our new \u003ccode\u003eAndroidDns\u003c/code\u003e API. Unfortunately, the privacy benefits of ECH are\nthwarted because its DNS queries are not encrypted by default.\u003c/p\u003e\n\u003cpre lang=\"kotlin\"\u003e\u003ccode\u003e// AndroidDns fetches the HTTPS DNS resource records necessary for ECH.\nval client = OkHttpClient.Builder()\n  .dns(AndroidDns())\n  .build()\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003eNew: OkHttp artifacts are now signed with our [new signing key]. This project and three sibling\nprojects ([Retrofit], [Okio], and [SQLDelight]) recently joined [the Commonhaus Foundation].\u003c/li\u003e\n\u003cli\u003eFix: MockWebServer’s \u003ccode\u003e@StartStop\u003c/code\u003e annotation now supports \u003ccode\u003e@Nested\u003c/code\u003e JUnit 5 tests.\u003c/li\u003e\n\u003cli\u003eFix: Our default TLS hostname verifier now reject hosts that fail IP canonicalization.\u003c/li\u003e\n\u003cli\u003eFix: Closing a multipart part's sink no longer closes the entire request body.\u003c/li\u003e\n\u003cli\u003eFix: Flush HTTP/1 request bodies before detaching the timeout. We had a bug where timeouts\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/a94bdf152084d11acecd44dcd09ffef203f4f0aa\"\u003e\u003ccode\u003ea94bdf1\u003c/code\u003e\u003c/a\u003e Prepare for release 5.5.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/ecc3b05adfe6b2607b8ec251562c2cccf7c1923a\"\u003e\u003ccode\u003eecc3b05\u003c/code\u003e\u003c/a\u003e Use a fixed size for DoH request body (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9687\"\u003e#9687\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/9926082660dfa6f1cc848c6f465cf5ccb998e415\"\u003e\u003ccode\u003e9926082\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Use a fixed size for DoH request body\u0026quot; (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9686\"\u003e#9686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/0070c2e7b4c162ee03abf1c88fd94083e94697f4\"\u003e\u003ccode\u003e0070c2e\u003c/code\u003e\u003c/a\u003e Use a fixed size for DoH request body\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/15764539c69842dad607462f102a2507223dbfe7\"\u003e\u003ccode\u003e1576453\u003c/code\u003e\u003c/a\u003e Order ServiceMetadata records per the spec (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9683\"\u003e#9683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/fb582e976a9a82d691342a4d57b3c72208ce416c\"\u003e\u003ccode\u003efb582e9\u003c/code\u003e\u003c/a\u003e Flip wiring of Dns.SYSTEM (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9682\"\u003e#9682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/4e884abb1a207c321acffb070c476acb4b89fa3f\"\u003e\u003ccode\u003e4e884ab\u003c/code\u003e\u003c/a\u003e retryOnConnectionFailure doesn't impact ECH retries (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9681\"\u003e#9681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/0433cee8131b63fa2c0634fa2f9b3a01f9a8b1f3\"\u003e\u003ccode\u003e0433cee\u003c/code\u003e\u003c/a\u003e Only one contributing.md doc (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9678\"\u003e#9678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/a2cf5aa9f8711dabe514871e9dc4a9336a0e403f\"\u003e\u003ccode\u003ea2cf5aa\u003c/code\u003e\u003c/a\u003e Don't recover after an ECH public_name fails to verify (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9680\"\u003e#9680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/5410de9760bce8719129c3d08eb19e5bace75f6e\"\u003e\u003ccode\u003e5410de9\u003c/code\u003e\u003c/a\u003e Test ECH + HTTP proxy (\u003ca href=\"https://redirect.github.com/lysine-dev/okhttp/issues/9671\"\u003e#9671\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/lysine-dev/okhttp/compare/parent-4.12.0...parent-5.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.room:room-runtime` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `io.coil-kt:coil-compose` from 2.5.0 to 2.7.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coil-kt/coil/releases\"\u003eio.coil-kt:coil-compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.7.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#270---july-17-2024\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e2.6.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#260---february-23-2024\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md\"\u003eio.coil-kt:coil-compose's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[2.7.0] - July 17, 2024\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSlightly optimize internal coroutines usage to improve the performance of \u003ccode\u003eImageLoader.execute\u003c/code\u003e, \u003ccode\u003eAsyncImage\u003c/code\u003e, \u003ccode\u003eSubcomposeAsyncImage\u003c/code\u003e, and \u003ccode\u003erememberAsyncImagePainter\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/2205\"\u003e#2205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix duplicate network calls for chunked responses. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/2363\"\u003e#2363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Kotlin to 2.0.0.\u003c/li\u003e\n\u003cli\u003eUpdate Compose UI to 1.6.8.\u003c/li\u003e\n\u003cli\u003eUpdate Okio to 3.9.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.0.0-alpha08] - July 8, 2024\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING\u003c/strong\u003e: Rename \u003ccode\u003eImageRequest\u003c/code\u003e and \u003ccode\u003eImageLoader\u003c/code\u003e \u003ccode\u003edispatcher\u003c/code\u003e methods to \u003ccode\u003ecoroutineContext\u003c/code\u003e. For instance, \u003ccode\u003eImageRequest.Builder.dispatcher\u003c/code\u003e is now \u003ccode\u003eImageRequest.Builder.coroutineContext\u003c/code\u003e. This was renamed as the method now accepts any \u003ccode\u003eCoroutineContext\u003c/code\u003e and no longer requires a \u003ccode\u003eDispatcher\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eFix: Fix \u003ccode\u003eIllegalStateException: Reading a state that was created after the snapshot was taken or in a snapshot that has not yet been applied\u003c/code\u003e which could occur due to a race condition.\n\u003cul\u003e\n\u003cli\u003eNOTE: This reintroduces a soft dependency on \u003ccode\u003eDispatchers.Main.immediate\u003c/code\u003e. As a result you should re-add a dependency on \u003ca href=\"https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-swing/\"\u003e\u003ccode\u003ekotlinx-coroutines-swing\u003c/code\u003e\u003c/a\u003e on JVM. If it's not imported then \u003ccode\u003eImageRequest\u003c/code\u003es won't be dispatched immediately and will have one frame of delay before setting the \u003ccode\u003eImageRequest.placeholder\u003c/code\u003e or resolving from the memory cache.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.0.0-alpha07] - June 26, 2024\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING\u003c/strong\u003e: \u003ccode\u003eAsyncImagePainter\u003c/code\u003e no longer waits for \u003ccode\u003eonDraw\u003c/code\u003e by default and instead uses \u003ccode\u003eSize.ORIGINAL\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003eThis fixes \u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/1910\"\u003ecompatibility issues with Roborazzi/Paparazzi\u003c/a\u003e and overall improves test reliability.\u003c/li\u003e\n\u003cli\u003eTo revert back to waiting for \u003ccode\u003eonDraw\u003c/code\u003e, set \u003ccode\u003eDrawScopeSizeResolver\u003c/code\u003e as your \u003ccode\u003eImageRequest.sizeResolver\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING\u003c/strong\u003e: Refactor the multiplatform \u003ccode\u003eImage\u003c/code\u003e API. Notably, \u003ccode\u003easCoilImage\u003c/code\u003e has been renamed to \u003ccode\u003easImage\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING\u003c/strong\u003e: \u003ccode\u003eAsyncImagePainter.state\u003c/code\u003e has been changed to \u003ccode\u003eStateFlow\u0026lt;AsyncImagePainter.State\u0026gt;\u003c/code\u003e. Use \u003ccode\u003ecollectAsState\u003c/code\u003e to observe its value. This improves performance.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING\u003c/strong\u003e: \u003ccode\u003eAsyncImagePainter.imageLoader\u003c/code\u003e and \u003ccode\u003eAsyncImagePainter.request\u003c/code\u003e have been combined into \u003ccode\u003eStateFlow\u0026lt;AsyncImagePainter.Inputs\u0026gt;\u003c/code\u003e. Use \u003ccode\u003ecollectAsState\u003c/code\u003e to observe its value. This improves performance.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING\u003c/strong\u003e: Remove support for \u003ccode\u003eandroid.resource://example.package.name/drawable/image\u003c/code\u003e URIs as it prevents resource shrinking optimizations.\n\u003cul\u003e\n\u003cli\u003eIf you still needs its functionality you can \u003ca href=\"https://github.com/coil-kt/coil/blob/main/coil-core/src/androidInstrumentedTest/kotlin/coil3/map/ResourceUriMapper.kt\"\u003emanually include \u003ccode\u003eResourceUriMapper\u003c/code\u003e in your component registry\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNew\u003c/strong\u003e: Introduce \u003ccode\u003eAsyncImagePreviewHandler\u003c/code\u003e to support controlling \u003ccode\u003eAsyncImagePainter\u003c/code\u003e's preview rendering behavior.\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003eLocalAsyncImagePreviewHandler\u003c/code\u003e to override the preview behavior.\u003c/li\u003e\n\u003cli\u003eAs part of this change and other \u003ccode\u003ecoil-compose\u003c/code\u003e improvements, \u003ccode\u003eAsyncImagePainter\u003c/code\u003e now attempts to execute execute the \u003ccode\u003eImageRequest\u003c/code\u003e by default instead of defaulting to displaying \u003ccode\u003eImageRequest.placeholder\u003c/code\u003e. \u003ca href=\"https://developer.android.com/develop/ui/compose/tooling/previews#preview-limitations\"\u003eRequests that use the network or files are expected to fail\u003c/a\u003e in the preview environment, however Android resources should work.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNew\u003c/strong\u003e: Support extracting video image by frame index. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/2183\"\u003e#2183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNew\u003c/strong\u003e: Support passing \u003ccode\u003eCoroutineContext\u003c/code\u003e to any \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e methods. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/2241\"\u003e#2241\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNew\u003c/strong\u003e: Support the weak reference memory cache on JS and WASM JS.\u003c/li\u003e\n\u003cli\u003eDon't dispatch to \u003ccode\u003eDispatchers.Main.immediate\u003c/code\u003e in Compose. As a side-effect, \u003ca href=\"https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-swing/\"\u003e\u003ccode\u003ekotlinx-coroutines-swing\u003c/code\u003e\u003c/a\u003e no longer needs to be imported on JVM.\u003c/li\u003e\n\u003cli\u003eDon't call \u003ccode\u003easync\u003c/code\u003e and create a disposable in Compose to improve performance (thanks \u003ca href=\"https://github.com/mlykotom\"\u003e\u003ccode\u003e@​mlykotom\u003c/code\u003e\u003c/a\u003e!). (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/2205\"\u003e#2205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix passing global \u003ccode\u003eImageLoader\u003c/code\u003e extras to \u003ccode\u003eOp...\n\n_Description has been truncated_","html_url":"https://github.com/pranaypr6/Moment/pull/36","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/pranaypr6%2FMoment/issues/36","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/36/packages"}},{"old_version":"3.6.1","new_version":"3.7.0","update_type":"minor","path":null,"pr_created_at":"2026-09-01T10:08:44.000Z","version_change":"3.6.1 → 3.7.0","issue":{"uuid":"5310536525","node_id":"PR_kwDOT-agP88AAAABBurKuA","number":18,"state":"closed","title":"build(deps): bump the androidx group across 1 directory with 12 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":"2026-09-10T01:16:07.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-01T10:08:44.000Z","updated_at":"2026-09-10T01:16:08.000Z","time_to_close":745643,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"androidx","update_count":12,"packages":[{"name":"androidx.core:core-ktx","old_version":"1.13.1","new_version":"1.19.0"},{"name":"androidx.compose:compose-bom","old_version":"2024.09.03","new_version":"2026.08.00"},{"name":"androidx.navigation:navigation-compose","old_version":"2.8.2","new_version":"2.10.0"},{"name":"androidx.core:core-splashscreen","old_version":"1.0.1","new_version":"1.2.0"},{"name":"androidx.room:room-runtime","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-ktx","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-compiler","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-testing","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.hilt:hilt-navigation-compose","old_version":"1.2.0","new_version":"1.4.0"},{"name":"androidx.test.ext:junit","old_version":"1.2.1","new_version":"1.3.0"},{"name":"androidx.test:core","old_version":"1.6.1","new_version":"1.7.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.6.1","new_version":"3.7.0"}],"path":null,"ecosystem":"maven"},"body":"Bumps the androidx group with 12 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| androidx.core:core-ktx | `1.13.1` | `1.19.0` |\n| androidx.compose:compose-bom | `2024.09.03` | `2026.08.00` |\n| androidx.navigation:navigation-compose | `2.8.2` | `2.10.0` |\n| androidx.core:core-splashscreen | `1.0.1` | `1.2.0` |\n| androidx.room:room-runtime | `2.6.1` | `2.8.4` |\n| androidx.room:room-ktx | `2.6.1` | `2.8.4` |\n| androidx.room:room-compiler | `2.6.1` | `2.8.4` |\n| androidx.room:room-testing | `2.6.1` | `2.8.4` |\n| androidx.hilt:hilt-navigation-compose | `1.2.0` | `1.4.0` |\n| androidx.test.ext:junit | `1.2.1` | `1.3.0` |\n| androidx.test:core | `1.6.1` | `1.7.0` |\n| androidx.test.espresso:espresso-core | `3.6.1` | `3.7.0` |\n\n\nUpdates `androidx.core:core-ktx` from 1.13.1 to 1.19.0\n\nUpdates `androidx.compose:compose-bom` from 2024.09.03 to 2026.08.00\n\nUpdates `androidx.navigation:navigation-compose` from 2.8.2 to 2.10.0\n\nUpdates `androidx.core:core-splashscreen` from 1.0.1 to 1.2.0\n\nUpdates `androidx.room:room-runtime` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-testing` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-testing` from 2.6.1 to 2.8.4\n\nUpdates `androidx.hilt:hilt-navigation-compose` from 1.2.0 to 1.4.0\n\nUpdates `androidx.test.ext:junit` from 1.2.1 to 1.3.0\n\nUpdates `androidx.test:core` from 1.6.1 to 1.7.0\n\nUpdates `androidx.test.espresso:espresso-core` from 3.6.1 to 3.7.0","html_url":"https://github.com/nagarjunavs/NFCLocatorAndroid/pull/18","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/nagarjunavs%2FNFCLocatorAndroid/issues/18","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/18/packages"}},{"old_version":"3.6.1","new_version":"3.7.0","update_type":"minor","path":null,"pr_created_at":"2026-08-31T14:51:08.000Z","version_change":"3.6.1 → 3.7.0","issue":{"uuid":"5301546277","node_id":"PR_kwDOGe0_Us8AAAABBnewbA","number":308,"state":"closed","title":"Bump the gradle-patch-and-minor group across 1 directory with 28 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-09-04T02:46:32.000Z","author_association":null,"state_reason":null,"created_at":"2026-08-31T14:51:08.000Z","updated_at":"2026-09-04T02:46:41.000Z","time_to_close":302124,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"gradle-patch-and-minor","update_count":28,"packages":[{"name":"androidx.core:core-ktx","old_version":"1.15.0","new_version":"1.19.0"},{"name":"androidx.appcompat:appcompat","old_version":"1.7.0","new_version":"1.8.0"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-core","old_version":"1.9.0","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-android","old_version":"1.9.0","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-test","old_version":"1.9.0","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"org.jetbrains.kotlinx:kotlinx-serialization-json","old_version":"1.7.3","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.serialization"},{"name":"androidx.room:room-runtime","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-ktx","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-compiler","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-testing","old_version":"2.6.1","new_version":"2.8.4"},{"name":"com.google.dagger:hilt-android","old_version":"2.53.1","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"com.google.dagger:hilt-android-compiler","old_version":"2.53.1","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"com.google.dagger.hilt.android","old_version":"2.53.1","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"androidx.hilt:hilt-navigation-compose","old_version":"1.2.0","new_version":"1.4.0"},{"name":"androidx.hilt:hilt-work","old_version":"1.2.0","new_version":"1.4.0"},{"name":"androidx.hilt:hilt-compiler","old_version":"1.2.0","new_version":"1.4.0"},{"name":"androidx.test.ext:junit","old_version":"1.2.1","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.6.1","new_version":"3.7.0"},{"name":"io.mockk:mockk","old_version":"1.13.13","new_version":"1.14.11","repository_url":"https://github.com/mockk/mockk"},{"name":"io.mockk:mockk-android","old_version":"1.13.13","new_version":"1.14.11","repository_url":"https://github.com/mockk/mockk"},{"name":"app.cash.turbine:turbine","old_version":"1.2.0","new_version":"1.2.1","repository_url":"https://github.com/cashapp/turbine"},{"name":"org.robolectric:robolectric","old_version":"4.14.1","new_version":"4.16.1","repository_url":"https://github.com/robolectric/robolectric"},{"name":"org.jetbrains.kotlin.android","old_version":"2.0.21","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.0.21","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.0.21","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.google.devtools.ksp","old_version":"2.0.21-1.0.28","new_version":"2.3.11","repository_url":"https://github.com/google/ksp"},{"name":"com.vanniktech.maven.publish","old_version":"0.30.0","new_version":"0.37.0","repository_url":"https://github.com/vanniktech/gradle-maven-publish-plugin"},{"name":"org.jetbrains.kotlinx.kover","old_version":"0.9.0","new_version":"0.9.9","repository_url":"https://github.com/Kotlin/kotlinx-kover"}],"path":null,"ecosystem":"maven"},"body":"Bumps the gradle-patch-and-minor group with 28 updates in the /Toggly.FeatureManagement.Android directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| androidx.core:core-ktx | `1.15.0` | `1.19.0` |\n| androidx.appcompat:appcompat | `1.7.0` | `1.8.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-core](https://github.com/Kotlin/kotlinx.coroutines) | `1.9.0` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-android](https://github.com/Kotlin/kotlinx.coroutines) | `1.9.0` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-test](https://github.com/Kotlin/kotlinx.coroutines) | `1.9.0` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-serialization-json](https://github.com/Kotlin/kotlinx.serialization) | `1.7.3` | `1.11.0` |\n| androidx.room:room-runtime | `2.6.1` | `2.8.4` |\n| androidx.room:room-ktx | `2.6.1` | `2.8.4` |\n| androidx.room:room-compiler | `2.6.1` | `2.8.4` |\n| androidx.room:room-testing | `2.6.1` | `2.8.4` |\n| [com.google.dagger:hilt-android](https://github.com/google/dagger) | `2.53.1` | `2.60.1` |\n| [com.google.dagger:hilt-android-compiler](https://github.com/google/dagger) | `2.53.1` | `2.60.1` |\n| [com.google.dagger.hilt.android](https://github.com/google/dagger) | `2.53.1` | `2.60.1` |\n| androidx.hilt:hilt-navigation-compose | `1.2.0` | `1.4.0` |\n| androidx.hilt:hilt-work | `1.2.0` | `1.4.0` |\n| androidx.hilt:hilt-compiler | `1.2.0` | `1.4.0` |\n| androidx.test.ext:junit | `1.2.1` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.6.1` | `3.7.0` |\n| [io.mockk:mockk](https://github.com/mockk/mockk) | `1.13.13` | `1.14.11` |\n| [io.mockk:mockk-android](https://github.com/mockk/mockk) | `1.13.13` | `1.14.11` |\n| [app.cash.turbine:turbine](https://github.com/cashapp/turbine) | `1.2.0` | `1.2.1` |\n| [org.robolectric:robolectric](https://github.com/robolectric/robolectric) | `4.14.1` | `4.16.1` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.0.21` | `2.4.10` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.0.21` | `2.4.10` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.0.21` | `2.4.10` |\n| [com.google.devtools.ksp](https://github.com/google/ksp) | `2.0.21-1.0.28` | `2.3.11` |\n| [com.vanniktech.maven.publish](https://github.com/vanniktech/gradle-maven-publish-plugin) | `0.30.0` | `0.37.0` |\n| [org.jetbrains.kotlinx.kover](https://github.com/Kotlin/kotlinx-kover) | `0.9.0` | `0.9.9` |\n\n\nUpdates `androidx.core:core-ktx` from 1.15.0 to 1.19.0\n\nUpdates `androidx.appcompat:appcompat` from 1.7.0 to 1.8.0\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-core` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874\"\u003e\u003ccode\u003e8564f65\u003c/code\u003e\u003c/a\u003e Version 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c\"\u003e\u003ccode\u003ea4c6af9\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9\"\u003e\u003ccode\u003eef917b4\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd\"\u003e\u003ccode\u003e5ebc421\u003c/code\u003e\u003c/a\u003e Update the release procedure description (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80\"\u003e\u003ccode\u003e95f46a0\u003c/code\u003e\u003c/a\u003e Remove old maven repository settings (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672\"\u003e#4672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc\"\u003e\u003ccode\u003eb4f4f0a\u003c/code\u003e\u003c/a\u003e Fix package name of \u003ccode\u003eToMapCollectionSamplesTest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674\"\u003e#4674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/86738dca7dc9ac82249abc8206263fa0065ee631\"\u003e\u003ccode\u003e86738dc\u003c/code\u003e\u003c/a\u003e Added templates to the issue creation wizard (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/330fcc221fb583f0b119f34191f735a73b827378\"\u003e\u003ccode\u003e330fcc2\u003c/code\u003e\u003c/a\u003e Version 1.11.0-rc02\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/e31cef6e9f2d26794be7d75ecbf3033b6432d582\"\u003e\u003ccode\u003ee31cef6\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/dc6e9f61eaf3a67f4bf474a7987aedc3f16cef37\"\u003e\u003ccode\u003edc6e9f6\u003c/code\u003e\u003c/a\u003e Restore Promise-related functions on Wasm/JS as HIDDEN (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/compare/1.9.0...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-android` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874\"\u003e\u003ccode\u003e8564f65\u003c/code\u003e\u003c/a\u003e Version 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c\"\u003e\u003ccode\u003ea4c6af9\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9\"\u003e\u003ccode\u003eef917b4\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd\"\u003e\u003ccode\u003e5ebc421\u003c/code\u003e\u003c/a\u003e Update the release procedure description (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80\"\u003e\u003ccode\u003e95f46a0\u003c/code\u003e\u003c/a\u003e Remove old maven repository settings (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672\"\u003e#4672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc\"\u003e\u003ccode\u003eb4f4f0a\u003c/code\u003e\u003c/a\u003e Fix package name of \u003ccode\u003eToMapCollectionSamplesTest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674\"\u003e#4674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/86738dca7dc9ac82249abc8206263fa0065ee631\"\u003e\u003ccode\u003e86738dc\u003c/code\u003e\u003c/a\u003e Added templates to the issue creation wizard (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/330fcc221fb583f0b119f34191f735a73b827378\"\u003e\u003ccode\u003e330fcc2\u003c/code\u003e\u003c/a\u003e Version 1.11.0-rc02\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/e31cef6e9f2d26794be7d75ecbf3033b6432d582\"\u003e\u003ccode\u003ee31cef6\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/dc6e9f61eaf3a67f4bf474a7987aedc3f16cef37\"\u003e\u003ccode\u003edc6e9f6\u003c/code\u003e\u003c/a\u003e Restore Promise-related functions on Wasm/JS as HIDDEN (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/compare/1.9.0...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-android` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874\"\u003e\u003ccode\u003e8564f65\u003c/code\u003e\u003c/a\u003e Version 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c\"\u003e\u003ccode\u003ea4c6af9\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9\"\u003e\u003ccode\u003eef917b4\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd\"\u003e\u003ccode\u003e5ebc421\u003c/code\u003e\u003c/a\u003e Update the release procedure description (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80\"\u003e\u003ccode\u003e95f46a0\u003c/code\u003e\u003c/a\u003e Remove old maven repository settings (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672\"\u003e#4672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc\"\u003e\u003ccode\u003eb4f4f0a\u003c/code\u003e\u003c/a\u003e Fix package name of \u003ccode\u003eToMapCollectionSamplesTest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674\"\u003e#4674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/86738dca7dc9ac82249abc8206263fa0065ee631\"\u003e\u003ccode\u003e86738dc\u003c/code\u003e\u003c/a\u003e Added templates to the issue creation wizard (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/330fcc221fb583f0b119f34191f735a73b827378\"\u003e\u003ccode\u003e330fcc2\u003c/code\u003e\u003c/a\u003e Version 1.11.0-rc02\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/e31cef6e9f2d26794be7d75ecbf3033b6432d582\"\u003e\u003ccode\u003ee31cef6\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/dc6e9f61eaf3a67f4bf474a7987aedc3f16cef37\"\u003e\u003ccode\u003edc6e9f6\u003c/code\u003e\u003c/a\u003e Restore Promise-related functions on Wasm/JS as HIDDEN (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/compare/1.9.0...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-test` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-test's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-test's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874\"\u003e\u003ccode\u003e8564f65\u003c/code\u003e\u003c/a\u003e Version 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c\"\u003e\u003ccode\u003ea4c6af9\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9\"\u003e\u003ccode\u003eef917b4\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd\"\u003e\u003ccode\u003e5ebc421\u003c/code\u003e\u003c/a\u003e Update the release procedure description (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80\"\u003e\u003ccode\u003e95f46a0\u003c/code\u003e\u003c/a\u003e Remove old maven repository settings (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672\"\u003e#4672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc\"\u003e\u003ccode\u003eb4f4f0a\u003c/code\u003e\u003c/a\u003e Fix package name of \u003ccode\u003eToMapCollectionSamplesTest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674\"\u003e#4674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"...\n\n_Description has been truncated_","html_url":"https://github.com/ops-ai/Toggly.FeatureManagement/pull/308","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ops-ai%2FToggly.FeatureManagement/issues/308","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/308/packages"}},{"old_version":"3.5.1","new_version":"3.7.0","update_type":"minor","path":null,"pr_created_at":"2026-08-29T10:04:05.000Z","version_change":"3.5.1 → 3.7.0","issue":{"uuid":"5285883423","node_id":"PR_kwDOQjpZ1c8AAAABBbnJSQ","number":394,"state":"closed","title":"build(deps): bump the androidx group across 1 directory with 17 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-05T10:04:08.000Z","author_association":null,"state_reason":null,"created_at":"2026-08-29T10:04:05.000Z","updated_at":"2026-09-05T10:04:12.000Z","time_to_close":604803,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"androidx","update_count":17,"packages":[{"name":"androidx.core:core-ktx","old_version":"1.15.0","new_version":"1.19.0"},{"name":"androidx.compose:compose-bom","old_version":"2024.12.01","new_version":"2026.08.00"},{"name":"androidx.tv:tv-foundation","old_version":"1.0.0-alpha11","new_version":"1.0.0"},{"name":"androidx.tv:tv-material","old_version":"1.0.0","new_version":"1.1.0"},{"name":"androidx.hilt:hilt-navigation-compose","old_version":"1.2.0","new_version":"1.4.0"},{"name":"androidx.hilt:hilt-work","old_version":"1.2.0","new_version":"1.4.0"},{"name":"androidx.hilt:hilt-compiler","old_version":"1.2.0","new_version":"1.4.0"},{"name":"androidx.room:room-runtime","old_version":"2.7.1","new_version":"2.8.4"},{"name":"androidx.room:room-ktx","old_version":"2.7.1","new_version":"2.8.4"},{"name":"androidx.room:room-compiler","old_version":"2.7.1","new_version":"2.8.4"},{"name":"androidx.room:room-testing","old_version":"2.7.1","new_version":"2.8.4"},{"name":"androidx.media3:media3-exoplayer","old_version":"1.5.1","new_version":"1.11.0","repository_url":"https://github.com/androidx/media"},{"name":"androidx.media3:media3-exoplayer-hls","old_version":"1.5.1","new_version":"1.11.0","repository_url":"https://github.com/androidx/media"},{"name":"androidx.media3:media3-ui","old_version":"1.5.1","new_version":"1.11.0","repository_url":"https://github.com/androidx/media"},{"name":"androidx.media3:media3-datasource-okhttp","old_version":"1.5.1","new_version":"1.11.0","repository_url":"https://github.com/androidx/media"},{"name":"androidx.test.ext:junit","old_version":"1.1.5","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.5.1","new_version":"3.7.0"}],"path":null,"ecosystem":"maven"},"body":"Bumps the androidx group with 17 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| androidx.core:core-ktx | `1.15.0` | `1.19.0` |\n| androidx.compose:compose-bom | `2024.12.01` | `2026.08.00` |\n| androidx.tv:tv-foundation | `1.0.0-alpha11` | `1.0.0` |\n| androidx.tv:tv-material | `1.0.0` | `1.1.0` |\n| androidx.hilt:hilt-navigation-compose | `1.2.0` | `1.4.0` |\n| androidx.hilt:hilt-work | `1.2.0` | `1.4.0` |\n| androidx.hilt:hilt-compiler | `1.2.0` | `1.4.0` |\n| androidx.room:room-runtime | `2.7.1` | `2.8.4` |\n| androidx.room:room-ktx | `2.7.1` | `2.8.4` |\n| androidx.room:room-compiler | `2.7.1` | `2.8.4` |\n| androidx.room:room-testing | `2.7.1` | `2.8.4` |\n| [androidx.media3:media3-exoplayer](https://github.com/androidx/media) | `1.5.1` | `1.11.0` |\n| [androidx.media3:media3-exoplayer-hls](https://github.com/androidx/media) | `1.5.1` | `1.11.0` |\n| [androidx.media3:media3-ui](https://github.com/androidx/media) | `1.5.1` | `1.11.0` |\n| [androidx.media3:media3-datasource-okhttp](https://github.com/androidx/media) | `1.5.1` | `1.11.0` |\n| androidx.test.ext:junit | `1.1.5` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.5.1` | `3.7.0` |\n\n\nUpdates `androidx.core:core-ktx` from 1.15.0 to 1.19.0\n\nUpdates `androidx.compose:compose-bom` from 2024.12.01 to 2026.08.00\n\nUpdates `androidx.tv:tv-foundation` from 1.0.0-alpha11 to 1.0.0\n\nUpdates `androidx.tv:tv-material` from 1.0.0 to 1.1.0\n\nUpdates `androidx.hilt:hilt-navigation-compose` from 1.2.0 to 1.4.0\n\nUpdates `androidx.hilt:hilt-work` from 1.2.0 to 1.4.0\n\nUpdates `androidx.hilt:hilt-compiler` from 1.2.0 to 1.4.0\n\nUpdates `androidx.room:room-runtime` from 2.7.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.7.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.7.1 to 2.8.4\n\nUpdates `androidx.room:room-testing` from 2.7.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.7.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.7.1 to 2.8.4\n\nUpdates `androidx.room:room-testing` from 2.7.1 to 2.8.4\n\nUpdates `androidx.media3:media3-exoplayer` from 1.5.1 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/releases\"\u003eandroidx.media3:media3-exoplayer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.channelMask\u003c/code\u003e to explicitly represent the audio channel mask, and a new \u003ccode\u003eUtil.getAudioTrackChannelConfig(Format)\u003c/code\u003e overload to safely resolve it.\u003c/li\u003e\n\u003cli\u003eUpgrade Kotlin from 2.0.20 to 2.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix a timing-dependent concurrency bug that could cause an \u003ccode\u003eIllegalStateException\u003c/code\u003e or \u003ccode\u003eIndexOutOfBoundsException\u003c/code\u003e in ExoPlayer.\u003c/li\u003e\n\u003cli\u003eRelax ad group count checks in \u003ccode\u003eAdsMediaSource\u003c/code\u003e to allow the ad group count to decrease when an ad group is fully processed\n(\u003ccode\u003ehasUnplayedAds()\u003c/code\u003e is \u003ccode\u003efalse\u003c/code\u003e), accommodating dynamic ad group resizing during reset workflows.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egetFlags()\u003c/code\u003e and \u003ccode\u003eFLAG_STRICT_DURATION\u003c/code\u003e to \u003ccode\u003eSampleStream\u003c/code\u003e to allow streams to report flags, and update renderers to check these flags dynamically.\u003c/li\u003e\n\u003cli\u003eFall back to the frame rate estimator in \u003ccode\u003eMediaCodecVideoRenderer\u003c/code\u003e and to the codec output format in \u003ccode\u003eMediaCodecAudioRenderer\u003c/code\u003e to calculate the codec operating rate when the stream formats do not provide a valid value, and avoid unnecessary codec resets.\u003c/li\u003e\n\u003cli\u003eRemove clipping of content for client-side inserted ads in the core player. Instead, \u003ccode\u003eAdsMediaSource\u003c/code\u003e takes care of the clipping logic. Custom client-side inserted ads sources need to be updated to implement the content clipping internally.\u003c/li\u003e\n\u003cli\u003eMark tracks with a well-formed but unrecognized codec profile or level as \u003ccode\u003esupported=NO_EXCEEDS_CAPABILITIES\u003c/code\u003e instead of \u003ccode\u003esupported=YES\u003c/code\u003e (which is how tracks with missing or malformed profile or level info are marked). This ensures these tracks (which are unlikely to be supported by the device) are not selected when there are better-supported alternatives.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eDefaultPreloadManager.SimpleRankingDataComparator\u003c/code\u003e, which is a \u003ccode\u003eRankingDataComparator\u003c/code\u003e that compares the ranks of the media items based on their distances to the index of the current playing media item. Apps can override its \u003ccode\u003ecompare(Integer, Integer)\u003c/code\u003e method if a more fine-tuned comparison logic is needed. The custom \u003ccode\u003eSimpleRankingDataComparator\u003c/code\u003e can be injected via a new constructor of \u003ccode\u003eDefaultPreloadManager.Builder\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eReduce the OOM risk of \u003ccode\u003eDefaultLoadControl.prioritizeTimeOverSizeThresholds\u003c/code\u003e by falling back to buffer byte size limits if available heap memory seems tight.\u003c/li\u003e\n\u003cli\u003eAlign handling of still images when \u003ccode\u003eMediaItem.imageDurationUs\u003c/code\u003e is not set: JPEG and HEIC still images now 'play' with a very short default duration (the same way PNG and other images previously behaved).\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eMediaSource.prepareSource(MediaSourceCaller, PlayerId, BandwidthMeter)\u003c/code\u003e to plumb \u003ccode\u003eBandwidthMeter\u003c/code\u003e to \u003ccode\u003eMediaSource\u003c/code\u003e. The deprecated method with custom implementation will still be called by default though, it is recommended to implement the new method and use \u003ccode\u003eBandwidthMeter.getTransferListener()\u003c/code\u003e to get parity to the old method.\u003c/li\u003e\n\u003cli\u003eIn \u003ccode\u003eDefaultBandwidthMeter\u003c/code\u003e, add support for a custom \u003ccode\u003eInitialBitrateSupplier\u003c/code\u003e. This allows apps to provide their own logic for determining the initial bitrate estimate, which will be used on creation of \u003ccode\u003eDefaultBandwidthMeter\u003c/code\u003e and on network type changes. The supplier can be set via \u003ccode\u003eDefaultBandwidthMeter.Builder.setInitialBitrateSupplier()\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eEnable dynamic scheduling by default. \u003ccode\u003eExoPlayer\u003c/code\u003e playback work loop will run dynamically as opposed to on a static interval.\u003c/li\u003e\n\u003cli\u003eRemove an unnecessary reset that can occur when joining tracks with pre-roll samples to active playback.\u003c/li\u003e\n\u003cli\u003eIn \u003ccode\u003eDefaultBandwidthMeter\u003c/code\u003e, optimize \u003ccode\u003egetInitialBitrateCountryGroupAssignment\u003c/code\u003e to return the country group assignments packed into a 32-bit integer instead of an array, reducing code size and avoiding allocations.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAudioTrack\u003c/code\u003e initialization failures on some devices by ensuring the retry logic always attempts a minimum of 1 second buffer size if other retries (by halving the buffer size) are unsuccessful (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3207\"\u003e#3207\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix codec issue on some devices where the codec was swallowing all samples if previously flushed before receiving input buffers.\u003c/li\u003e\n\u003cli\u003eAdd experimental \u003ccode\u003eExoPlayer.Builder.enablePerStreamMediaProgression()\u003c/code\u003e  to allow advancing media processing on a per-stream basis. This reduces startup latency between playlist items and avoids playback becoming \u0026quot;stuck\u0026quot; with very short content (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3122\"\u003e#3122\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix race condition related to audio session id usage where the initial audio session id auto-generated by \u003ccode\u003eExoPlayer\u003c/code\u003e would be used instead of the value set by \u003ccode\u003esetAudioSessionId\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3241\"\u003e#3241\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd experimental HAGC (ST 2094-50) timed metadata playback support for progressive media (e.g. MP4, Matroska). The player automatically merges HAGC metadata tracks with the associated video track and delivers the metadata out-of-band to the decoder on API 37+ devices. This behavior can be disabled via \u003ccode\u003eDefaultMediaSourceFactory.setExperimentalEnableHagcPlayback(false)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.selectionPriority\u003c/code\u003e representing the relative preference of the \u003ccode\u003eFormat\u003c/code\u003e in track selection (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3236\"\u003e#3236\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix potential scrubbing mode issue where scrubbing could stall when seeking to 'end of stream'.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eCompositionPlayer:\n\u003cul\u003e\n\u003cli\u003eFix an issue where \u003ccode\u003eTrackSelector\u003c/code\u003e instances were not being released.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTransformer:\n\u003cul\u003e\n\u003cli\u003eFix an issue where \u003ccode\u003eExportResult.fileSizeBytes\u003c/code\u003e may be over-reported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eExpose \u003ccode\u003eBaseTrackSelection.DEFAULT_FORMAT_COMPARATOR\u003c/code\u003e and add \u003ccode\u003eAdaptiveTrackSelection.Factory.setTrackFormatComparator\u003c/code\u003e to allow custom format ordering and ABR selection priority beyond bitrate-only ordering.\u003c/li\u003e\n\u003cli\u003eFix a timing-dependent concurrency issue where rapid sequential updates to track selection parameters could result in some updates being lost or overwritten.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP4, MP3, and FLAC: Add \u003ccode\u003eFLAG_DISABLE_ARTWORK_METADATA\u003c/code\u003e to allow discarding attached pictures and cover art metadata during container parsing to reduce runtime memory consumption (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2077\"\u003e#2077\u003c/a\u003e). This can also be enabled centrally via \u003ccode\u003eDefaultExtractorsFactory.setDisableArtworkMetadata\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for extracting ITU-T T.35 (\u003ccode\u003eit35\u003c/code\u003e) timed metadata tracks.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for extracting chapter metadata (both Nero and QuickTime formats). QuickTime chapters are preferred if both are present. The extracted chapter information is exposed as \u003ccode\u003eChapter\u003c/code\u003e entries within the track's \u003ccode\u003eMetadata\u003c/code\u003e, allowing for native chapter navigation in MP4, M4A, and M4B files (such as audiobooks and podcasts) (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2803\"\u003e#2803\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eWAV, Matroska, and MP4: Add support for 64-bit floating point PCM audio (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3090\"\u003e#3090\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMatroska: Use codec bitstream metadata to populate accurate \u003ccode\u003eColorInfo\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for seeking in fragmented MP4 files using the \u003ccode\u003emfra\u003c/code\u003e box when a \u003ccode\u003esidx\u003c/code\u003e box is not present. To enable this, provide \u003ccode\u003eFLAG_READ_MFRA_FOR_SEEK_MAP\u003c/code\u003e to the \u003ccode\u003eFragmentedMp4Extractor\u003c/code\u003e, which is now done by default in \u003ccode\u003eDefaultExtractorsFactory\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3088\"\u003e#3088\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eIgnore \u003ccode\u003eav1C\u003c/code\u003e data with unsupported version.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for big-endian floating point PCM in \u003ccode\u003efpcm\u003c/code\u003e boxes.\u003c/li\u003e\n\u003cli\u003eMatroska: Parse chapter info to \u003ccode\u003eChapter\u003c/code\u003e entries in a track's \u003ccode\u003eMetadata\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eMPEG-TS: Improve extraction of DTS-HD and DTS Express streams by combining the Core and Extension Substream into a single sample, fixing playback issues where the two were previously output as separate samples (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3147\"\u003e#3147\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMP4: Prevent infinite loops and out-of-bounds reads when parsing empty \u003ccode\u003eilst\u003c/code\u003e metadata tag items (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3191\"\u003e#3191\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMPEG-TS: Ensure the last frame is rendered for streams where the last PES packet has a known length (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3206\"\u003e#3206\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMP3: Fix bitrate reporting for files with Xing and VBRI header.\u003c/li\u003e\n\u003cli\u003eMatroska: Handle tracks defined in the last cluster (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3250\"\u003e#3250\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMatroska: Add support for ALAC (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3268\"\u003e#3268\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/blob/release/RELEASENOTES.md\"\u003eandroidx.media3:media3-exoplayer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e1.11.0 (2026-08-05)\u003c/h3\u003e\n\u003cp\u003eThis release includes the following changes since the\n\u003ca href=\"https://github.com/androidx/media/blob/release/#1101-2026-05-12\"\u003e1.10.1 release\u003c/a\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.channelMask\u003c/code\u003e to explicitly represent the audio channel mask,\nand a new \u003ccode\u003eUtil.getAudioTrackChannelConfig(Format)\u003c/code\u003e overload to safely\nresolve it.\u003c/li\u003e\n\u003cli\u003eUpgrade Kotlin from 2.0.20 to 2.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix a timing-dependent concurrency bug that could cause an\n\u003ccode\u003eIllegalStateException\u003c/code\u003e or \u003ccode\u003eIndexOutOfBoundsException\u003c/code\u003e in ExoPlayer.\u003c/li\u003e\n\u003cli\u003eRelax ad group count checks in \u003ccode\u003eAdsMediaSource\u003c/code\u003e to allow the ad group\ncount to decrease when an ad group is fully processed\n(\u003ccode\u003ehasUnplayedAds()\u003c/code\u003e is \u003ccode\u003efalse\u003c/code\u003e), accommodating dynamic ad group resizing\nduring reset workflows.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egetFlags()\u003c/code\u003e and \u003ccode\u003eFLAG_STRICT_DURATION\u003c/code\u003e to \u003ccode\u003eSampleStream\u003c/code\u003e to allow\nstreams to report flags, and update renderers to check these flags\ndynamically.\u003c/li\u003e\n\u003cli\u003eFall back to the frame rate estimator in \u003ccode\u003eMediaCodecVideoRenderer\u003c/code\u003e and\nto the codec output format in \u003ccode\u003eMediaCodecAudioRenderer\u003c/code\u003e to calculate the\ncodec operating rate when the stream formats do not provide a valid\nvalue, and avoid unnecessary codec resets.\u003c/li\u003e\n\u003cli\u003eRemove clipping of content for client-side inserted ads in the core\nplayer. Instead, \u003ccode\u003eAdsMediaSource\u003c/code\u003e takes care of the clipping logic.\nCustom client-side inserted ads sources need to be updated to implement\nthe content clipping internally.\u003c/li\u003e\n\u003cli\u003eMark tracks with a well-formed but unrecognized codec profile or level\nas \u003ccode\u003esupported=NO_EXCEEDS_CAPABILITIES\u003c/code\u003e instead of \u003ccode\u003esupported=YES\u003c/code\u003e (which\nis how tracks with missing or malformed profile or level info are\nmarked). This ensures these tracks (which are unlikely to be supported\nby the device) are not selected when there are better-supported\nalternatives.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eDefaultPreloadManager.SimpleRankingDataComparator\u003c/code\u003e, which is a\n\u003ccode\u003eRankingDataComparator\u003c/code\u003e that compares the ranks of the media items based\non their distances to the index of the current playing media item. Apps\ncan override its \u003ccode\u003ecompare(Integer, Integer)\u003c/code\u003e method if a more fine-tuned\ncomparison logic is needed. The custom \u003ccode\u003eSimpleRankingDataComparator\u003c/code\u003e can\nbe injected via a new constructor of \u003ccode\u003eDefaultPreloadManager.Builder\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eReduce the OOM risk of\n\u003ccode\u003eDefaultLoadControl.prioritizeTimeOverSizeThresholds\u003c/code\u003e by falling back to\nbuffer byte size limits if available heap memory seems tight.\u003c/li\u003e\n\u003cli\u003eAlign handling of still images when \u003ccode\u003eMediaItem.imageDurationUs\u003c/code\u003e is not\nset: JPEG and HEIC still images now 'play' with a very short default\nduration (the same way PNG and other images previously behaved).\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eMediaSource.prepareSource(MediaSourceCaller, PlayerId, BandwidthMeter)\u003c/code\u003e to plumb \u003ccode\u003eBandwidthMeter\u003c/code\u003e to \u003ccode\u003eMediaSource\u003c/code\u003e. The\ndeprecated method with custom implementation will still be called by\ndefault though, it is recommended to implement the new method and use\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/2bc207851df311340767e913931ca7b28cab1794\"\u003e\u003ccode\u003e2bc2078\u003c/code\u003e\u003c/a\u003e Merge branch 'release' into release-3.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/e156aec119c304d3de70a2fa69e08dc585b9d92b\"\u003e\u003ccode\u003ee156aec\u003c/code\u003e\u003c/a\u003e Update RELEASENOTES.md for the Media3 1.11.0 stable release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/458b232a5cd2e0114a0911a1ec1ee2e1f871086e\"\u003e\u003ccode\u003e458b232\u003c/code\u003e\u003c/a\u003e Update Media3 library version to 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/a51f7e92dd415c91e9ab3008d73ab19c2394830c\"\u003e\u003ccode\u003ea51f7e9\u003c/code\u003e\u003c/a\u003e Update release notes for 1.11.0-rc01\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/1c241543fb0df700f2221b1839e0f1886c268be2\"\u003e\u003ccode\u003e1c24154\u003c/code\u003e\u003c/a\u003e Bump version number for 1.11.0-rc01\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/fc38c2cda8789db646ae6a01e06494de059a2495\"\u003e\u003ccode\u003efc38c2c\u003c/code\u003e\u003c/a\u003e Fix unexpected onMediaItemTransition event on seek within same item\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/bb3d9921f14d900a2e76528f2d97cf82e925a499\"\u003e\u003ccode\u003ebb3d992\u003c/code\u003e\u003c/a\u003e Gate detached surface workaround on vendor API level\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/b33316303d3ef5ad0ede57cbc9dab6d8ab1e63a6\"\u003e\u003ccode\u003eb333163\u003c/code\u003e\u003c/a\u003e Catch ForegroundServiceStartNotAllowedException in stopSelfSafely.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/66d8d7a612ba4018ae073001168526592b60f32a\"\u003e\u003ccode\u003e66d8d7a\u003c/code\u003e\u003c/a\u003e Move workarounds disabling logic to DashHostedTest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/b220203994462ac7a8655a596afcfb45a68eaa10\"\u003e\u003ccode\u003eb220203\u003c/code\u003e\u003c/a\u003e Fix content resume offset calculation for asset list interstitials\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/androidx/media/compare/1.5.1...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.media3:media3-exoplayer-hls` from 1.5.1 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/releases\"\u003eandroidx.media3:media3-exoplayer-hls's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.channelMask\u003c/code\u003e to explicitly represent the audio channel mask, and a new \u003ccode\u003eUtil.getAudioTrackChannelConfig(Format)\u003c/code\u003e overload to safely resolve it.\u003c/li\u003e\n\u003cli\u003eUpgrade Kotlin from 2.0.20 to 2.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix a timing-dependent concurrency bug that could cause an \u003ccode\u003eIllegalStateException\u003c/code\u003e or \u003ccode\u003eIndexOutOfBoundsException\u003c/code\u003e in ExoPlayer.\u003c/li\u003e\n\u003cli\u003eRelax ad group count checks in \u003ccode\u003eAdsMediaSource\u003c/code\u003e to allow the ad group count to decrease when an ad group is fully processed\n(\u003ccode\u003ehasUnplayedAds()\u003c/code\u003e is \u003ccode\u003efalse\u003c/code\u003e), accommodating dynamic ad group resizing during reset workflows.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egetFlags()\u003c/code\u003e and \u003ccode\u003eFLAG_STRICT_DURATION\u003c/code\u003e to \u003ccode\u003eSampleStream\u003c/code\u003e to allow streams to report flags, and update renderers to check these flags dynamically.\u003c/li\u003e\n\u003cli\u003eFall back to the frame rate estimator in \u003ccode\u003eMediaCodecVideoRenderer\u003c/code\u003e and to the codec output format in \u003ccode\u003eMediaCodecAudioRenderer\u003c/code\u003e to calculate the codec operating rate when the stream formats do not provide a valid value, and avoid unnecessary codec resets.\u003c/li\u003e\n\u003cli\u003eRemove clipping of content for client-side inserted ads in the core player. Instead, \u003ccode\u003eAdsMediaSource\u003c/code\u003e takes care of the clipping logic. Custom client-side inserted ads sources need to be updated to implement the content clipping internally.\u003c/li\u003e\n\u003cli\u003eMark tracks with a well-formed but unrecognized codec profile or level as \u003ccode\u003esupported=NO_EXCEEDS_CAPABILITIES\u003c/code\u003e instead of \u003ccode\u003esupported=YES\u003c/code\u003e (which is how tracks with missing or malformed profile or level info are marked). This ensures these tracks (which are unlikely to be supported by the device) are not selected when there are better-supported alternatives.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eDefaultPreloadManager.SimpleRankingDataComparator\u003c/code\u003e, which is a \u003ccode\u003eRankingDataComparator\u003c/code\u003e that compares the ranks of the media items based on their distances to the index of the current playing media item. Apps can override its \u003ccode\u003ecompare(Integer, Integer)\u003c/code\u003e method if a more fine-tuned comparison logic is needed. The custom \u003ccode\u003eSimpleRankingDataComparator\u003c/code\u003e can be injected via a new constructor of \u003ccode\u003eDefaultPreloadManager.Builder\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eReduce the OOM risk of \u003ccode\u003eDefaultLoadControl.prioritizeTimeOverSizeThresholds\u003c/code\u003e by falling back to buffer byte size limits if available heap memory seems tight.\u003c/li\u003e\n\u003cli\u003eAlign handling of still images when \u003ccode\u003eMediaItem.imageDurationUs\u003c/code\u003e is not set: JPEG and HEIC still images now 'play' with a very short default duration (the same way PNG and other images previously behaved).\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eMediaSource.prepareSource(MediaSourceCaller, PlayerId, BandwidthMeter)\u003c/code\u003e to plumb \u003ccode\u003eBandwidthMeter\u003c/code\u003e to \u003ccode\u003eMediaSource\u003c/code\u003e. The deprecated method with custom implementation will still be called by default though, it is recommended to implement the new method and use \u003ccode\u003eBandwidthMeter.getTransferListener()\u003c/code\u003e to get parity to the old method.\u003c/li\u003e\n\u003cli\u003eIn \u003ccode\u003eDefaultBandwidthMeter\u003c/code\u003e, add support for a custom \u003ccode\u003eInitialBitrateSupplier\u003c/code\u003e. This allows apps to provide their own logic for determining the initial bitrate estimate, which will be used on creation of \u003ccode\u003eDefaultBandwidthMeter\u003c/code\u003e and on network type changes. The supplier can be set via \u003ccode\u003eDefaultBandwidthMeter.Builder.setInitialBitrateSupplier()\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eEnable dynamic scheduling by default. \u003ccode\u003eExoPlayer\u003c/code\u003e playback work loop will run dynamically as opposed to on a static interval.\u003c/li\u003e\n\u003cli\u003eRemove an unnecessary reset that can occur when joining tracks with pre-roll samples to active playback.\u003c/li\u003e\n\u003cli\u003eIn \u003ccode\u003eDefaultBandwidthMeter\u003c/code\u003e, optimize \u003ccode\u003egetInitialBitrateCountryGroupAssignment\u003c/code\u003e to return the country group assignments packed into a 32-bit integer instead of an array, reducing code size and avoiding allocations.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAudioTrack\u003c/code\u003e initialization failures on some devices by ensuring the retry logic always attempts a minimum of 1 second buffer size if other retries (by halving the buffer size) are unsuccessful (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3207\"\u003e#3207\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix codec issue on some devices where the codec was swallowing all samples if previously flushed before receiving input buffers.\u003c/li\u003e\n\u003cli\u003eAdd experimental \u003ccode\u003eExoPlayer.Builder.enablePerStreamMediaProgression()\u003c/code\u003e  to allow advancing media processing on a per-stream basis. This reduces startup latency between playlist items and avoids playback becoming \u0026quot;stuck\u0026quot; with very short content (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3122\"\u003e#3122\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix race condition related to audio session id usage where the initial audio session id auto-generated by \u003ccode\u003eExoPlayer\u003c/code\u003e would be used instead of the value set by \u003ccode\u003esetAudioSessionId\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3241\"\u003e#3241\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd experimental HAGC (ST 2094-50) timed metadata playback support for progressive media (e.g. MP4, Matroska). The player automatically merges HAGC metadata tracks with the associated video track and delivers the metadata out-of-band to the decoder on API 37+ devices. This behavior can be disabled via \u003ccode\u003eDefaultMediaSourceFactory.setExperimentalEnableHagcPlayback(false)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.selectionPriority\u003c/code\u003e representing the relative preference of the \u003ccode\u003eFormat\u003c/code\u003e in track selection (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3236\"\u003e#3236\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix potential scrubbing mode issue where scrubbing could stall when seeking to 'end of stream'.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eCompositionPlayer:\n\u003cul\u003e\n\u003cli\u003eFix an issue where \u003ccode\u003eTrackSelector\u003c/code\u003e instances were not being released.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTransformer:\n\u003cul\u003e\n\u003cli\u003eFix an issue where \u003ccode\u003eExportResult.fileSizeBytes\u003c/code\u003e may be over-reported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eExpose \u003ccode\u003eBaseTrackSelection.DEFAULT_FORMAT_COMPARATOR\u003c/code\u003e and add \u003ccode\u003eAdaptiveTrackSelection.Factory.setTrackFormatComparator\u003c/code\u003e to allow custom format ordering and ABR selection priority beyond bitrate-only ordering.\u003c/li\u003e\n\u003cli\u003eFix a timing-dependent concurrency issue where rapid sequential updates to track selection parameters could result in some updates being lost or overwritten.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP4, MP3, and FLAC: Add \u003ccode\u003eFLAG_DISABLE_ARTWORK_METADATA\u003c/code\u003e to allow discarding attached pictures and cover art metadata during container parsing to reduce runtime memory consumption (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2077\"\u003e#2077\u003c/a\u003e). This can also be enabled centrally via \u003ccode\u003eDefaultExtractorsFactory.setDisableArtworkMetadata\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for extracting ITU-T T.35 (\u003ccode\u003eit35\u003c/code\u003e) timed metadata tracks.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for extracting chapter metadata (both Nero and QuickTime formats). QuickTime chapters are preferred if both are present. The extracted chapter information is exposed as \u003ccode\u003eChapter\u003c/code\u003e entries within the track's \u003ccode\u003eMetadata\u003c/code\u003e, allowing for native chapter navigation in MP4, M4A, and M4B files (such as audiobooks and podcasts) (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2803\"\u003e#2803\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eWAV, Matroska, and MP4: Add support for 64-bit floating point PCM audio (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3090\"\u003e#3090\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMatroska: Use codec bitstream metadata to populate accurate \u003ccode\u003eColorInfo\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for seeking in fragmented MP4 files using the \u003ccode\u003emfra\u003c/code\u003e box when a \u003ccode\u003esidx\u003c/code\u003e box is not present. To enable this, provide \u003ccode\u003eFLAG_READ_MFRA_FOR_SEEK_MAP\u003c/code\u003e to the \u003ccode\u003eFragmentedMp4Extractor\u003c/code\u003e, which is now done by default in \u003ccode\u003eDefaultExtractorsFactory\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3088\"\u003e#3088\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eIgnore \u003ccode\u003eav1C\u003c/code\u003e data with unsupported version.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for big-endian floating point PCM in \u003ccode\u003efpcm\u003c/code\u003e boxes.\u003c/li\u003e\n\u003cli\u003eMatroska: Parse chapter info to \u003ccode\u003eChapter\u003c/code\u003e entries in a track's \u003ccode\u003eMetadata\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eMPEG-TS: Improve extraction of DTS-HD and DTS Express streams by combining the Core and Extension Substream into a single sample, fixing playback issues where the two were previously output as separate samples (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3147\"\u003e#3147\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMP4: Prevent infinite loops and out-of-bounds reads when parsing empty \u003ccode\u003eilst\u003c/code\u003e metadata tag items (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3191\"\u003e#3191\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMPEG-TS: Ensure the last frame is rendered for streams where the last PES packet has a known length (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3206\"\u003e#3206\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMP3: Fix bitrate reporting for files with Xing and VBRI header.\u003c/li\u003e\n\u003cli\u003eMatroska: Handle tracks defined in the last cluster (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3250\"\u003e#3250\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMatroska: Add support for ALAC (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3268\"\u003e#3268\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/blob/release/RELEASENOTES.md\"\u003eandroidx.media3:media3-exoplayer-hls's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e1.11.0 (2026-08-05)\u003c/h3\u003e\n\u003cp\u003eThis release includes the following changes since the\n\u003ca href=\"https://github.com/androidx/media/blob/release/#1101-2026-05-12\"\u003e1.10.1 release\u003c/a\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.channelMask\u003c/code\u003e to explicitly represent the audio channel mask,\nand a new \u003ccode\u003eUtil.getAudioTrackChannelConfig(Format)\u003c/code\u003e overload to safely\nresolve it.\u003c/li\u003e\n\u003cli\u003eUpgrade Kotlin from 2.0.20 to 2.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix a timing-dependent concurrency bug that could cause an\n\u003ccode\u003eIllegalStateException\u003c/code\u003e or \u003ccode\u003eIndexOutOfBoundsException\u003c/code\u003e in ExoPlayer.\u003c/li\u003e\n\u003cli\u003eRelax ad group count checks in \u003ccode\u003eAdsMediaSource\u003c/code\u003e to allow the ad group\ncount to decrease when an ad group is fully processed\n(\u003ccode\u003ehasUnplayedAds()\u003c/code\u003e is \u003ccode\u003efalse\u003c/code\u003e), accommodating dynamic ad group resizing\nduring reset workflows.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egetFlags()\u003c/code\u003e and \u003ccode\u003eFLAG_STRICT_DURATION\u003c/code\u003e to \u003ccode\u003eSampleStream\u003c/code\u003e to allow\nstreams to report flags, and update renderers to check these flags\ndynamically.\u003c/li\u003e\n\u003cli\u003eFall back to the frame rate estimator in \u003ccode\u003eMediaCodecVideoRenderer\u003c/code\u003e and\nto the codec output format in \u003ccode\u003eMediaCodecAudioRenderer\u003c/code\u003e to calculate the\ncodec operating rate when the stream formats do not provide a valid\nvalue, and avoid unnecessary codec resets.\u003c/li\u003e\n\u003cli\u003eRemove clipping of content for client-side inserted ads in the core\nplayer. Instead, \u003ccode\u003eAdsMediaSource\u003c/code\u003e takes care of the clipping logic.\nCustom client-side inserted ads sources need to be updated to implement\nthe content clipping internally.\u003c/li\u003e\n\u003cli\u003eMark tracks with a well-formed but unrecognized codec profile or level\nas \u003ccode\u003esupported=NO_EXCEEDS_CAPABILITIES\u003c/code\u003e instead of \u003ccode\u003esupported=YES\u003c/code\u003e (which\nis how tracks with missing or malformed profile or level info are\nmarked). This ensures these tracks (which are unlikely to be supported\nby the device) are not selected when there are better-supported\nalternatives.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eDefaultPreloadManager.SimpleRankingDataComparator\u003c/code\u003e, which is a\n\u003ccode\u003eRankingDataComparator\u003c/code\u003e that compares the ranks of the media items based\non their distances to the index of the current playing media item. Apps\ncan override its \u003ccode\u003ecompare(Integer, Integer)\u003c/code\u003e method if a more fine-tuned\ncomparison logic is needed. The custom \u003ccode\u003eSimpleRankingDataComparator\u003c/code\u003e can\nbe injected via a new constructor of \u003ccode\u003eDefaultPreloadManager.Builder\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eReduce the OOM risk of\n\u003ccode\u003eDefaultLoadControl.prioritizeTimeOverSizeThresholds\u003c/code\u003e by falling back to\nbuffer byte size limits if available heap memory seems tight.\u003c/li\u003e\n\u003cli\u003eAlign handling of still images when \u003ccode\u003eMediaItem.imageDurationUs\u003c/code\u003e is not\nset: JPEG and HEIC still images now 'play' with a very short default\nduration (the same way PNG and other images previously behaved).\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eMediaSource.prepareSource(MediaSourceCaller, PlayerId, BandwidthMeter)\u003c/code\u003e to plumb \u003ccode\u003eBandwidthMeter\u003c/code\u003e to \u003ccode\u003eMediaSource\u003c/code\u003e. The\ndeprecated method with custom implementation will still be called by\ndefault though, it is recommended to implement the new method and use\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/2bc207851df311340767e913931ca7b28cab1794\"\u003e\u003ccode\u003e2bc2078\u003c/code\u003e\u003c/a\u003e Merge branch 'release' into release-3.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/e156aec119c304d3de70a2fa69e08dc585b9d92b\"\u003e\u003ccode\u003ee156aec\u003c/code\u003e\u003c/a\u003e Update RELEASENOTES.md for the Media3 1.11.0 stable release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/458b232a5cd2e0114a0911a1ec1ee2e1f871086e\"\u003e\u003ccode\u003e458b232\u003c/code\u003e\u003c/a\u003e Update Media3 library version to 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/a51f7e92dd415c91e9ab3008d73ab19c2394830c\"\u003e\u003ccode\u003ea51f7e9\u003c/code\u003e\u003c/a\u003e Update release notes for 1.11.0-rc01\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/1c241543fb0df700f2221b1839e0f1886c268be2\"\u003e\u003ccode\u003e1c24154\u003c/code\u003e\u003c/a\u003e Bump version number for 1.11.0-rc01\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/fc38c2cda8789db646ae6a01e06494de059a2495\"\u003e\u003ccode\u003efc38c2c\u003c/code\u003e\u003c/a\u003e Fix unexpected onMediaItemTransition event on seek within same item\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/bb3d9921f14d900a2e76528f2d97cf82e925a499\"\u003e\u003ccode\u003ebb3d992\u003c/code\u003e\u003c/a\u003e Gate detached surface workaround on vendor API level\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/b33316303d3ef5ad0ede57cbc9dab6d8ab1e63a6\"\u003e\u003ccode\u003eb333163\u003c/code\u003e\u003c/a\u003e Catch ForegroundServiceStartNotAllowedException in stopSelfSafely.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/66d8d7a612ba4018ae073001168526592b60f32a\"\u003e\u003ccode\u003e66d8d7a\u003c/code\u003e\u003c/a\u003e Move workarounds disabling logic to DashHostedTest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/b220203994462ac7a8655a596afcfb45a68eaa10\"\u003e\u003ccode\u003eb220203\u003c/code\u003e\u003c/a\u003e Fix content resume offset calculation for asset list interstitials\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/androidx/media/compare/1.5.1...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.media3:media3-ui` from 1.5.1 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/releases\"\u003eandroidx.media3:media3-ui's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.channelMask\u003c/code\u003e to explicitly represent the audio channel mask, and a new \u003ccode\u003eUtil.getAudioTrackChannelConfig(Format)\u003c/code\u003e overload to safely resolve it.\u003c/li\u003e\n\u003cli\u003eUpgrade Kotlin from 2.0.20 to 2.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix a timing-dependent concurrency bug that could cause an \u003ccode\u003eIllegalStateException\u003c/code\u003e or \u003ccode\u003eIndexOutOfBoundsException\u003c/code\u003e in ExoPlayer.\u003c/li\u003e\n\u003cli\u003eRelax ad group count checks in \u003ccode\u003eAdsMediaSource\u003c/code\u003e to allow the ad group count to decrease when an ad group is fully processed\n(\u003ccode\u003ehasUnplayedAds()\u003c/code\u003e is \u003ccode\u003efalse\u003c/code\u003e), accommodating dynamic ad group resizing during reset workflows.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egetFlags()\u003c/code\u003e and \u003ccode\u003eFLAG_STRICT_DURATION\u003c/code\u003e to \u003ccode\u003eSampleStream\u003c/code\u003e to allow streams to report flags, and update renderers to check these flags dynamically.\u003c/li\u003e\n\u003cli\u003eFall back to the frame rate estimator in \u003ccode\u003eMediaCodecVideoRenderer\u003c/code\u003e and to the codec output format in \u003ccode\u003eMediaCodecAudioRenderer\u003c/code\u003e to calculate the codec operating rate when the stream formats do not provide a valid value, and avoid unnecessary codec resets.\u003c/li\u003e\n\u003cli\u003eRemove clipping of content for client-side inserted ads in the core player. Instead, \u003ccode\u003eAdsMediaSource\u003c/code\u003e takes care of the clipping logic. Custom client-side inserted ads sources need to be updated to implement the content clipping internally.\u003c/li\u003e\n\u003cli\u003eMark tracks with a well-formed but unrecognized codec profile or level as \u003ccode\u003esupported=NO_EXCEEDS_CAPABILITIES\u003c/code\u003e instead of \u003ccode\u003esupported=YES\u003c/code\u003e (which is how tracks with missing or malformed profile or level info are marked). This ensures these tracks (which are unlikely to be supported by the device) are not selected when there are better-supported alternatives.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eDefaultPreloadManager.SimpleRankingDataComparator\u003c/code\u003e, which is a \u003ccode\u003eRankingDataComparator\u003c/code\u003e that compares the ranks of the media items based on their distances to the index of the current playing media item. Apps can override its \u003ccode\u003ecompare(Integer, Integer)\u003c/code\u003e method if a more fine-tuned comparison logic is needed. The custom \u003ccode\u003eSimpleRankingDataComparator\u003c/code\u003e can be injected via a new constructor of \u003ccode\u003eDefaultPreloadManager.Builder\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eReduce the OOM risk of \u003ccode\u003eDefaultLoadControl.prioritizeTimeOverSizeThresholds\u003c/code\u003e by falling back to buffer byte size limits if available heap memory seems tight.\u003c/li\u003e\n\u003cli\u003eAlign handling of still images when \u003ccode\u003eMediaItem.imageDurationUs\u003c/code\u003e is not set: JPEG and HEIC still images now 'play' with a very short default duration (the same way PNG and other images previously behaved).\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eMediaSource.prepareSource(MediaSourceCaller, PlayerId, BandwidthMeter)\u003c/code\u003e to plumb \u003ccode\u003eBandwidthMeter\u003c/code\u003e to \u003ccode\u003eMediaSource\u003c/code\u003e. The deprecated method with custom implementation will still be called by default though, it is recommended to implement the new method and use \u003ccode\u003eBandwidthMeter.getTransferListener()\u003c/code\u003e to get parity to the old method.\u003c/li\u003e\n\u003cli\u003eIn \u003ccode\u003eDefaultBandwidthMeter\u003c/code\u003e, add support for a custom \u003ccode\u003eInitialBitrateSupplier\u003c/code\u003e. This allows apps to provide their own logic for determining the initial bitrate estimate, which will be used on creation of \u003ccode\u003eDefaultBandwidthMeter\u003c/code\u003e and on network type changes. The supplier can be set via \u003ccode\u003eDefaultBandwidthMeter.Builder.setInitialBitrateSupplier()\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eEnable dynamic scheduling by default. \u003ccode\u003eExoPlayer\u003c/code\u003e playback work loop will run dynamically as opposed to on a static interval.\u003c/li\u003e\n\u003cli\u003eRemove an unnecessary reset that can occur when joining tracks with pre-roll samples to active playback.\u003c/li\u003e\n\u003cli\u003eIn \u003ccode\u003eDefaultBandwidthMeter\u003c/code\u003e, optimize \u003ccode\u003egetInitialBitrateCountryGroupAssignment\u003c/code\u003e to return the country group assignments packed into a 32-bit integer instead of an array, reducing code size and avoiding allocations.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAudioTrack\u003c/code\u003e initialization failures on some devices by ensuring the retry logic always attempts a minimum of 1 second buffer size if other retries (by halving the buffer size) are unsuccessful (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3207\"\u003e#3207\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix codec issue on some devices where the codec was swallowing all samples if previously flushed before receiving input buffers.\u003c/li\u003e\n\u003cli\u003eAdd experimental \u003ccode\u003eExoPlayer.Builder.enablePerStreamMediaProgression()\u003c/code\u003e  to allow advancing media processing on a per-stream basis. This reduces startup latency between playlist items and avoids playback becoming \u0026quot;stuck\u0026quot; with very short content (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3122\"\u003e#3122\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix race condition related to audio session id usage where the initial audio session id auto-generated by \u003ccode\u003eExoPlayer\u003c/code\u003e would be used instead of the value set by \u003ccode\u003esetAudioSessionId\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3241\"\u003e#3241\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd experimental HAGC (ST 2094-50) timed metadata playback support for progressive media (e.g. MP4, Matroska). The player automatically merges HAGC metadata tracks with the associated video track and delivers the metadata out-of-band to the decoder on API 37+ devices. This behavior can be disabled via \u003ccode\u003eDefaultMediaSourceFactory.setExperimentalEnableHagcPlayback(false)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.selectionPriority\u003c/code\u003e representing the relative preference of the \u003ccode\u003eFormat\u003c/code\u003e in track selection (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3236\"\u003e#3236\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix potential scrubbing mode issue where scrubbing could stall when seeking to 'end of stream'.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eCompositionPlayer:\n\u003cul\u003e\n\u003cli\u003eFix an issue where \u003ccode\u003eTrackSelector\u003c/code\u003e instances were not being released.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTransformer:\n\u003cul\u003e\n\u003cli\u003eFix an issue where \u003ccode\u003eExportResult.fileSizeBytes\u003c/code\u003e may be over-reported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eExpose \u003ccode\u003eBaseTrackSelection.DEFAULT_FORMAT_COMPARATOR\u003c/code\u003e and add \u003ccode\u003eAdaptiveTrackSelection.Factory.setTrackFormatComparator\u003c/code\u003e to allow custom format ordering and ABR selection priority beyond bitrate-only ordering.\u003c/li\u003e\n\u003cli\u003eFix a timing-dependent concurrency issue where rapid sequential updates to track selection parameters could result in some updates being lost or overwritten.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP4, MP3, and FLAC: Add \u003ccode\u003eFLAG_DISABLE_ARTWORK_METADATA\u003c/code\u003e to allow discarding attached pictures and cover art metadata during container parsing to reduce runtime memory consumption (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2077\"\u003e#2077\u003c/a\u003e). This can also be enabled centrally via \u003ccode\u003eDefaultExtractorsFactory.setDisableArtworkMetadata\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for extracting ITU-T T.35 (\u003ccode\u003eit35\u003c/code\u003e) timed metadata tracks.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for extracting chapter metadata (both Nero and QuickTime formats). QuickTime chapters are preferred if both are present. The extracted chapter information is exposed as \u003ccode\u003eChapter\u003c/code\u003e entries within the track's \u003ccode\u003eMetadata\u003c/code\u003e, allowing for native chapter navigation in MP4, M4A, and M4B files (such as audiobooks and podcasts) (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2803\"\u003e#2803\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eWAV, Matroska, and MP4: Add support for 64-bit floating point PCM audio (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3090\"\u003e#3090\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMatroska: Use codec bitstream metadata to populate accurate \u003ccode\u003eColorInfo\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for seeking in fragmented MP4 files using the \u003ccode\u003emfra\u003c/code\u003e box when a \u003ccode\u003esidx\u003c/code\u003e box is not present. To enable this, provide \u003ccode\u003eFLAG_READ_MFRA_FOR_SEEK_MAP\u003c/code\u003e to the \u003ccode\u003eFragmentedMp4Extractor\u003c/code\u003e, which is now done by default in \u003ccode\u003eDefaultExtractorsFactory\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3088\"\u003e#3088\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eIgnore \u003ccode\u003eav1C\u003c/code\u003e data with unsupported version.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for big-endian floating point PCM in \u003ccode\u003efpcm\u003c/code\u003e boxes.\u003c/li\u003e\n\u003cli\u003eMatroska: Parse chapter info to \u003ccode\u003eChapter\u003c/code\u003e entries in a track's \u003ccode\u003eMetadata\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eMPEG-TS: Improve extraction of DTS-HD and DTS Express streams by combining the Core and Extension Substream into a single sample, fixing playback issues where the two were previously output as separate samples (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3147\"\u003e#3147\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMP4: Prevent infinite loops and out-of-bounds reads when parsing empty \u003ccode\u003eilst\u003c/code\u003e metadata tag items (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3191\"\u003e#3191\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMPEG-TS: Ensure the last frame is rendered for streams where the last PES packet has a known length (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3206\"\u003e#3206\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMP3: Fix bitrate reporting for files with Xing and VBRI header.\u003c/li\u003e\n\u003cli\u003eMatroska: Handle tracks defined in the last cluster (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3250\"\u003e#3250\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMatroska: Add support for ALAC (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3268\"\u003e#3268\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/blob/release/RELEASENOTES.md\"\u003eandroidx.media3:media3-ui's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e1.11.0 (2026-08-05)\u003c/h3\u003e\n\u003cp\u003eThis release includes the following changes since the\n\u003ca href=\"https://github.com/androidx/media/blob/release/#1101-2026-05-12\"\u003e1.10.1 release\u003c/a\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.channelMask\u003c/code\u003e to explicitly represent the audio channel mask,\nand a new \u003ccode\u003eUtil.getAudioTrackChannelConfig(Format)\u003c/code\u003e overload to safely\nresolve it.\u003c/li\u003e\n\u003cli\u003eUpgrade Kotlin from 2.0.20 to 2.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix a timing-dependent concurrency bug that could cause an\n\u003ccode\u003eIllegalStateException\u003c/code\u003e or \u003ccode\u003eIndexOutOfBoundsException\u003c/code\u003e in ExoPlayer.\u003c/li\u003e\n\u003cli\u003eRelax ad group count checks in \u003ccode\u003eAdsMediaSource\u003c/code\u003e to allow the ad group\ncount to decrease when an ad group is fully processed\n(\u003ccode\u003ehasUnplayedAds()\u003c/code\u003e is \u003ccode\u003efalse\u003c/code\u003e), accommodating dynamic ad group resizing\nduring reset workflows.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egetFlags()\u003c/code\u003e and \u003ccode\u003eFLAG_STRICT_DURATION\u003c/code\u003e to \u003ccode\u003eSampleStream\u003c/code\u003e to allow\nstreams to report flags, and update renderers to check these flags\ndynamically.\u003c/li\u003e\n\u003cli\u003eFall back to the frame rate estimator in \u003ccode\u003eMediaCodecVideoRenderer\u003c/code\u003e and\nto the codec output format in \u003ccode\u003eMediaCodecAudioRenderer\u003c/code\u003e to calculate the\ncodec operating rate when the stream formats do not provide a valid\nvalue, and avoid unnecessary codec resets.\u003c/li\u003e\n\u003cli\u003eRemove clipping of content for client-side inserted ads in the core\nplayer. Instead, \u003ccode\u003eAdsMediaSource\u003c/code\u003e takes care of the clipping logic.\nCustom client-side inserted ads sources need to be updated to implement\nthe content clipping internally.\u003c/li\u003e\n\u003cli\u003eMark tracks with a well-formed but unrecognized codec profile or level\nas \u003ccode\u003esupported=NO_EXCEEDS_CAPABILITIES\u003c/code\u003e instead of \u003ccode\u003esupported=YES\u003c/code\u003e (which\nis how tracks with missing or malformed profile or level info are\nmarked). This ensures these tracks (which are unlikely to be supported\nby the device) are not selected when there are better-supported\nalternatives.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eDefaultPreloadManager.SimpleRankingDataComparator\u003c/code\u003e, which is a\n\u003ccode\u003eRankingDataComparator\u003c/code\u003e that compares the ranks of the media items based\non their distances to the index of the current playing media item. Apps\ncan override its \u003ccode\u003ecompare(Integer, Integer)\u003c/code\u003e method if a more fine-tuned\ncomparison logic is needed. The custom \u003ccode\u003eSimpleRankingDataComparator\u003c/code\u003e can\nbe injected via a new constructor of \u003ccode\u003eDefaultPreloadManager.Builder\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eReduce the OOM risk of\n\u003ccode\u003eDefaultLoadControl.prioritizeTimeOverSizeThresholds\u003c/code\u003e by falling back to\nbuffer byte size limits if available heap memory seems tight.\u003c/li\u003e\n\u003cli\u003eAlign handling of still images when \u003ccode\u003eMediaItem.imageDurationUs\u003c/code\u003e is not\nset: JPEG and HEIC still images now 'play' with a very short default\nduration (the same way PNG and other images previously behaved).\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eMediaSource.prepareSource(MediaSourceCaller, PlayerId, BandwidthMeter)\u003c/code\u003e to plumb \u003ccode\u003eBandwidthMeter\u003c/code\u003e to \u003ccode\u003eMediaSource\u003c/code\u003e. The\ndeprecated method with custom implementation will still be called by\ndefault though, it is recommended to implement the new method and use\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/2bc207851df311340767e913931ca7b28cab1794\"\u003e\u003ccode\u003e2bc2078\u003c/code\u003e\u003c/a\u003e Merge branch 'release' into release-3.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/e156aec119c304d3de70a2fa69e08dc585b9d92b\"\u003e\u003ccode\u003ee156aec\u003c/code\u003e\u003c/a\u003e Update RELEASENOTES.md for the Media3 1.11.0 stable release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/458b232a5cd2e0114a0911a1ec1ee2e1f871086e\"\u003e\u003ccode\u003e458b232\u003c/code\u003e\u003c/a\u003e Update Media3 library version to 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/a51f7e92dd415c91e9ab3008d73ab19c2394830c\"\u003e\u003ccode\u003ea51f7e9\u003c/code\u003e\u003c/a\u003e Update release notes for 1.11.0-rc01\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/1c241543fb0df700f2221b1839e0f1886c268be2\"\u003e\u003ccode\u003e1c24154\u003c/code\u003e\u003c/a\u003e Bump version number for 1.11.0-rc01\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/fc38c2cda8789db646ae6a01e06494de059a2495\"\u003e\u003ccode\u003efc38c2c\u003c/code\u003e\u003c/a\u003e Fix unexpected onMediaItemTransition event on seek within same item\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/bb3d9921f14d900a2e76528f2d97cf82e925a499\"\u003e\u003ccode\u003ebb3d992\u003c/code\u003e\u003c/a\u003e Gate detached surface workaround on vendor API level\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/b33316303d3ef5ad0ede57cbc9dab6d8ab1e63a6\"\u003e\u003ccode\u003eb333163\u003c/code\u003e\u003c/a\u003e Catch ForegroundServiceStartNotAllowedException in stopSelfSafely.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/66d8d7a612ba4018ae073001168526592b60f32a\"\u003e\u003ccode\u003e66d8d7a\u003c/code\u003e\u003c/a\u003e Move workarounds disabling logic to DashHostedTest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/b220203994462ac7a8655a596afcfb45a68eaa10\"\u003e\u003ccode\u003eb220203\u003c/code\u003e\u003c/a\u003e Fix content resume offset calculation for asset list interstitials\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/androidx/media/compare/1.5.1...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.media3:media3-datasource-okhttp` from 1.5.1 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/releases\"\u003eandroidx.media3:media3-datasource-okhttp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.channelMask\u003c/code\u003e to explicitly represent the audio channel mask, and a new \u003ccode\u003eUtil.getAudioTrackChannelConfig(Format)\u003c/code\u003e overload to safely resolve it.\u003c/li\u003e\n\u003cli\u003eUpgrade Kotlin from 2.0.20 to 2.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix a timing-dependent concurrency bug that could cause an \u003ccode\u003eIllegalStateException\u003c/code\u003e or \u003ccode\u003eIndexOutOfBoundsException\u003c/code\u003e in ExoPlayer.\u003c/li\u003e\n\u003cli\u003eRelax ad group count checks in \u003ccode\u003eAdsMediaSource\u003c/code\u003e to allow the ad group count to decrease when an ad group is fully processed\n(\u003ccode\u003ehasUnplayedAds()\u003c/code\u003e is \u003ccode\u003efalse\u003c/code\u003e), accommodating dynamic ad group resizing during reset workflows.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egetFlags()\u003c/code\u003e and \u003ccode\u003eFLAG_STRICT_DURATION\u003c/code\u003e to \u003ccode\u003eSampleStream\u003c/code\u003e to allow streams to report flags, and update renderers to check these flags dynamically.\u003c/li\u003e\n\u003cli\u003eFall back to the frame rate estimator in \u003ccode\u003eMediaCodecVideoRenderer\u003c/code\u003e and to the codec output format in \u003ccode\u003eMediaCodecAudioRenderer\u003c/code\u003e to calculate the codec operating rate when the stream formats do not provide a valid value, and avoid unnecessary codec resets.\u003c/li\u003e\n\u003cli\u003eRemove clipping of content for client-side inserted ads in the core player. Instead, \u003ccode\u003eAdsMediaSource\u003c/code\u003e takes care of the clipping logic. Custom client-side inserted ads sources need to be updated to implement the content clipping internally.\u003c/li\u003e\n\u003cli\u003eMark tracks with a well-formed but unrecognized codec profile or level as \u003ccode\u003esupported=NO_EXCEEDS_CAPABILITIES\u003c/code\u003e instead of \u003ccode\u003esupported=YES\u003c/code\u003e (which is how tracks with missing or malformed profile or level info are marked). This ensures these tracks (which are unlikely to be supported by the device) are not selected when there are better-supported alternatives.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eDefaultPreloadManager.SimpleRankingDataComparator\u003c/code\u003e, which is a \u003ccode\u003eRankingDataComparator\u003c/code\u003e that compares the ranks of the media items based on their distances to the index of the current playing media item. Apps can override its \u003ccode\u003ecompare(Integer, Integer)\u003c/code\u003e method if a more fine-tuned comparison logic is needed. The custom \u003ccode\u003eSimpleRankingDataComparator\u003c/code\u003e can be injected via a new constructor of \u003ccode\u003eDefaultPreloadManager.Builder\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eReduce the OOM risk of \u003ccode\u003eDefaultLoadControl.prioritizeTimeOverSizeThresholds\u003c/code\u003e by falling back to buffer byte size limits if available heap memory seems tight.\u003c/li\u003e\n\u003cli\u003eAlign handling of still images when \u003ccode\u003eMediaItem.imageDurationUs\u003c/code\u003e is not set: JPEG and HEIC still images now 'play' with a very short default duration (the same way PNG and other images previously behaved).\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eMediaSource.prepareSource(MediaSourceCaller, PlayerId, BandwidthMeter)\u003c/code\u003e to plumb \u003ccode\u003eBandwidthMeter\u003c/code\u003e to \u003ccode\u003eMediaSource\u003c/code\u003e. The deprecated method with custom implementation will still be called by default though, it is recommended to implement the new method and use \u003ccode\u003eBandwidthMeter.getTransferListener()\u003c/code\u003e to get parity to the old method.\u003c/li\u003e\n\u003cli\u003eIn \u003ccode\u003eDefaultBandwidthMeter\u003c/code\u003e, add support for a custom \u003ccode\u003eInitialBitrateSupplier\u003c/code\u003e. This allows apps to provide their own logic for determining the initial bitrate estimate, which will be used on creation of \u003ccode\u003eDefaultBandwidthMeter\u003c/code\u003e and on network type changes. The supplier can be set via \u003ccode\u003eDefaultBandwidthMeter.Builder.setInitialBitrateSupplier()\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eEnable dynamic scheduling by default. \u003ccode\u003eExoPlayer\u003c/code\u003e playback work loop will run dynamically as opposed to on a static interval.\u003c/li\u003e\n\u003cli\u003eRemove an unnecessary reset that can occur when joining tracks with pre-roll samples to active playback.\u003c/li\u003e\n\u003cli\u003eIn \u003ccode\u003eDefaultBandwidthMeter\u003c/code\u003e, optimize \u003ccode\u003egetInitialBitrateCountryGroupAssignment\u003c/code\u003e to return the country group assignments packed into a 32-bit integer instead of an array, reducing code size and avoiding allocations.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAudioTrack\u003c/code\u003e initialization failures on some devices by ensuring the retry logic always attempts a minimum of 1 second buffer size if other retries (by halving the buffer size) are unsuccessful (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3207\"\u003e#3207\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix codec issue on some devices where the codec was swallowing all samples if previously flushed before receiving input buffers.\u003c/li\u003e\n\u003cli\u003eAdd experimental \u003ccode\u003eExoPlayer.Builder.enablePerStreamMediaProgression()\u003c/code\u003e  to allow advancing media processing on a per-stream basis. This reduces startup latency between playlist items and avoids playback becoming \u0026quot;stuck\u0026quot; with very short content (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3122\"\u003e#3122\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix race condition related to audio session id usage where the initial audio session id auto-generated by \u003ccode\u003eExoPlayer\u003c/code\u003e would be used instead of the value set by \u003ccode\u003esetAudioSessionId\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3241\"\u003e#3241\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd experimental HAGC (ST 2094-50) timed metadata playback support for progressive media (e.g. MP4, Matroska). The player automatically merges HAGC metadata tracks with the associated video track and delivers the metadata out-of-band to the decoder on API 37+ devices. This behavior can be disabled via \u003ccode\u003eDefaultMediaSourceFactory.setExperimentalEnableHagcPlayback(false)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.selectionPriority\u003c/code\u003e representing the relative preference of the \u003ccode\u003eFormat\u003c/code\u003e in track selection (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3236\"\u003e#3236\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix potential scrubbing mode issue where scrubbing could stall when seeking to 'end of stream'.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eCompositionPlayer:\n\u003cul\u003e\n\u003cli\u003eFix an issue where \u003ccode\u003eTrackSelector\u003c/code\u003e instances were not being released.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTransformer:\n\u003cul\u003e\n\u003cli\u003eFix an issue where \u003ccode\u003eExportResult.fileSizeBytes\u003c/code\u003e may be over-reported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eExpose \u003ccode\u003eBaseTrackSelection.DEFAULT_FORMAT_COMPARATOR\u003c/code\u003e and add \u003ccode\u003eAdaptiveTrackSelection.Factory.setTrackFormatComparator\u003c/code\u003e to allow custom format ordering and ABR selection priority beyond bitrate-only ordering.\u003c/li\u003e\n\u003cli\u003eFix a timing-dependent concurrency issue where rapid sequential updates to track selection parameters could result in some updates being lost or overwritten.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP4, MP3, and FLAC: Add \u003ccode\u003eFLAG_DISABLE_ARTWORK_METADATA\u003c/code\u003e to allow discarding attached pictures and cover art metadata during container parsing to reduce runtime memory consumption (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2077\"\u003e#2077\u003c/a\u003e). This can also be enabled centrally via \u003ccode\u003eDefaultExtractorsFactory.setDisableArtworkMetadata\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for extracting ITU-T T.35 (\u003ccode\u003eit35\u003c/code\u003e) timed metadata tracks.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for extracting chapter metadata (both Nero and QuickTime formats). QuickTime chapters are preferred if both are present. The extracted chapter information is exposed as \u003ccode\u003eChapter\u003c/code\u003e entries within the track's \u003ccode\u003eMetadata\u003c/code\u003e, allowing for native chapter navigation in MP4, M4A, and M4B files (such as audiobooks and podcasts) (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2803\"\u003e#2803\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eWAV, Matroska, and MP4: Add support for 64-bit floating point PCM audio (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3090\"\u003e#3090\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMatroska: Use codec bitstream metadata to populate accurate \u003ccode\u003eColorInfo\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for seeking in fragmented MP4 files using the \u003ccode\u003emfra\u003c/code\u003e box when a \u003ccode\u003esidx\u003c/code\u003e box is not present. To enable this, provide \u003ccode\u003eFLAG_READ_MFRA_FOR_SEEK_MAP\u003c/code\u003e to the \u003ccode\u003eFragmentedMp4Extractor\u003c/code\u003e, which is now done by default in \u003ccode\u003eDefaultExtractorsFactory\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3088\"\u003e#3088\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eIgnore \u003ccode\u003eav1C\u003c/code\u003e data with unsupported version.\u003c/li\u003e\n\u003cli\u003eMP4: Add support for big-endian floating point PCM in \u003ccode\u003efpcm\u003c/code\u003e boxes.\u003c/li\u003e\n\u003cli\u003eMatroska: Parse chapter info to \u003ccode\u003eChapter\u003c/code\u003e entries in a track's \u003ccode\u003eMetadata\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eMPEG-TS: Improve extraction of DTS-HD and DTS Express streams by combining the Core and Extension Substream into a single sample, fixing playback issues where the two were previously output as separate samples (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3147\"\u003e#3147\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMP4: Prevent infinite loops and out-of-bounds reads when parsing empty \u003ccode\u003eilst\u003c/code\u003e metadata tag items (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3191\"\u003e#3191\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMPEG-TS: Ensure the last frame is rendered for streams where the last PES packet has a known length (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3206\"\u003e#3206\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMP3: Fix bitrate reporting for files with Xing and VBRI header.\u003c/li\u003e\n\u003cli\u003eMatroska: Handle tracks defined in the last cluster (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3250\"\u003e#3250\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMatroska: Add support for ALAC (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3268\"\u003e#3268\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/blob/release/RELEASENOTES.md\"\u003eandroidx.media3:media3-datasource-okhttp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e1.11.0 (2026-08-05)\u003c/h3\u003e\n\u003cp\u003eThis release includes the following changes since the\n\u003ca href=\"https://github.com/androidx/media/blob/release/#1101-2026-05-12\"\u003e1.10.1 release\u003c/a\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.channelMask\u003c/code\u003e to explicitly represent the audio channel mask,\nand a new \u003ccode\u003eUtil.getAudioTrackChannelConfig(Format)\u003c/code\u003e overload to safely\nresolve it.\u003c/li\u003e\n\u003cli\u003eUpgrade Kotlin from 2.0.20 to 2.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix a timing-dependent concurrency bug that could cause an\n\u003ccode\u003eIllegalStateException\u003c/code\u003e or \u003ccode\u003eIndexOutOfBoundsException\u003c/code\u003e in ExoPlayer.\u003c/li\u003e\n\u003cli\u003eRelax ad group count checks in \u003ccode\u003eAdsMediaSource\u003c/code\u003e to allow the ad group\ncount to decrease when an ad group is fully processed\n(\u003ccode\u003ehasUnplayedAds()\u003c/code\u003e is \u003ccode\u003efalse\u003c/code\u003e), accommodating dynamic ad group resizing\nduring reset workflows.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egetFlags()\u003c/code\u003e and \u003ccode\u003eFLAG_STRICT_DURATION\u003c/code\u003e to \u003ccode\u003eSampleStream\u003c/code\u003e to allow\nstreams to report flags, and update renderers to check these flags\ndynamically.\u003c/li\u003e\n\u003cli\u003eFall back to the frame rate estimator in \u003ccode\u003eMediaCodecVideoRenderer\u003c/code\u003e and\nto the codec output format in \u003ccode\u003eMediaCodecAudioRenderer\u003c/code\u003e to calculate the\ncodec operating rate when the stream formats do not provide a valid\nvalue, and avoid unnecessary codec resets.\u003c/li\u003e\n\u003cli\u003eRemove clipping of content for client-side inserted ads in the core\nplayer. Instead, \u003ccode\u003eAdsMediaSource\u003c/code\u003e takes care of the clipping logic.\nCustom client-side inserted ads sources need to be updated to implement\nthe content clipping internally.\u003c/li\u003e\n\u003cli\u003eMark tracks with a well-formed but unrecognized codec profile or level\nas \u003ccode\u003esupported=NO_EXCEEDS_CAPABILITIES\u003c/code\u003e instead of \u003ccode\u003esupported=YES\u003c/code\u003e (which\nis how tracks with missing or malformed profile or level info are\nmarked). This ensures these tracks (which are unlikely to be supported\nby the device) are not selected when there are better-supported\nalternatives.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eDefaultPreloadManager.SimpleRankingDataComparator\u003c/code\u003e, which is a\n\u003ccode\u003eRankingDataComparator\u003c/code\u003e that compares the ranks of the media items based\non their distances to the index of the current playing media item. Apps\ncan override its \u003ccode\u003ecompare(Integer, Integer)\u003c/code\u003e method if a more fine-tuned\ncomparison logic is needed. The custom \u003ccode\u003eSimpleRankingDataComparator\u003c/code\u003e can\nbe injected via a new constructor of \u003ccode\u003eDefaultPreloadManager.Builder\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eReduce the OOM risk of\n\u003ccode\u003eDefaultLoadControl.prioritizeTimeOverSizeThresholds\u003c/code\u003e by falling back to\nbuffer byte size limits if available heap memory seems tight.\u003c/li\u003e\n\u003cli\u003eAlign handling of still images when \u003ccode\u003eMediaItem.imageDurationUs\u003c/code\u003e is not\nset: JPEG and HEIC still images now 'play' with a very short default\nduration (the same way PNG and other images previously behaved).\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eMediaSource.prepareSource(MediaSourceCaller, PlayerId, BandwidthMeter)\u003c/code\u003e to plumb \u003ccode\u003eBandwidthMeter\u003c/code\u003e to \u003ccode\u003eMediaSource\u003c/code\u003e. The\ndeprecated method with custom implementation will still be called by\ndefault though, it is recommended to implement the new method and use\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/2bc207851df311340767e913931ca7b28cab1794\"\u003e\u003ccode\u003e2bc2078\u003c/code\u003e\u003c/a\u003e Merge branch 'release' into release-3.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/e156aec119c304d3de70a2fa69e08dc585b9d92b\"\u003e\u003ccode\u003ee156aec\u003c/code\u003e\u003c/a\u003e Update RELEASENOTES.md for the Media3 1.11.0 stable release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/458b232a5cd2e0114a0911a1ec1ee2e1f871086e\"\u003e\u003ccode\u003e458b232\u003c/code\u003e\u003c/a\u003e Update Media3 library version to 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/a51f7e92dd415c91e9ab3008d73ab19c2394830c\"\u003e\u003ccode\u003ea51f7e9\u003c/code\u003e\u003c/a\u003e Update release notes for 1.11.0-rc01\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/1c241543fb0df700f2221b1839e0f1886c268be2\"\u003e\u003ccode\u003e1c24154\u003c/code\u003e\u003c/a\u003e Bump version number for 1.11.0-rc01\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/fc38c2cda8789db646ae6a01e06494de059a2495\"\u003e\u003ccode\u003efc38c2c\u003c/code\u003e\u003c/a\u003e Fix unexpected onMediaItemTransition event on seek within same item\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/bb3d9921f14d900a2e76528f2d97cf82e925a499\"\u003e\u003ccode\u003ebb3d992\u003c/code\u003e\u003c/a\u003e Gate detached surface workaround on vendor API level\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/b33316303d3ef5ad0ede57cbc9dab6d8ab1e63a6\"\u003e\u003ccode\u003eb333163\u003c/code\u003e\u003c/a\u003e Catch ForegroundServiceStartNotAllowedException in stopSelfSafely.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/66d8d7a612ba4018ae073001168526592b60f32a\"\u003e\u003ccode\u003e66d8d7a\u003c/code\u003e\u003c/a\u003e Move workarounds disabling logic to DashHostedTest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/b220203994462ac7a8655a596afcfb45a68eaa10\"\u003e\u003ccode\u003eb220203\u003c/code\u003e\u003c/a\u003e Fix content resume offset calculation for asset list interstitials\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/androidx/media/compare/1.5.1...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.media3:media3-exoplayer-hls` from 1.5.1 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/releases\"\u003eandroidx.media3:media3-exoplayer-hls's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.channelMask\u003c/code\u003e to explicitly represent the audio channel mask, and a new \u003ccode\u003eUtil.getAudioTrackChannelConfig(Format)\u003c/code\u003e overload to safely resolve it.\u003c/li\u003e\n\u003cli\u003eUpgrade Kotlin from 2.0.20 to 2.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix a timing-dependent concurrency bug that could cause an \u003ccode\u003eIllegalStateException\u003c/code\u003e or \u003ccode\u003eIndexOutOfBoundsException\u003c/code\u003e in ExoPlayer.\u003c/li\u003e\n\u003cli\u003eRelax ad group count checks in \u003ccode\u003eAdsMediaSource\u003c/code\u003e to allow the ad group count to decrease when an ad group is fully processed\n(\u003ccode\u003ehasUnplayedAds()\u003c/code\u003e is \u003ccode\u003efalse\u003c/code\u003e), accommodating dynamic ad group resizing during reset workflows.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egetFlags()\u003c/code\u003e and \u003ccode\u003eFLAG_STRICT_DURATION\u003c/code\u003e to \u003ccode\u003eSampleStream\u003c/code\u003e to allow streams to report flags, and update renderers to check these flags dynamically.\u003c/li\u003e\n\u003cli\u003eFall back to the frame rate estimator in \u003ccode\u003eMediaCodecVideoRenderer\u003c/code\u003e and to the codec output format in \u003ccode\u003eMediaCodecAudioRenderer\u003c/code\u003e to calculate the codec operating rate when the stream formats do not provide a valid value, and avoid unnecessary codec resets.\u003c/li\u003e\n\u003cli\u003eRemove clipping of content for client-side inserted ads in the core player. Instead, \u003ccode\u003eAdsMediaSource\u003c/code\u003e takes care of the clipping logic. Custom client-side inserted ads sources need to be updated to implement the content clipping internally.\u003c/li\u003e\n\u003cli\u003eMark tracks with a well-formed but unrecognized codec profile or level as \u003ccode\u003esupported=NO_EXCEEDS_CAPABILITIES\u003c/code\u003e instead of \u003ccode\u003esupported=YES\u003c/code\u003e (which is how tracks with missing or malformed profile or level info are marked). This ensures these tracks (which are unlikely to be supported by the device) are not selected when there are better-supported alternatives.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eDefaultPreloadManager.SimpleRankingDataComparator\u003c/code\u003e, which is a \u003ccode\u003eRankingDataComparator\u003c/code\u003e that compares the ranks of the media items based on their distances to the index of the current playing media item. Apps can override its \u003ccode\u003ecompare(Integer, Integer)\u003c/code\u003e method if a more fine-tuned comparison logic is needed. The custom \u003ccode\u003eSimpleRankingDataComparator\u003c/...\n\n_Description has been truncated_","html_url":"https://github.com/rommapp/argosy-launcher/pull/394","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/rommapp%2Fargosy-launcher/issues/394","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/394/packages"}},{"old_version":"3.4.0","new_version":"3.7.0","update_type":"minor","path":null,"pr_created_at":"2026-08-29T06:04:38.000Z","version_change":"3.4.0 → 3.7.0","issue":{"uuid":"5284988987","node_id":"PR_kwDOEG2zEc8AAAABBa8j2A","number":432,"state":"closed","title":"Bump the gradle-dependencies-minor group across 1 directory with 26 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-12T06:04:26.000Z","author_association":null,"state_reason":null,"created_at":"2026-08-29T06:04:38.000Z","updated_at":"2026-09-12T06:04:28.000Z","time_to_close":1209588,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"gradle-dependencies-minor","update_count":26,"packages":[{"name":"com.google.gms:google-services","old_version":"4.3.13","new_version":"4.5.0"},{"name":"io.reactivex.rxjava2:rxjava","old_version":"2.2.10","new_version":"2.2.21","repository_url":"https://github.com/ReactiveX/RxJava"},{"name":"io.reactivex.rxjava2:rxkotlin","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/ReactiveX/RxKotlin"},{"name":"androidx.recyclerview:recyclerview","old_version":"1.2.1","new_version":"1.4.0"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm","old_version":"1.6.1","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"com.amazonaws:aws-android-sdk-core","old_version":"2.43.0","new_version":"2.81.1","repository_url":"https://github.com/aws/aws-sdk-android"},{"name":"com.google.code.gson:gson","old_version":"2.9.0","new_version":"2.14.0","repository_url":"https://github.com/google/gson"},{"name":"androidx.room:room-ktx","old_version":"2.5.2","new_version":"2.8.4"},{"name":"androidx.room:room-rxjava2","old_version":"2.5.2","new_version":"2.8.4"},{"name":"androidx.room:room-compiler","old_version":"2.5.2","new_version":"2.8.4"},{"name":"org.jetbrains.kotlinx:kotlinx-serialization-json","old_version":"1.3.1","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.serialization"},{"name":"androidx.constraintlayout:constraintlayout","old_version":"2.1.4","new_version":"2.2.2"},{"name":"com.google.android.material:material","old_version":"1.6.1","new_version":"1.14.0","repository_url":"https://github.com/material-components/material-components-android"},{"name":"androidx.core:core-ktx","old_version":"1.8.0","new_version":"1.19.0"},{"name":"androidx.compose.runtime:runtime","old_version":"1.5.0","new_version":"1.7.8"},{"name":"androidx.compose.ui:ui","old_version":"1.5.0","new_version":"1.7.8"},{"name":"androidx.compose.foundation:foundation","old_version":"1.5.0","new_version":"1.7.8"},{"name":"androidx.compose.foundation:foundation-layout","old_version":"1.5.0","new_version":"1.7.8"},{"name":"androidx.compose.material:material","old_version":"1.5.0","new_version":"1.7.8"},{"name":"androidx.compose.material:material-icons-extended","old_version":"1.5.0","new_version":"1.7.8"},{"name":"androidx.compose.runtime:runtime-livedata","old_version":"1.5.0","new_version":"1.7.8"},{"name":"androidx.compose.ui:ui-tooling","old_version":"1.5.0","new_version":"1.7.8"},{"name":"androidx.appcompat:appcompat","old_version":"1.4.2","new_version":"1.8.0"},{"name":"androidx.test.ext:junit","old_version":"1.1.3","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.4.0","new_version":"3.7.0"}],"path":null,"ecosystem":"maven"},"body":"Bumps the gradle-dependencies-minor group with 25 updates in the /android directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| com.google.gms:google-services | `4.3.13` | `4.5.0` |\n| [io.reactivex.rxjava2:rxjava](https://github.com/ReactiveX/RxJava) | `2.2.10` | `2.2.21` |\n| [io.reactivex.rxjava2:rxkotlin](https://github.com/ReactiveX/RxKotlin) | `2.3.0` | `2.4.0` |\n| androidx.recyclerview:recyclerview | `1.2.1` | `1.4.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm](https://github.com/Kotlin/kotlinx.coroutines) | `1.6.1` | `1.11.0` |\n| [com.amazonaws:aws-android-sdk-core](https://github.com/aws/aws-sdk-android) | `2.43.0` | `2.81.1` |\n| [com.google.code.gson:gson](https://github.com/google/gson) | `2.9.0` | `2.14.0` |\n| androidx.room:room-ktx | `2.5.2` | `2.8.4` |\n| androidx.room:room-rxjava2 | `2.5.2` | `2.8.4` |\n| androidx.room:room-compiler | `2.5.2` | `2.8.4` |\n| [org.jetbrains.kotlinx:kotlinx-serialization-json](https://github.com/Kotlin/kotlinx.serialization) | `1.3.1` | `1.11.0` |\n| androidx.constraintlayout:constraintlayout | `2.1.4` | `2.2.2` |\n| [com.google.android.material:material](https://github.com/material-components/material-components-android) | `1.6.1` | `1.14.0` |\n| androidx.core:core-ktx | `1.8.0` | `1.19.0` |\n| androidx.compose.runtime:runtime | `1.5.0` | `1.7.8` |\n| androidx.compose.ui:ui | `1.5.0` | `1.7.8` |\n| androidx.compose.foundation:foundation | `1.5.0` | `1.7.8` |\n| androidx.compose.foundation:foundation-layout | `1.5.0` | `1.7.8` |\n| androidx.compose.material:material | `1.5.0` | `1.7.8` |\n| androidx.compose.material:material-icons-extended | `1.5.0` | `1.7.8` |\n| androidx.compose.runtime:runtime-livedata | `1.5.0` | `1.7.8` |\n| androidx.compose.ui:ui-tooling | `1.5.0` | `1.7.8` |\n| androidx.appcompat:appcompat | `1.4.2` | `1.8.0` |\n| androidx.test.ext:junit | `1.1.3` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.4.0` | `3.7.0` |\n\n\nUpdates `com.google.gms:google-services` from 4.3.13 to 4.5.0\n\nUpdates `io.reactivex.rxjava2:rxjava` from 2.2.10 to 2.2.21\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ReactiveX/RxJava/releases\"\u003eio.reactivex.rxjava2:rxjava's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.2.21\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"http://search.maven.org/#artifactdetails%7Cio.reactivex.rxjava2%7Crxjava%7C2.2.21%7C\"\u003eMaven\u003c/a\u003e\n\u003ca href=\"http://reactivex.io/RxJava/2.x/javadoc/2.2.21\"\u003eJavaDocs\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e:warning: This is the last planned update for the 2.x version line. After \u003cstrong\u003eFebruary 28, 2021\u003c/strong\u003e, 2.x becomes \u003cstrong\u003eEnd-of-Life\u003c/strong\u003e (EoL); no further patches, bugfixes, enhancements, documentation or support will be provided by the project.\u003c/p\u003e\n\u003ch4\u003eEnhancements\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a system parameter to allow scheduled worker release in the Io \u003ccode\u003eScheduler\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/7162\"\u003e#7162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a system parameter to allow \u003ccode\u003eScheduler\u003c/code\u003es to use \u003ccode\u003eSystem.nanoTime()\u003c/code\u003e for \u003ccode\u003enow()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/7170\"\u003e#7170\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.2.20\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"http://search.maven.org/#artifactdetails%7Cio.reactivex.rxjava2%7Crxjava%7C2.2.20%7C\"\u003eMaven\u003c/a\u003e\n\u003ca href=\"http://reactivex.io/RxJava/2.x/javadoc/2.2.20\"\u003eJavaDocs\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e:warning: The 2.x version line is now in \u003cstrong\u003emaintenance mode\u003c/strong\u003e and will be supported only through bugfixes until \u003cstrong\u003eFebruary 28, 2021\u003c/strong\u003e. No new features, behavior changes or documentation adjustments will be accepted or applied to 2.x. It is recommended to migrate to \u003ca href=\"https://github.com/ReactiveX/RxJava/tree/3.x\"\u003e3.x\u003c/a\u003e within this time period.\u003c/p\u003e\n\u003ch4\u003eBugfixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eObservable.flatMap\u003c/code\u003e with \u003ccode\u003emaxConcurrency\u003c/code\u003e hangs (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/6960\"\u003e#6960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eObservable.toFlowable(ERROR)\u003c/code\u003e not cancelling upon \u003ccode\u003eMissingBackpressureException\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/7084\"\u003e#7084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eFlowable.concatMap\u003c/code\u003e backpressure with scalars. (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/7091\"\u003e#7091\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.2.19\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"http://search.maven.org/#artifactdetails%7Cio.reactivex.rxjava2%7Crxjava%7C2.2.19%7C\"\u003eMaven\u003c/a\u003e\n\u003ca href=\"http://reactivex.io/RxJava/2.x/javadoc/2.2.19\"\u003eJavaDocs\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e:warning: The 2.x version line is now in \u003cstrong\u003emaintenance mode\u003c/strong\u003e and will be supported only through bugfixes until \u003cstrong\u003eFebruary 28, 2021\u003c/strong\u003e. No new features, behavior changes or documentation adjustments will be accepted or applied to 2.x. It is recommended to migrate to \u003ca href=\"https://github.com/ReactiveX/RxJava/tree/3.x\"\u003e3.x\u003c/a\u003e within this time period.\u003c/p\u003e\n\u003ch4\u003eBugfixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxJava/commit/7980c85b18dd46ec2cd2cf49477363f1268d3a98\"\u003eCommit 7980c85b\u003c/a\u003e: Fix \u003ccode\u003eswitchMap\u003c/code\u003e not canceling properly during \u003ccode\u003eonNext\u003c/code\u003e-\u003ccode\u003ecancel\u003c/code\u003e races.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.2.18\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"http://search.maven.org/#artifactdetails%7Cio.reactivex.rxjava2%7Crxjava%7C2.2.18%7C\"\u003eMaven\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e:warning: The 2.x version line is now in \u003cstrong\u003emaintenance mode\u003c/strong\u003e and will be supported only through bugfixes until \u003cstrong\u003eFebruary 28, 2021\u003c/strong\u003e. No new features, behavior changes or documentation adjustments will be accepted or applied to 2.x. It is recommended to migrate to \u003ca href=\"https://github.com/ReactiveX/RxJava/tree/3.x\"\u003e3.x\u003c/a\u003e within this time period.\u003c/p\u003e\n\u003ch4\u003eBugfixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/pull/6894\"\u003ePull 6894\u003c/a\u003e: Fix \u003ccode\u003egroupBy\u003c/code\u003e not requesting more if a group is cancelled with buffered items.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.2.17\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"http://search.maven.org/#artifactdetails%7Cio.reactivex.rxjava2%7Crxjava%7C2.2.17%7C\"\u003eMaven\u003c/a\u003e\u003c/p\u003e\n\u003ch4\u003eBugfixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/pull/6827\"\u003ePull 6827\u003c/a\u003e: Fix \u003ccode\u003eFlowable.flatMap\u003c/code\u003e not canceling the inner sources on outer error.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ReactiveX/RxJava/blob/v2.2.21/CHANGES.md\"\u003eio.reactivex.rxjava2:rxjava's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eVersion 2.2.21 - February 10, 2021 (\u003ca href=\"http://search.maven.org/#artifactdetails%7Cio.reactivex.rxjava2%7Crxjava%7C2.2.21%7C\"\u003eMaven\u003c/a\u003e)\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"http://reactivex.io/RxJava/2.x/javadoc/2.2.21\"\u003eJavaDocs\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e:warning: This is the last planned update for the 2.x version line. After \u003cstrong\u003eFebruary 28, 2021\u003c/strong\u003e, 2.x becomes \u003cstrong\u003eEnd-of-Life\u003c/strong\u003e (EoL); no further patches, bugfixes, enhancements, documentation or support will be provided by the project.\u003c/p\u003e\n\u003ch4\u003eEnhancements\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a system parameter to allow scheduled worker release in the Io \u003ccode\u003eScheduler\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/7162\"\u003e#7162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a system parameter to allow \u003ccode\u003eScheduler\u003c/code\u003es to use \u003ccode\u003eSystem.nanoTime()\u003c/code\u003e for \u003ccode\u003enow()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/7170\"\u003e#7170\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eVersion 2.2.20 - October 6, 2020 (\u003ca href=\"http://search.maven.org/#artifactdetails%7Cio.reactivex.rxjava2%7Crxjava%7C2.2.20%7C\"\u003eMaven\u003c/a\u003e)\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"http://reactivex.io/RxJava/2.x/javadoc/2.2.20\"\u003eJavaDocs\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e:warning: The 2.x version line is now in \u003cstrong\u003emaintenance mode\u003c/strong\u003e and will be supported only through bugfixes until \u003cstrong\u003eFebruary 28, 2021\u003c/strong\u003e. No new features, behavior changes or documentation adjustments will be accepted or applied to 2.x. It is recommended to migrate to \u003ca href=\"https://github.com/ReactiveX/RxJava/tree/3.x\"\u003e3.x\u003c/a\u003e within this time period.\u003c/p\u003e\n\u003ch4\u003eBugfixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eObservable.flatMap\u003c/code\u003e with \u003ccode\u003emaxConcurrency\u003c/code\u003e hangs (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/6960\"\u003e#6960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eObservable.toFlowable(ERROR)\u003c/code\u003e not cancelling upon \u003ccode\u003eMissingBackpressureException\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/7084\"\u003e#7084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eFlowable.concatMap\u003c/code\u003e backpressure with scalars. (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/7091\"\u003e#7091\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eVersion 2.2.19 - March 14, 2020 (\u003ca href=\"http://search.maven.org/#artifactdetails%7Cio.reactivex.rxjava2%7Crxjava%7C2.2.19%7C\"\u003eMaven\u003c/a\u003e)\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"http://reactivex.io/RxJava/2.x/javadoc/2.2.19\"\u003eJavaDocs\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e:warning: The 2.x version line is now in \u003cstrong\u003emaintenance mode\u003c/strong\u003e and will be supported only through bugfixes until \u003cstrong\u003eFebruary 28, 2021\u003c/strong\u003e. No new features, behavior changes or documentation adjustments will be accepted or applied to 2.x. It is recommended to migrate to \u003ca href=\"https://github.com/ReactiveX/RxJava/tree/3.x\"\u003e3.x\u003c/a\u003e within this time period.\u003c/p\u003e\n\u003ch4\u003eBugfixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxJava/commit/7980c85b18dd46ec2cd2cf49477363f1268d3a98\"\u003eCommit 7980c85b\u003c/a\u003e: Fix \u003ccode\u003eswitchMap\u003c/code\u003e not canceling properly during \u003ccode\u003eonNext\u003c/code\u003e-\u003ccode\u003ecancel\u003c/code\u003e races.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eVersion 2.2.18 - February 21, 2020 (\u003ca href=\"http://search.maven.org/#artifactdetails%7Cio.reactivex.rxjava2%7Crxjava%7C2.2.18%7C\"\u003eMaven\u003c/a\u003e)\u003c/h3\u003e\n\u003cp\u003e:warning: The 2.x version line is now in \u003cstrong\u003emaintenance mode\u003c/strong\u003e and will be supported only through bugfixes until \u003cstrong\u003eFebruary 28, 2021\u003c/strong\u003e. No new features, behavior changes or documentation adjustments will be accepted or applied to 2.x. It is recommended to migrate to \u003ca href=\"https://github.com/ReactiveX/RxJava/tree/3.x\"\u003e3.x\u003c/a\u003e within this time period.\u003c/p\u003e\n\u003ch4\u003eBugfixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/pull/6894\"\u003ePull 6894\u003c/a\u003e: Fix \u003ccode\u003egroupBy\u003c/code\u003e not requesting more if a group is cancelled with buffered items.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eVersion 2.2.17 - January 12, 2020 (\u003ca href=\"http://search.maven.org/#artifactdetails%7Cio.reactivex.rxjava2%7Crxjava%7C2.2.17%7C\"\u003eMaven\u003c/a\u003e)\u003c/h3\u003e\n\u003ch4\u003eBugfixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/pull/6827\"\u003ePull 6827\u003c/a\u003e: Fix \u003ccode\u003eFlowable.flatMap\u003c/code\u003e not canceling the inner sources on outer error.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eVersion 2.2.16 - December 15, 2019 (\u003ca href=\"http://search.maven.org/#artifactdetails%7Cio.reactivex.rxjava2%7Crxjava%7C2.2.16%7C\"\u003eMaven\u003c/a\u003e)\u003c/h3\u003e\n\u003ch4\u003eBugfixes\u003c/h4\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxJava/commit/725ea89629568301ab7d9b21cafdf8c648a14da9\"\u003e\u003ccode\u003e725ea89\u003c/code\u003e\u003c/a\u003e Update CHANGES.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxJava/commit/776f0e55d97432799def8927c0e770154500686b\"\u003e\u003ccode\u003e776f0e5\u003c/code\u003e\u003c/a\u003e 2.x: Introduce property rx2.scheduler.use-nanotime (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/7154\"\u003e#7154\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/7170\"\u003e#7170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxJava/commit/f31aed36fd9d47edf0177164c54c64d4dc28c818\"\u003e\u003ccode\u003ef31aed3\u003c/code\u003e\u003c/a\u003e Support for scheduled release of threads in Io Scheduler (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/7162\"\u003e#7162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxJava/commit/947b05fb9d44de2231aa148ef2eb3a6edc07fcfd\"\u003e\u003ccode\u003e947b05f\u003c/code\u003e\u003c/a\u003e Release 2.2.20\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxJava/commit/3d6403be8d9ada65016762a6bec417e268f482e3\"\u003e\u003ccode\u003e3d6403b\u003c/code\u003e\u003c/a\u003e 2.x: Fix Flowable.concatMap backpressure w/ scalars (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/7091\"\u003e#7091\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxJava/commit/b13a45e161f37c927e99d8def5f156834a83befb\"\u003e\u003ccode\u003eb13a45e\u003c/code\u003e\u003c/a\u003e 2.x: Fix toFlowable(ERROR) not cancelling upon MBE (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/7084\"\u003e#7084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxJava/commit/2cb20bd41efe70556ef7d346ee60f70e20548bae\"\u003e\u003ccode\u003e2cb20bd\u003c/code\u003e\u003c/a\u003e 2.x: Fix Observable.flatMap with maxConcurrency hangs (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/6947\"\u003e#6947\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ReactiveX/RxJava/issues/6960\"\u003e#6960\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxJava/commit/7ca43c7398810ee87c57f7f2165104822c0a4662\"\u003e\u003ccode\u003e7ca43c7\u003c/code\u003e\u003c/a\u003e Update CHANGES.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxJava/commit/7980c85b18dd46ec2cd2cf49477363f1268d3a98\"\u003e\u003ccode\u003e7980c85\u003c/code\u003e\u003c/a\u003e 2.x: Fix switchMap not canceling properly during onNext-cancel races\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxJava/commit/e2b7816f2bcf89491cad68cb35a9e36368a29d97\"\u003e\u003ccode\u003ee2b7816\u003c/code\u003e\u003c/a\u003e Release 2.2.18\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ReactiveX/RxJava/compare/v2.2.10...v2.2.21\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.reactivex.rxjava2:rxkotlin` from 2.3.0 to 2.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ReactiveX/RxKotlin/releases\"\u003eio.reactivex.rxjava2:rxkotlin's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRxKotlin 2.4.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin updated to 1.3.40\u003c/li\u003e\n\u003cli\u003eRxJava updated to 2.2.10\u003c/li\u003e\n\u003cli\u003eMigrated to Gradle 5.4.1 and Gradle Kotlin DSL\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRxKotlin 2.4.0-beta.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin updated to 1.3.40\u003c/li\u003e\n\u003cli\u003eRxJava updated to 2.2.10\u003c/li\u003e\n\u003cli\u003eMigrated to Gradle 5.4.1 and Gradle Kotlin DSL\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxKotlin/commit/7a21c3e66e726e7970917e96163581d7b8f267e0\"\u003e\u003ccode\u003e7a21c3e\u003c/code\u003e\u003c/a\u003e prepare version 2.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxKotlin/commit/f14889222a1026d8048a2ded3f70dbe3031c9dd6\"\u003e\u003ccode\u003ef148892\u003c/code\u003e\u003c/a\u003e handle compiler warnings in tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxKotlin/commit/b35000f7674308fa3de119921d5481168a06d66a\"\u003e\u003ccode\u003eb35000f\u003c/code\u003e\u003c/a\u003e specify function return types explicitly; break long functions into multiple ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxKotlin/commit/9c2893771ed53363b816505858352f6a5e6aac67\"\u003e\u003ccode\u003e9c28937\u003c/code\u003e\u003c/a\u003e change rxjava dependency from implementation to api\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxKotlin/commit/b383b81c938de3bde3b5a37f04454020a1be040b\"\u003e\u003ccode\u003eb383b81\u003c/code\u003e\u003c/a\u003e Prepare 2.4.0-beta.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxKotlin/commit/f79973a4800ecd8b1376309c6bfe3b72218212f8\"\u003e\u003ccode\u003ef79973a\u003c/code\u003e\u003c/a\u003e Update publication pom\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxKotlin/commit/704a97bdde83fade127e6a599df9856ec884e8c4\"\u003e\u003ccode\u003e704a97b\u003c/code\u003e\u003c/a\u003e Prepare 2.4.0-beta release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxKotlin/commit/acff6f4ec42b776a9c0319c1a3d902f60a138477\"\u003e\u003ccode\u003eacff6f4\u003c/code\u003e\u003c/a\u003e Update readme files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxKotlin/commit/92df626e310f2933519f1d1fa6d742fb32b15b14\"\u003e\u003ccode\u003e92df626\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ReactiveX/RxKotlin/issues/218\"\u003e#218\u003c/a\u003e from ReactiveX/2.x-migr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ReactiveX/RxKotlin/commit/c6c1133ea9195ce9bf08de131683d6e66260ddec\"\u003e\u003ccode\u003ec6c1133\u003c/code\u003e\u003c/a\u003e Minor publishing changes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ReactiveX/RxKotlin/compare/2.3.0...2.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.recyclerview:recyclerview` from 1.2.1 to 1.4.0\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm` from 1.6.1 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-core-jvm's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-core-jvm's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874\"\u003e\u003ccode\u003e8564f65\u003c/code\u003e\u003c/a\u003e Version 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c\"\u003e\u003ccode\u003ea4c6af9\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9\"\u003e\u003ccode\u003eef917b4\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd\"\u003e\u003ccode\u003e5ebc421\u003c/code\u003e\u003c/a\u003e Update the release procedure description (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80\"\u003e\u003ccode\u003e95f46a0\u003c/code\u003e\u003c/a\u003e Remove old maven repository settings (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672\"\u003e#4672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc\"\u003e\u003ccode\u003eb4f4f0a\u003c/code\u003e\u003c/a\u003e Fix package name of \u003ccode\u003eToMapCollectionSamplesTest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674\"\u003e#4674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/86738dca7dc9ac82249abc8206263fa0065ee631\"\u003e\u003ccode\u003e86738dc\u003c/code\u003e\u003c/a\u003e Added templates to the issue creation wizard (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/330fcc221fb583f0b119f34191f735a73b827378\"\u003e\u003ccode\u003e330fcc2\u003c/code\u003e\u003c/a\u003e Version 1.11.0-rc02\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/e31cef6e9f2d26794be7d75ecbf3033b6432d582\"\u003e\u003ccode\u003ee31cef6\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/dc6e9f61eaf3a67f4bf474a7987aedc3f16cef37\"\u003e\u003ccode\u003edc6e9f6\u003c/code\u003e\u003c/a\u003e Restore Promise-related functions on Wasm/JS as HIDDEN (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/compare/1.6.1...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.amazonaws:aws-android-sdk-core` from 2.43.0 to 2.81.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aws/aws-sdk-android/releases\"\u003ecom.amazonaws:aws-android-sdk-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eAWS SDK for Android 2.81.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate native libraries with 16KB page alignment support (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3677\"\u003e#3677\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMaintenance Mode Announcement (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3675\"\u003e#3675\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate rexml to 3.4.2 to resolve dependabot alert (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAWS SDK for Android 2.81.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for setting query parameters for the tokens endpoint (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3669\"\u003e#3669\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove special characters before calling xargs in notify comment (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3661\"\u003e#3661\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAWS SDK for Android 2.80.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for ap-east-2 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3665\"\u003e#3665\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate release_pr.yml (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3667\"\u003e#3667\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAWS SDK for Android 2.79.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for mx-central-1 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3656\"\u003e#3656\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAWS SDK for Android 2.78.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for ap-southeast-7 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3654\"\u003e#3654\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAWS SDK for Android 2.77.1\u003c/h2\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate rexml (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3632\"\u003e#3632\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate License to Apache 2.0 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/pull/3634\"\u003e#3634\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAWS SDK for Android 2.77.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esupport for ap-southeast-5 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3629\"\u003e#3629\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate rexml (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3623\"\u003e#3623\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate docs links for gen2 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3622\"\u003e#3622\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Conscrypt to support 16KB page size (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3627\"\u003e#3627\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake exception within UserStateDetails public (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3628\"\u003e#3628\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAWS SDK for Android 2.76.1\u003c/h2\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSet the ForegroundServiceType for TransferService (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3620\"\u003e#3620\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKVS - Add Support for More Resolution Widths (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3609\"\u003e#3609\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/blob/main/CHANGELOG.md\"\u003ecom.amazonaws:aws-android-sdk-core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/releases/tag/release_v2.81.1\"\u003eRelease 2.81.1\u003c/a\u003e\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate native libraries with 16KB page alignment support (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3677\"\u003e#3677\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMaintenance Mode Announcement (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3675\"\u003e#3675\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate rexml to 3.4.2 to resolve dependabot alert (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/compare/release_v2.81.0...release_v2.81.1\"\u003eSee all changes between 2.81.0 and 2.81.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/releases/tag/release_v2.81.0\"\u003eRelease 2.81.0\u003c/a\u003e\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for setting query parameters for the tokens endpoint (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3669\"\u003e#3669\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove special characters before calling xargs in notify comment (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3661\"\u003e#3661\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/compare/release_v2.80.0...release_v2.81.0\"\u003eSee all changes between 2.80.0 and 2.81.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/releases/tag/release_v2.80.0\"\u003eRelease 2.80.0\u003c/a\u003e\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for ap-east-2 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3665\"\u003e#3665\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate release_pr.yml (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3667\"\u003e#3667\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/compare/release_v2.79.0...release_v2.80.0\"\u003eSee all changes between 2.79.0 and 2.80.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/releases/tag/release_v2.79.0\"\u003eRelease 2.79.0\u003c/a\u003e\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for mx-central-1 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3656\"\u003e#3656\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/compare/release_v2.78.0...release_v2.79.0\"\u003eSee all changes between 2.78.0 and 2.79.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/releases/tag/release_v2.78.0\"\u003eRelease 2.78.0\u003c/a\u003e\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for ap-southeast-7 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3654\"\u003e#3654\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/compare/release_v2.77.1...release_v2.78.0\"\u003eSee all changes between 2.77.1 and 2.78.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/releases/tag/release_v2.77.1\"\u003eRelease 2.77.1\u003c/a\u003e\u003c/h2\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate rexml (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3632\"\u003e#3632\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate License to Apache 2.0 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/pull/3634\"\u003e#3634\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/fabdb0623cb31b3b9a2ad7a6c5797ec3dc5c1edb\"\u003e\u003ccode\u003efabdb06\u003c/code\u003e\u003c/a\u003e release: AWS SDK for Android 2.81.1 (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3678\"\u003e#3678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/979d48837686a2f28ff3d99c0f88130ea1a2e9e9\"\u003e\u003ccode\u003e979d488\u003c/code\u003e\u003c/a\u003e fix: Update native libraries with 16KB page alignment support (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3677\"\u003e#3677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/99c4f87bd5193bdc609622d875a5c9d518e79417\"\u003e\u003ccode\u003e99c4f87\u003c/code\u003e\u003c/a\u003e Update rexml to 3.4.2 to resolve dependabot alert (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/5db7cfd67c1cf898eb85b0a4636ee490bdbb5e4e\"\u003e\u003ccode\u003e5db7cfd\u003c/code\u003e\u003c/a\u003e Maintenance Mode Announcement (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3675\"\u003e#3675\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/860556c52bf5f3791a97049e6ed24d2d70d8f129\"\u003e\u003ccode\u003e860556c\u003c/code\u003e\u003c/a\u003e release: AWS SDK for Android 2.81.0 (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3670\"\u003e#3670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/f76af9aeb58bd48a3489dc0d849f92a8de4689d1\"\u003e\u003ccode\u003ef76af9a\u003c/code\u003e\u003c/a\u003e Remove support for setting query parameters for the tokens endpoint (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3669\"\u003e#3669\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/4a6b0b36aa6ae4f5dfa76b047fa3f15d4b160567\"\u003e\u003ccode\u003e4a6b0b3\u003c/code\u003e\u003c/a\u003e Remove special characters before calling xargs in notify comment (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3661\"\u003e#3661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/a3cd44261211abca68cd093ca2a5b8fa34e1acea\"\u003e\u003ccode\u003ea3cd442\u003c/code\u003e\u003c/a\u003e release: AWS SDK for Android 2.80.0 (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3668\"\u003e#3668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/4f891374dc439e5eba4dee0ff5cd9d7a20a19a1a\"\u003e\u003ccode\u003e4f89137\u003c/code\u003e\u003c/a\u003e Update release_pr.yml (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3667\"\u003e#3667\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/4b8b0a04fedfb92060bb7f9171dcf81076877a08\"\u003e\u003ccode\u003e4b8b0a0\u003c/code\u003e\u003c/a\u003e feat: Support for ap-east-2 (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3665\"\u003e#3665\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aws/aws-sdk-android/compare/release_v2.43.0...release_v2.81.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.amazonaws:aws-android-sdk-iot` from 2.43.0 to 2.81.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aws/aws-sdk-android/releases\"\u003ecom.amazonaws:aws-android-sdk-iot's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eAWS SDK for Android 2.81.1\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate native libraries with 16KB page alignment support (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3677\"\u003e#3677\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMaintenance Mode Announcement (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3675\"\u003e#3675\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate rexml to 3.4.2 to resolve dependabot alert (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAWS SDK for Android 2.81.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for setting query parameters for the tokens endpoint (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3669\"\u003e#3669\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove special characters before calling xargs in notify comment (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3661\"\u003e#3661\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAWS SDK for Android 2.80.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for ap-east-2 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3665\"\u003e#3665\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate release_pr.yml (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3667\"\u003e#3667\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAWS SDK for Android 2.79.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for mx-central-1 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3656\"\u003e#3656\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAWS SDK for Android 2.78.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for ap-southeast-7 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3654\"\u003e#3654\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAWS SDK for Android 2.77.1\u003c/h2\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate rexml (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3632\"\u003e#3632\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate License to Apache 2.0 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/pull/3634\"\u003e#3634\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAWS SDK for Android 2.77.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esupport for ap-southeast-5 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3629\"\u003e#3629\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate rexml (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3623\"\u003e#3623\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate docs links for gen2 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3622\"\u003e#3622\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Conscrypt to support 16KB page size (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3627\"\u003e#3627\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake exception within UserStateDetails public (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3628\"\u003e#3628\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAWS SDK for Android 2.76.1\u003c/h2\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSet the ForegroundServiceType for TransferService (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3620\"\u003e#3620\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKVS - Add Support for More Resolution Widths (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3609\"\u003e#3609\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/blob/main/CHANGELOG.md\"\u003ecom.amazonaws:aws-android-sdk-iot's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/releases/tag/release_v2.81.1\"\u003eRelease 2.81.1\u003c/a\u003e\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate native libraries with 16KB page alignment support (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3677\"\u003e#3677\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMaintenance Mode Announcement (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3675\"\u003e#3675\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate rexml to 3.4.2 to resolve dependabot alert (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/compare/release_v2.81.0...release_v2.81.1\"\u003eSee all changes between 2.81.0 and 2.81.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/releases/tag/release_v2.81.0\"\u003eRelease 2.81.0\u003c/a\u003e\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for setting query parameters for the tokens endpoint (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3669\"\u003e#3669\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove special characters before calling xargs in notify comment (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3661\"\u003e#3661\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/compare/release_v2.80.0...release_v2.81.0\"\u003eSee all changes between 2.80.0 and 2.81.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/releases/tag/release_v2.80.0\"\u003eRelease 2.80.0\u003c/a\u003e\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for ap-east-2 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3665\"\u003e#3665\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate release_pr.yml (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3667\"\u003e#3667\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/compare/release_v2.79.0...release_v2.80.0\"\u003eSee all changes between 2.79.0 and 2.80.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/releases/tag/release_v2.79.0\"\u003eRelease 2.79.0\u003c/a\u003e\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for mx-central-1 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3656\"\u003e#3656\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/compare/release_v2.78.0...release_v2.79.0\"\u003eSee all changes between 2.78.0 and 2.79.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/releases/tag/release_v2.78.0\"\u003eRelease 2.78.0\u003c/a\u003e\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for ap-southeast-7 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3654\"\u003e#3654\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/compare/release_v2.77.1...release_v2.78.0\"\u003eSee all changes between 2.77.1 and 2.78.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/releases/tag/release_v2.77.1\"\u003eRelease 2.77.1\u003c/a\u003e\u003c/h2\u003e\n\u003ch3\u003eMiscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate rexml (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/issues/3632\"\u003e#3632\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate License to Apache 2.0 (\u003ca href=\"https://redirect.github.com/aws-amplify/aws-sdk-android/pull/3634\"\u003e#3634\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/fabdb0623cb31b3b9a2ad7a6c5797ec3dc5c1edb\"\u003e\u003ccode\u003efabdb06\u003c/code\u003e\u003c/a\u003e release: AWS SDK for Android 2.81.1 (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3678\"\u003e#3678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/979d48837686a2f28ff3d99c0f88130ea1a2e9e9\"\u003e\u003ccode\u003e979d488\u003c/code\u003e\u003c/a\u003e fix: Update native libraries with 16KB page alignment support (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3677\"\u003e#3677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/99c4f87bd5193bdc609622d875a5c9d518e79417\"\u003e\u003ccode\u003e99c4f87\u003c/code\u003e\u003c/a\u003e Update rexml to 3.4.2 to resolve dependabot alert (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/5db7cfd67c1cf898eb85b0a4636ee490bdbb5e4e\"\u003e\u003ccode\u003e5db7cfd\u003c/code\u003e\u003c/a\u003e Maintenance Mode Announcement (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3675\"\u003e#3675\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/860556c52bf5f3791a97049e6ed24d2d70d8f129\"\u003e\u003ccode\u003e860556c\u003c/code\u003e\u003c/a\u003e release: AWS SDK for Android 2.81.0 (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3670\"\u003e#3670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/f76af9aeb58bd48a3489dc0d849f92a8de4689d1\"\u003e\u003ccode\u003ef76af9a\u003c/code\u003e\u003c/a\u003e Remove support for setting query parameters for the tokens endpoint (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3669\"\u003e#3669\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/4a6b0b36aa6ae4f5dfa76b047fa3f15d4b160567\"\u003e\u003ccode\u003e4a6b0b3\u003c/code\u003e\u003c/a\u003e Remove special characters before calling xargs in notify comment (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3661\"\u003e#3661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/a3cd44261211abca68cd093ca2a5b8fa34e1acea\"\u003e\u003ccode\u003ea3cd442\u003c/code\u003e\u003c/a\u003e release: AWS SDK for Android 2.80.0 (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3668\"\u003e#3668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/4f891374dc439e5eba4dee0ff5cd9d7a20a19a1a\"\u003e\u003ccode\u003e4f89137\u003c/code\u003e\u003c/a\u003e Update release_pr.yml (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3667\"\u003e#3667\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws-amplify/aws-sdk-android/commit/4b8b0a04fedfb92060bb7f9171dcf81076877a08\"\u003e\u003ccode\u003e4b8b0a0\u003c/code\u003e\u003c/a\u003e feat: Support for ap-east-2 (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-android/issues/3665\"\u003e#3665\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aws/aws-sdk-android/compare/release_v2.43.0...release_v2.81.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.code.gson:gson` from 2.9.0 to 2.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/gson/releases\"\u003ecom.google.code.gson:gson's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eGson 2.14.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type adapters for \u003ccode\u003ejava.time\u003c/code\u003e classes by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2948\"\u003egoogle/gson#2948\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWhen the \u003ccode\u003ejava.time\u003c/code\u003e API is available, Gson automatically can read and write instances of classes like \u003ccode\u003eInstant\u003c/code\u003e and \u003ccode\u003eDuration\u003c/code\u003e. The format it uses essentially freezes the JSON representation that \u003ccode\u003eReflectiveTypeAdapterFactory\u003c/code\u003e established by default, based on the private fields of \u003ccode\u003ejava.time\u003c/code\u003e classes. That's not a great representation, but it is understandable. Changing it to anything else would break compatibility with systems that are expecting the current format.\u003c/p\u003e\n\u003cp\u003eWith this change, Gson no longer tries to access private fields of these classes using reflection. So it is no longer necessary to run with \u003ccode\u003e--add-opens\u003c/code\u003e for these classes on recent JDKs.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003ecom.google.gson.graph\u003c/code\u003e by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2990\"\u003egoogle/gson#2990\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis package was not part of any released artifact and depended on Gson internals in potentially problematic ways.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eValidate that strings being parsed as integers consist of ASCII characters by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2995\"\u003egoogle/gson#2995\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003ePreviously, strings could contain non-ASCII Unicode digits and still be parsed as integers. That's inconsistent with how JSON numbers are treated.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix duplicate key detection when first value is null by \u003ca href=\"https://github.com/andrewstellman\"\u003e\u003ccode\u003e@​andrewstellman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/3006\"\u003egoogle/gson#3006\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis could potentially break code that was relying on the incorrect behaviour. For example, this JSON string was previously accepted but will no longer be: \u003ccode\u003e{\u0026quot;foo\u0026quot;: null, \u0026quot;foo\u0026quot;: bar}\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003eSerializable\u003c/code\u003e from internal \u003ccode\u003eType\u003c/code\u003e implementation classes. by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/3011\"\u003egoogle/gson#3011\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe nested classes \u003ccode\u003eParameterizedTypeImpl\u003c/code\u003e, \u003ccode\u003eGenericArrayTypeImpl\u003c/code\u003e, and \u003ccode\u003eWildcardTypeImpl\u003c/code\u003e in \u003ccode\u003eGsonTypes\u003c/code\u003e are implementations of the corresponding types (without \u003ccode\u003eImpl\u003c/code\u003e) in \u003ccode\u003ejava.lang.reflect\u003c/code\u003e. For some reason, they were serializable, even though the \u003ccode\u003ejava.lang.reflect\u003c/code\u003e implementations are not. Having unnecessarily serializable classes could \u003cem\u003econceivably\u003c/em\u003e have been a security problem if they were part of a larger exploit using serialization. (We do not consider this a likely scenario and do not suggest that you need to update Gson just to get this change.)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eLegacyProtoTypeAdapterFactory\u003c/code\u003e. by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/3014\"\u003egoogle/gson#3014\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is not part of any released artifact, but may be of use when trying to fix code that is currently accessing the internals of protobuf classes via reflection.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake AppendableWriter do flush and close if delegation object supports by \u003ca href=\"https://github.com/MukjepScarlet\"\u003e\u003ccode\u003e@​MukjepScarlet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2925\"\u003egoogle/gson#2925\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther less visible changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd default capacity to EnumTypeAdapter maps by \u003ca href=\"https://github.com/MukjepScarlet\"\u003e\u003ccode\u003e@​MukjepScarlet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2959\"\u003egoogle/gson#2959\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: move derived adapters from Gson to TypeAdapters by \u003ca href=\"https://github.com/MukjepScarlet\"\u003e\u003ccode\u003e@​MukjepScarlet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2951\"\u003egoogle/gson#2951\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOptimize \u003ccode\u003enew Gson()\u003c/code\u003e by \u003ca href=\"https://github.com/MukjepScarlet\"\u003e\u003ccode\u003e@​MukjepScarlet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2864\"\u003egoogle/gson#2864\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ThirdGoddess\"\u003e\u003ccode\u003e@​ThirdGoddess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/google/gson/pull/2944\"\u003egoogle/gson#2944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lmj798\"\u003e\u003ccode\u003e@​lmj798\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/google/gson/pull/2988\"\u003egoogle/gson#2988\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Eng-YasminKotb\"\u003e\u003ccode\u003e@​Eng-YasminKotb\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/google/gson/pull/3005\"\u003egoogle/gson#3005\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/andrewstellman\"\u003e\u003ccode\u003e@​andrewstellman\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/google/gson/pull/3006\"\u003egoogle/gson#3006\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/gson/compare/gson-parent-2.13.2...gson-parent-2.14.0\"\u003ehttps://github.com/google/gson/compare/gson-parent-2.13.2...gson-parent-2.14.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eGson 2.13.2\u003c/h2\u003e\n\u003cp\u003eThe main changes in this release are just newer dependencies.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/gson/blob/main/CHANGELOG.md\"\u003ecom.google.code.gson:gson's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChange Log\u003c/h1\u003e\n\u003cp\u003eThe change log for versions newer than 2.10 is available only on the \u003ca href=\"https://github.com/google/gson/releases\"\u003eGitHub Releases page\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eVersion 2.10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for serializing and deserializing Java records, on Java ≥ 16. (\u003ca href=\"https://redirect.github.com/google/gson/pull/2201\"\u003egoogle/gson#2201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eJsonArray.asList\u003c/code\u003e and \u003ccode\u003eJsonObject.asMap\u003c/code\u003e view methods (\u003ca href=\"https://redirect.github.com/google/gson/pull/2225\"\u003egoogle/gson#2225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeAdapterRuntimeTypeWrapper\u003c/code\u003e not detecting reflective \u003ccode\u003eTreeTypeAdapter\u003c/code\u003e and \u003ccode\u003eFutureTypeAdapter\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/gson/pull/1787\"\u003egoogle/gson#1787\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003eJsonReader.skipValue()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/gson/pull/2062\"\u003egoogle/gson#2062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePerform numeric conversion for primitive numeric type adapters (\u003ca href=\"https://redirect.github.com/google/gson/pull/2158\"\u003egoogle/gson#2158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eGson.fromJson(..., TypeToken)\u003c/code\u003e overloads (\u003ca href=\"https://redirect.github.com/google/gson/pull/1700\"\u003egoogle/gson#1700\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix changes to \u003ccode\u003eGsonBuilder\u003c/code\u003e affecting existing \u003ccode\u003eGson\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/google/gson/pull/1815\"\u003egoogle/gson#1815\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eJsonElement\u003c/code\u003e conversion methods more consistent and fix javadoc (\u003ca href=\"https://redirect.github.com/google/gson/pull/2178\"\u003egoogle/gson#2178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eThrow \u003ccode\u003eUnsupportedOperationException\u003c/code\u003e when \u003ccode\u003eJsonWriter.jsonValue\u003c/code\u003e is not supported (\u003ca href=\"https://redirect.github.com/google/gson/pull/1651\"\u003egoogle/gson#1651\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDisallow \u003ccode\u003eJsonObject\u003c/code\u003e \u003ccode\u003eEntry.setValue(null)\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/gson/pull/2167\"\u003egoogle/gson#2167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeAdapter.toJson\u003c/code\u003e throwing AssertionError for custom IOException (\u003ca href=\"https://redirect.github.com/google/gson/pull/2172\"\u003egoogle/gson#2172\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eConvert null to JsonNull for \u003ccode\u003eJsonArray.set\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/gson/pull/2170\"\u003egoogle/gson#2170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed nullSafe usage. (\u003ca href=\"https://redirect.github.com/google/gson/pull/1555\"\u003egoogle/gson#1555\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eValidate \u003ccode\u003eTypeToken.getParameterized\u003c/code\u003e arguments (\u003ca href=\"https://redirect.github.com/google/gson/pull/2166\"\u003egoogle/gson#2166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/google/gson/issues/1702\"\u003e#1702\u003c/a\u003e: Gson.toJson creates CharSequence which does not implement toString (\u003ca href=\"https://redirect.github.com/google/gson/pull/1703\"\u003egoogle/gson#1703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrefer existing adapter for concurrent \u003ccode\u003eGson.getAdapter\u003c/code\u003e calls (\u003ca href=\"https://redirect.github.com/google/gson/pull/2153\"\u003egoogle/gson#2153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003eArrayTypeAdapter\u003c/code\u003e for \u003ccode\u003eObject[]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/gson/pull/1716\"\u003egoogle/gson#1716\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003eAppendableWriter\u003c/code\u003e performance (\u003ca href=\"https://redirect.github.com/google/gson/pull/1706\"\u003egoogle/gson#1706\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 2.9.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003eObject\u003c/code\u003e and \u003ccode\u003eJsonElement\u003c/code\u003e deserialization iterative rather than\nrecursive (\u003ca href=\"https://redirect.github.com/google/gson/pull/1912\"\u003egoogle/gson#1912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded parsing support for enum that has overridden toString() method (\u003ca href=\"https://redirect.github.com/google/gson/pull/1950\"\u003egoogle/gson#1950\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved support for building Gson with Gradle (\u003ca href=\"https://redirect.github.com/google/gson/pull/2081\"\u003egoogle/gson#2081\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved obsolete \u003ccode\u003ecodegen\u003c/code\u003e hierarchy (\u003ca href=\"https://redirect.github.com/google/gson/pull/2099\"\u003egoogle/gson#2099\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for reflection access filter (\u003ca href=\"https://redirect.github.com/google/gson/pull/1905\"\u003egoogle/gson#1905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003eTypeToken\u003c/code\u003e creation validation (\u003ca href=\"https://redirect.github.com/google/gson/pull/2072\"\u003egoogle/gson#2072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd explicit support for \u003ccode\u003efloat\u003c/code\u003e in \u003ccode\u003eJsonWriter\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/gson/pull/2130\"\u003egoogle/gson#2130\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/gson/pull/2132\"\u003egoogle/gson#2132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFail when parsing invalid local date (\u003ca href=\"https://redirect.github.com/google/gson/pull/2134\"\u003egoogle/gson#2134\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAlso many small improvements to javadoc.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/3ff35d6269894901ab8006258395aafc4b9765cd\"\u003e\u003ccode\u003e3ff35d6\u003c/code\u003e\u003c/a\u003e [maven-release-plugin] prepare release gson-parent-2.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/a3024fde2a5c12b9a9a0b6b914ae4899aa574d81\"\u003e\u003ccode\u003ea3024fd\u003c/code\u003e\u003c/a\u003e Bump the maven group with 13 updates (\u003ca href=\"https://redirect.github.com/google/gson/issues/3002\"\u003e#3002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/5689ffe44952ca6ed44c595886b9043286311b23\"\u003e\u003ccode\u003e5689ffe\u003c/code\u003e\u003c/a\u003e Bump the github-actions group across 1 directory with 3 updates (\u003ca href=\"https://redirect.github.com/google/gson/issues/3018\"\u003e#3018\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/48db33cbf93af6b2f5b117dfdfd826de47f7229c\"\u003e\u003ccode\u003e48db33c\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eLegacyProtoTypeAdapterFactory\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/google/gson/issues/3014\"\u003e#3014\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/53d703ee76ca3e951fa4a727307c1f28dbcaf3aa\"\u003e\u003ccode\u003e53d703e\u003c/code\u003e\u003c/a\u003e Update outdated comment regarding serializable types (\u003ca href=\"https://redirect.github.com/google/gson/issues/3012\"\u003e#3012\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/0189b727761f31596d1a27b7c60b42478dc9f331\"\u003e\u003ccode\u003e0189b72\u003c/code\u003e\u003c/a\u003e Remove \u003ccode\u003eSerializable\u003c/code\u003e from internal \u003ccode\u003eType\u003c/code\u003e implementation classes. (\u003ca href=\"https://redirect.github.com/google/gson/issues/3011\"\u003e#3011\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/f4d371d29c04066dbe7fdb31f642831f9c7f40cd\"\u003e\u003ccode\u003ef4d371d\u003c/code\u003e\u003c/a\u003e Fix duplicate key detection when first value is null (\u003ca href=\"https://redirect.github.com/google/gson/issues/3006\"\u003e#3006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/27d9ba1eeeeb156540cf5397504a4f9f256e911f\"\u003e\u003ccode\u003e27d9ba1\u003c/code\u003e\u003c/a\u003e Fix typo in README (JPMS dependencies section) (\u003ca href=\"https://redirect.github.com/google/gson/issues/3005\"\u003e#3005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/1fa9b7a0a994b006b3be00e2df9de778e71e6807\"\u003e\u003ccode\u003e1fa9b7a\u003c/code\u003e\u003c/a\u003e Validate that strings being parsed as integers consist of ASCII characters (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/b7d59549188867deb42e46073fb38735a5beda1c\"\u003e\u003ccode\u003eb7d5954\u003c/code\u003e\u003c/a\u003e Add iterator fail-fast tests for LinkedTreeMap.clear() (\u003ca href=\"https://redirect.github.com/google/gson/issues/2992\"\u003e#2992\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/gson/compare/gson-parent-2.9.0...gson-parent-2.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.room:room-ktx` from 2.5.2 to 2.8.4\n\nUpdates `androidx.room:room-rxjava2` from 2.5.2 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.5.2 to 2.8.4\n\nUpdates `androidx.room:room-rxjava2` from 2.5.2 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.5.2 to 2.8.4\n\nUpdates `org.jetbrains.kotlinx:kotlinx-serialization-json` from 1.3.1 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-serialization-json's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.20 and provides a new Json exceptions API and some bugfixes and improvements.\u003c/p\u003e\n\u003ch2\u003eExpose Json exceptions structure\u003c/h2\u003e\n\u003cp\u003eTo make working with exceptions easier and providing proper error codes in e.g., R...\n\n_Description has been truncated_","html_url":"https://github.com/dlrgsbz/beachist/pull/432","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/dlrgsbz%2Fbeachist/issues/432","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/432/packages"}},{"old_version":"3.6.1","new_version":"3.7.0","update_type":"minor","path":null,"pr_created_at":"2026-08-29T03:53:02.000Z","version_change":"3.6.1 → 3.7.0","issue":{"uuid":"5284417555","node_id":"PR_kwDOTKxwZ88AAAABBaf2Jw","number":6,"state":"closed","title":"Bump the dependencies group with 97 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-09-12T03:25:45.000Z","author_association":null,"state_reason":null,"created_at":"2026-08-29T03:53:02.000Z","updated_at":"2026-09-12T03:25:47.000Z","time_to_close":1207963,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"dependencies","update_count":97,"packages":[{"name":"gradle-wrapper","old_version":"8.14.2","new_version":"9.7.1","repository_url":"https://github.com/gradle/gradle"},{"name":"com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin","old_version":"2.2.0-2.0.2","new_version":"2.3.11","repository_url":"https://github.com/google/ksp"},{"name":"com.google.devtools.ksp","old_version":"2.2.0-2.0.2","new_version":"2.3.11","repository_url":"https://github.com/google/ksp"},{"name":"org.jetbrains.kotlin:kotlin-gradle-plugin","old_version":"2.2.0","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin:kotlin-annotation-processing-embeddable","old_version":"2.2.0","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin:kotlin-compiler-embeddable","old_version":"2.2.0","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin:kotlin-reflect","old_version":"2.2.0","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin:kotlin-stdlib-jdk8","old_version":"2.2.0","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin:kotlin-serialization","old_version":"2.2.0","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin:compose-compiler-gradle-plugin","old_version":"2.2.0","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin:kotlin-test","old_version":"2.2.0","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.android","old_version":"2.2.0","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.2.0","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.2.0","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-android","old_version":"1.10.2","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-play-services","old_version":"1.10.2","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-test","old_version":"1.10.2","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-swing","old_version":"1.10.2","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"org.jetbrains.kotlinx:kotlinx-serialization-json","old_version":"1.9.0","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.serialization"},{"name":"org.jetbrains.kotlinx:kotlinx-collections-immutable","old_version":"0.4.0","new_version":"0.5.1","repository_url":"https://github.com/Kotlin/kotlinx.collections.immutable"},{"name":"org.jetbrains.kotlinx:kotlinx-datetime","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/Kotlin/kotlinx-datetime"},{"name":"com.google.protobuf:protobuf-gradle-plugin","old_version":"0.9.5","new_version":"0.10.0","repository_url":"https://github.com/google/protobuf-gradle-plugin"},{"name":"com.google.protobuf","old_version":"0.9.5","new_version":"0.10.0"},{"name":"com.braisgabin.detekt:kotlin-compiler-wrapper","old_version":"0.0.4","new_version":"0.1.0","repository_url":"https://github.com/BraisGabin/detekt-compiler-rules"},{"name":"io.nlopez.compose.rules:detekt","old_version":"0.4.22","new_version":"0.6.4","repository_url":"https://github.com/mrmans0n/compose-rules"},{"name":"uk.kulikov.detekt.decompose:decompose-detekt-rules","old_version":"1.0.1","new_version":"2.0.0","repository_url":"https://github.com/LionZXY/detekt-decompose-rule"},{"name":"androidx.core:core-splashscreen","old_version":"1.1.0-rc01","new_version":"1.2.0"},{"name":"com.google.android.material:material","old_version":"1.12.0","new_version":"1.14.0","repository_url":"https://github.com/material-components/material-components-android"},{"name":"com.google.android.horologist:horologist-compose-layout","old_version":"0.6.23","new_version":"0.7.15","repository_url":"https://github.com/google/horologist"},{"name":"tech.annexflow.compose:constraintlayout-compose-multiplatform","old_version":"0.6.0","new_version":"0.8.2","repository_url":"https://github.com/Lavmee/constraintlayout-compose-multiplatform"},{"name":"androidx.paging:paging-compose","old_version":"3.3.6","new_version":"3.5.1"},{"name":"org.jetbrains.compose:compose-gradle-plugin","old_version":"1.8.2","new_version":"1.12.0","repository_url":"https://github.com/JetBrains/compose-multiplatform"},{"name":"io.coil-kt.coil3:coil","old_version":"3.2.0","new_version":"3.5.0","repository_url":"https://github.com/coil-kt/coil"},{"name":"io.coil-kt.coil3:coil-compose","old_version":"3.2.0","new_version":"3.5.0","repository_url":"https://github.com/coil-kt/coil"},{"name":"io.coil-kt.coil3:coil-svg","old_version":"3.2.0","new_version":"3.5.0","repository_url":"https://github.com/coil-kt/coil"},{"name":"io.coil-kt.coil3:coil-network-ktor3","old_version":"3.2.0","new_version":"3.5.0","repository_url":"https://github.com/coil-kt/coil"},{"name":"com.vladsch.flexmark:flexmark","old_version":"0.42.14","new_version":"0.64.8","repository_url":"https://github.com/vsch/flexmark-java"},{"name":"com.mikepenz:multiplatform-markdown-renderer","old_version":"0.35.0","new_version":"0.44.0","repository_url":"https://github.com/mikepenz/multiplatform-markdown-renderer"},{"name":"androidx.room:room-runtime","old_version":"2.7.2","new_version":"2.8.4"},{"name":"androidx.room:room-compiler","old_version":"2.7.2","new_version":"2.8.4"},{"name":"androidx.room:room-ktx","old_version":"2.7.2","new_version":"2.8.4"},{"name":"com.google.dagger:dagger","old_version":"2.56.2","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"com.google.dagger:dagger-compiler","old_version":"2.56.2","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"me.gulya.anvil:annotations","old_version":"0.3.0-beta03","new_version":"0.4.0","repository_url":"https://github.com/IlyaGulya/anvil-utils"},{"name":"me.gulya.anvil:compiler","old_version":"0.3.0-beta03","new_version":"0.4.0","repository_url":"https://github.com/IlyaGulya/anvil-utils"},{"name":"dev.zacsweers.anvil:annotations","old_version":"0.4.1","new_version":"0.5.4","repository_url":"https://github.com/zacsweers/anvil"},{"name":"dev.zacsweers.anvil:compiler-api","old_version":"0.4.1","new_version":"0.5.4","repository_url":"https://github.com/zacsweers/anvil"},{"name":"dev.zacsweers.anvil:compiler","old_version":"0.4.1","new_version":"0.5.4","repository_url":"https://github.com/zacsweers/anvil"},{"name":"dev.zacsweers.anvil:compiler-utils","old_version":"0.4.1","new_version":"0.5.4","repository_url":"https://github.com/zacsweers/anvil"},{"name":"dev.zacsweers.anvil:gradle-plugin","old_version":"0.4.1","new_version":"0.5.4","repository_url":"https://github.com/zacsweers/anvil"},{"name":"dev.zacsweers.anvil","old_version":"0.4.1","new_version":"0.5.4","repository_url":"https://github.com/zacsweers/anvil"},{"name":"io.sentry:sentry-android","old_version":"8.16.0","new_version":"8.53.0","repository_url":"https://github.com/getsentry/sentry-java"},{"name":"io.sentry:sentry-android-timber","old_version":"8.16.0","new_version":"8.53.0","repository_url":"https://github.com/getsentry/sentry-java"},{"name":"io.sentry:sentry-android-gradle-plugin","old_version":"5.8.0","new_version":"6.19.0","repository_url":"https://github.com/getsentry/sentry-android-gradle-plugin"},{"name":"net.lingala.zip4j:zip4j","old_version":"2.11.5","new_version":"2.11.6","repository_url":"https://github.com/srikanth-lingala/zip4j"},{"name":"ly.count.android:sdk","old_version":"25.4.2","new_version":"26.1.5","repository_url":"https://github.com/Countly/countly-sdk-android"},{"name":"org.slf4j:slf4j-api","old_version":"1.7.36","new_version":"2.0.18"},{"name":"androidx.core:core-ktx","old_version":"1.16.0","new_version":"1.19.0"},{"name":"androidx.test.ext:junit","old_version":"1.2.1","new_version":"1.3.0"},{"name":"it.unimi.dsi:fastutil","old_version":"8.5.16","new_version":"8.5.19","repository_url":"https://github.com/vigna/fastutil"},{"name":"androidx.appcompat:appcompat","old_version":"1.7.1","new_version":"1.8.0"},{"name":"androidx.core:core","old_version":"1.16.0","new_version":"1.19.0"},{"name":"io.ktor:ktor-client-android","old_version":"3.1.2","new_version":"3.5.2","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-content-negotiation","old_version":"3.1.2","new_version":"3.5.2","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-serialization-kotlinx-json","old_version":"3.1.2","new_version":"3.5.2","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-logging-jvm","old_version":"3.1.2","new_version":"3.5.2","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-client-mock","old_version":"3.1.2","new_version":"3.5.2","repository_url":"https://github.com/ktorio/ktor"},{"name":"org.apache.commons:commons-compress","old_version":"1.27.1","new_version":"1.28.0","repository_url":"https://github.com/apache/commons-compress"},{"name":"commons-codec:commons-codec","old_version":"1.18.0","new_version":"1.22.1","repository_url":"https://github.com/apache/commons-codec"},{"name":"no.nordicsemi.android:ble","old_version":"2.10.1","new_version":"2.11.0","repository_url":"https://github.com/NordicSemiconductor/Android-BLE-Library"},{"name":"no.nordicsemi.android:ble-common","old_version":"2.10.1","new_version":"2.11.0","repository_url":"https://github.com/NordicSemiconductor/Android-BLE-Library"},{"name":"com.fazecast:jSerialComm","old_version":"2.11.2","new_version":"2.11.4","repository_url":"https://github.com/Fazecast/jSerialComm"},{"name":"com.airbnb.android:lottie-compose","old_version":"6.6.7","new_version":"6.7.1","repository_url":"https://github.com/airbnb/lottie-android"},{"name":"com.google.protobuf:protobuf-kotlin-lite","old_version":"4.31.1","new_version":"4.36.0"},{"name":"com.google.protobuf:protoc","old_version":"4.31.1","new_version":"4.36.0","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"org.mockito.kotlin:mockito-kotlin","old_version":"5.4.0","new_version":"6.3.0","repository_url":"https://github.com/mockito/mockito-kotlin"},{"name":"org.robolectric:robolectric","old_version":"4.15.1","new_version":"4.16.1","repository_url":"https://github.com/robolectric/robolectric"},{"name":"io.mockk:mockk","old_version":"1.14.4","new_version":"1.14.11","repository_url":"https://github.com/mockk/mockk"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.6.1","new_version":"3.7.0"},{"name":"androidx.test.uiautomator:uiautomator","old_version":"2.3.0","new_version":"2.4.0"},{"name":"androidx.wear:wear","old_version":"1.3.0","new_version":"1.4.0"},{"name":"com.google.android.gms:play-services-wearable","old_version":"19.0.0","new_version":"20.0.1"},{"name":"androidx.wear:wear-phone-interactions","old_version":"1.1.0","new_version":"1.1.1"},{"name":"com.google.firebase:firebase-messaging","old_version":"24.1.2","new_version":"25.1.2","repository_url":"https://github.com/firebase/firebase-android-sdk"},{"name":"com.arkivanov.decompose:decompose","old_version":"3.3.0","new_version":"3.5.0","repository_url":"https://github.com/arkivanov/Decompose"},{"name":"com.arkivanov.decompose:extensions-compose","old_version":"3.3.0","new_version":"3.5.0","repository_url":"https://github.com/arkivanov/Decompose"},{"name":"net.engawapg.lib:zoomable","old_version":"2.8.1","new_version":"2.13.0","repository_url":"https://github.com/usuiat/Zoomable"},{"name":"com.squareup.okio:okio","old_version":"3.14.0","new_version":"3.18.1","repository_url":"https://github.com/lysine-dev/okio"},{"name":"com.squareup.okio:okio-fakefilesystem","old_version":"3.14.0","new_version":"3.18.1","repository_url":"https://github.com/lysine-dev/okio"},{"name":"com.android.tools.build:gradle","old_version":"8.11.0","new_version":"9.3.2"},{"name":"com.android.application","old_version":"8.11.0","new_version":"9.3.2"},{"name":"com.android.library","old_version":"8.11.0","new_version":"9.3.2"},{"name":"com.android.test","old_version":"8.11.0","new_version":"9.3.2"},{"name":"com.google.gms.google-services","old_version":"4.4.3","new_version":"4.5.0"},{"name":"androidx.baselineprofile","old_version":"1.3.4","new_version":"1.4.1"},{"name":"com.github.gmazzo.buildconfig","old_version":"5.6.7","new_version":"6.0.10","repository_url":"https://github.com/gmazzo/gradle-buildconfig-plugin"},{"name":"com.squareup.wire","old_version":"5.3.3","new_version":"6.4.7","repository_url":"https://github.com/square/wire"}],"path":null,"ecosystem":"maven"},"body":"Bumps the dependencies group with 97 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `8.14.2` | `9.7.1` |\n| [com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin](https://github.com/google/ksp) | `2.2.0-2.0.2` | `2.3.11` |\n| [com.google.devtools.ksp](https://github.com/google/ksp) | `2.2.0-2.0.2` | `2.3.11` |\n| [org.jetbrains.kotlin:kotlin-gradle-plugin](https://github.com/JetBrains/kotlin) | `2.2.0` | `2.4.10` |\n| [org.jetbrains.kotlin:kotlin-annotation-processing-embeddable](https://github.com/JetBrains/kotlin) | `2.2.0` | `2.4.10` |\n| [org.jetbrains.kotlin:kotlin-compiler-embeddable](https://github.com/JetBrains/kotlin) | `2.2.0` | `2.4.10` |\n| [org.jetbrains.kotlin:kotlin-reflect](https://github.com/JetBrains/kotlin) | `2.2.0` | `2.4.10` |\n| [org.jetbrains.kotlin:kotlin-stdlib-jdk8](https://github.com/JetBrains/kotlin) | `2.2.0` | `2.4.10` |\n| [org.jetbrains.kotlin:kotlin-serialization](https://github.com/JetBrains/kotlin) | `2.2.0` | `2.4.10` |\n| [org.jetbrains.kotlin:compose-compiler-gradle-plugin](https://github.com/JetBrains/kotlin) | `2.2.0` | `2.4.10` |\n| [org.jetbrains.kotlin:kotlin-test](https://github.com/JetBrains/kotlin) | `2.2.0` | `2.4.10` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.2.0` | `2.4.10` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.2.0` | `2.4.10` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.2.0` | `2.4.10` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-android](https://github.com/Kotlin/kotlinx.coroutines) | `1.10.2` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-play-services](https://github.com/Kotlin/kotlinx.coroutines) | `1.10.2` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-test](https://github.com/Kotlin/kotlinx.coroutines) | `1.10.2` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-swing](https://github.com/Kotlin/kotlinx.coroutines) | `1.10.2` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-serialization-json](https://github.com/Kotlin/kotlinx.serialization) | `1.9.0` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-collections-immutable](https://github.com/Kotlin/kotlinx.collections.immutable) | `0.4.0` | `0.5.1` |\n| [org.jetbrains.kotlinx:kotlinx-datetime](https://github.com/Kotlin/kotlinx-datetime) | `0.7.0` | `0.8.0` |\n| [com.google.protobuf:protobuf-gradle-plugin](https://github.com/google/protobuf-gradle-plugin) | `0.9.5` | `0.10.0` |\n| com.google.protobuf | `0.9.5` | `0.10.0` |\n| [com.braisgabin.detekt:kotlin-compiler-wrapper](https://github.com/BraisGabin/detekt-compiler-rules) | `0.0.4` | `0.1.0` |\n| [io.nlopez.compose.rules:detekt](https://github.com/mrmans0n/compose-rules) | `0.4.22` | `0.6.4` |\n| [uk.kulikov.detekt.decompose:decompose-detekt-rules](https://github.com/LionZXY/detekt-decompose-rule) | `1.0.1` | `2.0.0` |\n| androidx.core:core-splashscreen | `1.1.0-rc01` | `1.2.0` |\n| [com.google.android.material:material](https://github.com/material-components/material-components-android) | `1.12.0` | `1.14.0` |\n| [com.google.android.horologist:horologist-compose-layout](https://github.com/google/horologist) | `0.6.23` | `0.7.15` |\n| [tech.annexflow.compose:constraintlayout-compose-multiplatform](https://github.com/Lavmee/constraintlayout-compose-multiplatform) | `0.6.0` | `0.8.2` |\n| androidx.paging:paging-compose | `3.3.6` | `3.5.1` |\n| [org.jetbrains.compose:compose-gradle-plugin](https://github.com/JetBrains/compose-multiplatform) | `1.8.2` | `1.12.0` |\n| [io.coil-kt.coil3:coil](https://github.com/coil-kt/coil) | `3.2.0` | `3.5.0` |\n| [io.coil-kt.coil3:coil-compose](https://github.com/coil-kt/coil) | `3.2.0` | `3.5.0` |\n| [io.coil-kt.coil3:coil-svg](https://github.com/coil-kt/coil) | `3.2.0` | `3.5.0` |\n| [io.coil-kt.coil3:coil-network-ktor3](https://github.com/coil-kt/coil) | `3.2.0` | `3.5.0` |\n| [com.vladsch.flexmark:flexmark](https://github.com/vsch/flexmark-java) | `0.42.14` | `0.64.8` |\n| [com.mikepenz:multiplatform-markdown-renderer](https://github.com/mikepenz/multiplatform-markdown-renderer) | `0.35.0` | `0.44.0` |\n| androidx.room:room-runtime | `2.7.2` | `2.8.4` |\n| androidx.room:room-compiler | `2.7.2` | `2.8.4` |\n| androidx.room:room-ktx | `2.7.2` | `2.8.4` |\n| [com.google.dagger:dagger](https://github.com/google/dagger) | `2.56.2` | `2.60.1` |\n| [com.google.dagger:dagger-compiler](https://github.com/google/dagger) | `2.56.2` | `2.60.1` |\n| [me.gulya.anvil:annotations](https://github.com/IlyaGulya/anvil-utils) | `0.3.0-beta03` | `0.4.0` |\n| [me.gulya.anvil:compiler](https://github.com/IlyaGulya/anvil-utils) | `0.3.0-beta03` | `0.4.0` |\n| [dev.zacsweers.anvil:annotations](https://github.com/zacsweers/anvil) | `0.4.1` | `0.5.4` |\n| [dev.zacsweers.anvil:compiler-api](https://github.com/zacsweers/anvil) | `0.4.1` | `0.5.4` |\n| [dev.zacsweers.anvil:compiler](https://github.com/zacsweers/anvil) | `0.4.1` | `0.5.4` |\n| [dev.zacsweers.anvil:compiler-utils](https://github.com/zacsweers/anvil) | `0.4.1` | `0.5.4` |\n| [dev.zacsweers.anvil:gradle-plugin](https://github.com/zacsweers/anvil) | `0.4.1` | `0.5.4` |\n| [dev.zacsweers.anvil](https://github.com/zacsweers/anvil) | `0.4.1` | `0.5.4` |\n| [io.sentry:sentry-android](https://github.com/getsentry/sentry-java) | `8.16.0` | `8.53.0` |\n| [io.sentry:sentry-android-timber](https://github.com/getsentry/sentry-java) | `8.16.0` | `8.53.0` |\n| [io.sentry:sentry-android-gradle-plugin](https://github.com/getsentry/sentry-android-gradle-plugin) | `5.8.0` | `6.19.0` |\n| [net.lingala.zip4j:zip4j](https://github.com/srikanth-lingala/zip4j) | `2.11.5` | `2.11.6` |\n| [ly.count.android:sdk](https://github.com/Countly/countly-sdk-android) | `25.4.2` | `26.1.5` |\n| org.slf4j:slf4j-api | `1.7.36` | `2.0.18` |\n| androidx.core:core-ktx | `1.16.0` | `1.19.0` |\n| androidx.test.ext:junit | `1.2.1` | `1.3.0` |\n| [it.unimi.dsi:fastutil](https://github.com/vigna/fastutil) | `8.5.16` | `8.5.19` |\n| androidx.appcompat:appcompat | `1.7.1` | `1.8.0` |\n| androidx.core:core | `1.16.0` | `1.19.0` |\n| [io.ktor:ktor-client-android](https://github.com/ktorio/ktor) | `3.1.2` | `3.5.2` |\n| [io.ktor:ktor-client-content-negotiation](https://github.com/ktorio/ktor) | `3.1.2` | `3.5.2` |\n| [io.ktor:ktor-serialization-kotlinx-json](https://github.com/ktorio/ktor) | `3.1.2` | `3.5.2` |\n| [io.ktor:ktor-client-logging-jvm](https://github.com/ktorio/ktor) | `3.1.2` | `3.5.2` |\n| [io.ktor:ktor-client-mock](https://github.com/ktorio/ktor) | `3.1.2` | `3.5.2` |\n| [org.apache.commons:commons-compress](https://github.com/apache/commons-compress) | `1.27.1` | `1.28.0` |\n| [commons-codec:commons-codec](https://github.com/apache/commons-codec) | `1.18.0` | `1.22.1` |\n| [no.nordicsemi.android:ble](https://github.com/NordicSemiconductor/Android-BLE-Library) | `2.10.1` | `2.11.0` |\n| [no.nordicsemi.android:ble-common](https://github.com/NordicSemiconductor/Android-BLE-Library) | `2.10.1` | `2.11.0` |\n| [com.fazecast:jSerialComm](https://github.com/Fazecast/jSerialComm) | `2.11.2` | `2.11.4` |\n| [com.airbnb.android:lottie-compose](https://github.com/airbnb/lottie-android) | `6.6.7` | `6.7.1` |\n| com.google.protobuf:protobuf-kotlin-lite | `4.31.1` | `4.36.0` |\n| [com.google.protobuf:protoc](https://github.com/protocolbuffers/protobuf) | `4.31.1` | `4.36.0` |\n| [org.mockito.kotlin:mockito-kotlin](https://github.com/mockito/mockito-kotlin) | `5.4.0` | `6.3.0` |\n| [org.robolectric:robolectric](https://github.com/robolectric/robolectric) | `4.15.1` | `4.16.1` |\n| [io.mockk:mockk](https://github.com/mockk/mockk) | `1.14.4` | `1.14.11` |\n| androidx.test.espresso:espresso-core | `3.6.1` | `3.7.0` |\n| androidx.test.uiautomator:uiautomator | `2.3.0` | `2.4.0` |\n| androidx.wear:wear | `1.3.0` | `1.4.0` |\n| com.google.android.gms:play-services-wearable | `19.0.0` | `20.0.1` |\n| androidx.wear:wear-phone-interactions | `1.1.0` | `1.1.1` |\n| [com.google.firebase:firebase-messaging](https://github.com/firebase/firebase-android-sdk) | `24.1.2` | `25.1.2` |\n| [com.arkivanov.decompose:decompose](https://github.com/arkivanov/Decompose) | `3.3.0` | `3.5.0` |\n| [com.arkivanov.decompose:extensions-compose](https://github.com/arkivanov/Decompose) | `3.3.0` | `3.5.0` |\n| [net.engawapg.lib:zoomable](https://github.com/usuiat/Zoomable) | `2.8.1` | `2.13.0` |\n| [com.squareup.okio:okio](https://github.com/lysine-dev/okio) | `3.14.0` | `3.18.1` |\n| [com.squareup.okio:okio-fakefilesystem](https://github.com/lysine-dev/okio) | `3.14.0` | `3.18.1` |\n| com.android.tools.build:gradle | `8.11.0` | `9.3.2` |\n| com.android.application | `8.11.0` | `9.3.2` |\n| com.android.library | `8.11.0` | `9.3.2` |\n| com.android.test | `8.11.0` | `9.3.2` |\n| com.google.gms.google-services | `4.4.3` | `4.5.0` |\n| androidx.baselineprofile | `1.3.4` | `1.4.1` |\n| [com.github.gmazzo.buildconfig](https://github.com/gmazzo/gradle-buildconfig-plugin) | `5.6.7` | `6.0.10` |\n| [com.squareup.wire](https://github.com/square/wire) | `5.3.3` | `6.4.7` |\n\nUpdates `gradle-wrapper` from 8.14.2 to 9.7.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gradle/gradle/releases\"\u003egradle-wrapper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.7.1\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.7.1.\u003c/p\u003e\n\u003cp\u003eThis is a patch release for 9.7.0. We recommend using 9.7.1 instead of 9.7.0.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of 9.7.0 release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIsolated Projects graduates to incubating\u003c/li\u003e\n\u003cli\u003eBroader Configuration Cache compatibility\u003c/li\u003e\n\u003cli\u003eResilient Sync helps you fix broken builds\u003c/li\u003e\n\u003cli\u003eMore source locations in problem reports\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gradle.org/9.7.1/release-notes.html\"\u003eRead the Release Notes\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe would like to thank the following community members for their contributions to this release of Gradle:\n\u003ca href=\"https://github.com/aSemy\"\u003eAdam\u003c/a\u003e,\n\u003ca href=\"https://github.com/Gautam-aman\"\u003eAman Gautam\u003c/a\u003e,\n\u003ca href=\"https://github.com/YukiCodepth\"\u003eAman Kumar\u003c/a\u003e,\n\u003ca href=\"https://github.com/adubrouski\"\u003eAnton Dubrouski\u003c/a\u003e,\n\u003ca href=\"https://github.com/liutikas\"\u003eAurimas\u003c/a\u003e,\n\u003ca href=\"https://github.com/gbhavya07\"\u003egbhavya07\u003c/a\u003e,\n\u003ca href=\"https://github.com/joshfriend\"\u003eJosh Friend\u003c/a\u003e,\n\u003ca href=\"https://github.com/nicklauslittle-gov\"\u003enicklauslittle-gov\u003c/a\u003e,\n\u003ca href=\"https://github.com/psoni674\"\u003ePragati\u003c/a\u003e,\n\u003ca href=\"https://github.com/Project516\"\u003eproject516\u003c/a\u003e,\n\u003ca href=\"https://github.com/Uomocapra\"\u003eQin Mi\u003c/a\u003e,\n\u003ca href=\"https://github.com/rkdfx\"\u003eRavi\u003c/a\u003e,\n\u003ca href=\"https://github.com/sk-reddy17\"\u003esk-reddy17\u003c/a\u003e,\n\u003ca href=\"https://github.com/Suvrat1629\"\u003eSuvrat Acharya\u003c/a\u003e,\n\u003ca href=\"https://github.com/ShreckYe\"\u003eYongshun Ye\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eUpgrade instructions\u003c/h2\u003e\n\u003cp\u003eSwitch your build to use Gradle 9.7.1 by updating your wrapper:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./gradlew :wrapper --gradle-version=9.7.1 \u0026amp;\u0026amp; ./gradlew :wrapper\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the Gradle \u003ca href=\"https://docs.gradle.org/9.7.1/userguide/upgrading_version_9.html\"\u003e9.x upgrade guide\u003c/a\u003e to learn about deprecations, breaking changes and other considerations when upgrading.\u003c/p\u003e\n\u003cp\u003eFor Java, Groovy, Kotlin and Android compatibility, see the \u003ca href=\"https://docs.gradle.org/9.7.1/userguide/compatibility.html\"\u003efull compatibility notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReporting problems\u003c/h2\u003e\n\u003cp\u003eIf you find a problem with this release, please file a bug on \u003ca href=\"https://github.com/gradle/gradle/issues\"\u003eGitHub Issues\u003c/a\u003e adhering to our issue guidelines.\nIf you're not sure you're encountering a bug, please use the \u003ca href=\"https://discuss.gradle.org/c/help-discuss\"\u003eforum\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe hope you will build happiness with Gradle, and we look forward to your feedback via \u003ca href=\"https://twitter.com/gradle\"\u003eTwitter\u003c/a\u003e or on \u003ca href=\"https://github.com/gradle\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e9.7.0\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.7.0.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/92f0512e7f06d84621afba191f75e265363890cf\"\u003e\u003ccode\u003e92f0512\u003c/code\u003e\u003c/a\u003e update fixed issues for 9.7.1 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38892\"\u003e#38892\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/820ee75a99a179bbffa41bcedc6477b685fabb9f\"\u003e\u003ccode\u003e820ee75\u003c/code\u003e\u003c/a\u003e update fixed issues for 9.7.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/82c23f9bd2a89b4cc644e1f90a28a8668feb3dee\"\u003e\u003ccode\u003e82c23f9\u003c/code\u003e\u003c/a\u003e Fix annotation parameter ordering problem in KTS (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38878\"\u003e#38878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/ef11a7268fe8cc8d6ab849ec911aa11220180553\"\u003e\u003ccode\u003eef11a72\u003c/code\u003e\u003c/a\u003e Fix annotation parameter ordering issue\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/bb0d8a974a71b1003efea41e4046e98855cd5ff8\"\u003e\u003ccode\u003ebb0d8a9\u003c/code\u003e\u003c/a\u003e Make relevant tests polyglot (run for multiple DSLs)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/336e129d7f95c03486acafc97abf59734acfed48\"\u003e\u003ccode\u003e336e129\u003c/code\u003e\u003c/a\u003e Update signing configuration (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38874\"\u003e#38874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/4bdf0da2dad9884d089a6062a45ea7183e7d735d\"\u003e\u003ccode\u003e4bdf0da\u003c/code\u003e\u003c/a\u003e Update signing configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/cd9b92c1b82856248cf1dc58b50378238bec7b52\"\u003e\u003ccode\u003ecd9b92c\u003c/code\u003e\u003c/a\u003e List issues resolved in 9.7.1 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38839\"\u003e#38839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/5f4e381964897ad8d6b99e5a7c77f26dba3259fb\"\u003e\u003ccode\u003e5f4e381\u003c/code\u003e\u003c/a\u003e List issues resolved in 9.7.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/1e08ab551367aeb5fb48b26e72807e1d2b27c939\"\u003e\u003ccode\u003e1e08ab5\u003c/code\u003e\u003c/a\u003e Keep type-use annotations in extracted ABI classes (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/38810\"\u003e#38810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gradle/gradle/compare/v8.14.2...v9.7.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin` from 2.2.0-2.0.2 to 2.3.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/ksp/releases\"\u003ecom.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.3.11\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eorg.gradle.isolated-projects\u003c/code\u003e for project isolation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3051\"\u003e#3051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix premature \u003ccode\u003ekspDebugAndroidTest\u003c/code\u003e task skipping on Android library modules (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix missing parent declaration exception for \u003ccode\u003e@NotNull\u003c/code\u003e annotations during incremental compilation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3030\"\u003e#3030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClean output directories instead of skipping tasks when processor classpath transitions to empty (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3046\"\u003e#3046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix build cache misses by marking \u003ccode\u003eKspGradleConfig.logLevel\u003c/code\u003e as \u003ccode\u003e@Internal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3039\"\u003e#3039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eorg.gradle.isolated-projects=true\u003c/code\u003e to KSP Gradle properties reference table (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3076\"\u003e#3076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd KSP Gradle properties reference table to README documentation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3070\"\u003e#3070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument collection values in \u003ccode\u003eKSValueArgument.value\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3069\"\u003e#3069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate error messaging for \u003ccode\u003eksp.useKSP2\u003c/code\u003e deprecation notice (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3066\"\u003e#3066\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThanks to \u003ca href=\"https://github.com/simonlebras\"\u003e\u003ccode\u003e@​simonlebras\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/ChristianKatzmann\"\u003e\u003ccode\u003e@​ChristianKatzmann\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/Yong-yuan-X\"\u003e\u003ccode\u003e@​Yong-yuan-X\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/bacecek\"\u003e\u003ccode\u003e@​bacecek\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/KlyneChrysler\"\u003e\u003ccode\u003e@​KlyneChrysler\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/Shaurya2k06\"\u003e\u003ccode\u003e@​Shaurya2k06\u003c/code\u003e\u003c/a\u003e, and everyone who reported bugs and participated in discussions!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/ksp/compare/2.3.10...2.3.11\"\u003ehttps://github.com/google/ksp/compare/2.3.10...2.3.11\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.3.10\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix OOMs caused by unstopped coroutine Dispatcher threads by moving KSP task cache to a gradle build service (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2817\"\u003e#2817\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSanitize ':' in internal-name module suffix so KSP works with Kotlin 2.4.0 default module names (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2964\"\u003e#2964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFilter source file trees in KspAATask to restore NO-SOURCE skipping behaviour (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2947\"\u003e#2947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix R-class resolution in KSP when AGP 9 built-in Kotlin is enabled (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2857\"\u003e#2857\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix KSP2 incremental cache path normalization mismatch (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2854\"\u003e#2854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize line endings for KspAATask source roots to prevent cross-platform remote build cache misses (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2849\"\u003e#2849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bug where KSP incremental compilation does not consider library class references in annotations (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3011\"\u003e#3011\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eConsume all Kotlin sources in KSP to support other code generators (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3001\"\u003e#3001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix configuration cache invalidation in klib cross-compilation check (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3014\"\u003e#3014\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMemoized hash code for \u003ccode\u003eKSTypeImpl\u003c/code\u003e to speed up processing (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2896\"\u003e#2896\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix incorrect name generation for data classes annotated with \u003ccode\u003e@JvmRecord\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2813\"\u003e#2813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInclude \u003ccode\u003ekotlinx.coroutines\u003c/code\u003e in the distributed uber jar \u003ccode\u003esymbol-processing-aa-embeddable\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2938\"\u003e#2938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew debugging features for incremental compilation, including additional logging and dependency graph visualization (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3015\"\u003e#3015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeprecate the \u003ccode\u003eksp(...)\u003c/code\u003e Gradle configuration in Kotlin Multiplatform (KMP) projects in favor of target-specific configurations (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2956\"\u003e#2956\u003c/a\u003e). Note: Non-KMP projects are also affected. For migration details, see the \u003ca href=\"https://kotlinlang.org/docs/ksp-multiplatform.html#avoid-the-ksp-configuration-on-ksp-1-0-1\"\u003edocumentation\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThanks to \u003ca href=\"https://github.com/mvanhorn\"\u003e\u003ccode\u003e@​mvanhorn\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/Yong-yuan-X\"\u003e\u003ccode\u003e@​Yong-yuan-X\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/MariusVolkhart\"\u003e\u003ccode\u003e@​MariusVolkhart\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/shmuelr\"\u003e\u003ccode\u003e@​shmuelr\u003c/code\u003e\u003c/a\u003e and everyone who reported bugs and participated in discussions!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/ksp/compare/2.3.9...2.3.10\"\u003ehttps://github.com/google/ksp/compare/2.3.9...2.3.10\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.3.9\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleaned up native cross-compilation support checks to prevent Gradle Configuration Cache invalidation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2953\"\u003e#2953\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a compilation performance regression in in PsiResolutionStrategy introduced in 2.3.8  (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2948\"\u003e#2948\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThanks to everyone who reported bugs and participated in discussions!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/ksp/compare/2.3.8...2.3.9\"\u003ehttps://github.com/google/ksp/compare/2.3.8...2.3.9\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/c44fd9a91192679e07a1d905dda022796e32bbbe\"\u003e\u003ccode\u003ec44fd9a\u003c/code\u003e\u003c/a\u003e Rename coroutines core-jvm alias to coreJvm per review\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/5cec34dab94b81371fca720ff188fb42c38c108f\"\u003e\u003ccode\u003e5cec34d\u003c/code\u003e\u003c/a\u003e Move root build plugin versions to the version catalog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/b956e6b1f856717db7cbd1a24e23f73a7216c998\"\u003e\u003ccode\u003eb956e6b\u003c/code\u003e\u003c/a\u003e Move remaining kotlin-analysis-api versions to the version catalog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/9aed49722363306f8dc75c193b9c1f956907a628\"\u003e\u003ccode\u003e9aed497\u003c/code\u003e\u003c/a\u003e Do not cherry-pick conflicting commits in CI auto-merge workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/145dcd65fc7227a5fbb32a0e993681ac925f1a93\"\u003e\u003ccode\u003e145dcd6\u003c/code\u003e\u003c/a\u003e Update gradle wrapper to 9.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/68762a9376230007f02d1091e582f0265710bd80\"\u003e\u003ccode\u003e68762a9\u003c/code\u003e\u003c/a\u003e Check for valid gradle wrapper jar in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/336a2e4de3a3e0f47a3851eaa94b07975c667568\"\u003e\u003ccode\u003e336a2e4\u003c/code\u003e\u003c/a\u003e Regenerate gradle wrapper\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/94d5e09231902706719a409537e034b3088e7481\"\u003e\u003ccode\u003e94d5e09\u003c/code\u003e\u003c/a\u003e Use gh cli for release asset upload\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/d244982946ec314f25099cca39f1fcaeaf348b11\"\u003e\u003ccode\u003ed244982\u003c/code\u003e\u003c/a\u003e Disable all permissions in main workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/b88bc0d453b478a0c486ad987e6bb8876ae207ff\"\u003e\u003ccode\u003eb88bc0d\u003c/code\u003e\u003c/a\u003e Pin actions/upload-release-asset at v1.0.2 SHA\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/ksp/compare/2.2.0-2.0.2...2.3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.devtools.ksp` from 2.2.0-2.0.2 to 2.3.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/ksp/releases\"\u003ecom.google.devtools.ksp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.3.11\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eorg.gradle.isolated-projects\u003c/code\u003e for project isolation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3051\"\u003e#3051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix premature \u003ccode\u003ekspDebugAndroidTest\u003c/code\u003e task skipping on Android library modules (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix missing parent declaration exception for \u003ccode\u003e@NotNull\u003c/code\u003e annotations during incremental compilation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3030\"\u003e#3030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClean output directories instead of skipping tasks when processor classpath transitions to empty (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3046\"\u003e#3046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix build cache misses by marking \u003ccode\u003eKspGradleConfig.logLevel\u003c/code\u003e as \u003ccode\u003e@Internal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3039\"\u003e#3039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eorg.gradle.isolated-projects=true\u003c/code\u003e to KSP Gradle properties reference table (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3076\"\u003e#3076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd KSP Gradle properties reference table to README documentation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3070\"\u003e#3070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument collection values in \u003ccode\u003eKSValueArgument.value\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3069\"\u003e#3069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate error messaging for \u003ccode\u003eksp.useKSP2\u003c/code\u003e deprecation notice (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3066\"\u003e#3066\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThanks to \u003ca href=\"https://github.com/simonlebras\"\u003e\u003ccode\u003e@​simonlebras\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/ChristianKatzmann\"\u003e\u003ccode\u003e@​ChristianKatzmann\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/Yong-yuan-X\"\u003e\u003ccode\u003e@​Yong-yuan-X\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/bacecek\"\u003e\u003ccode\u003e@​bacecek\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/KlyneChrysler\"\u003e\u003ccode\u003e@​KlyneChrysler\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/Shaurya2k06\"\u003e\u003ccode\u003e@​Shaurya2k06\u003c/code\u003e\u003c/a\u003e, and everyone who reported bugs and participated in discussions!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/ksp/compare/2.3.10...2.3.11\"\u003ehttps://github.com/google/ksp/compare/2.3.10...2.3.11\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.3.10\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix OOMs caused by unstopped coroutine Dispatcher threads by moving KSP task cache to a gradle build service (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2817\"\u003e#2817\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSanitize ':' in internal-name module suffix so KSP works with Kotlin 2.4.0 default module names (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2964\"\u003e#2964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFilter source file trees in KspAATask to restore NO-SOURCE skipping behaviour (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2947\"\u003e#2947\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix R-class resolution in KSP when AGP 9 built-in Kotlin is enabled (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2857\"\u003e#2857\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix KSP2 incremental cache path normalization mismatch (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2854\"\u003e#2854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNormalize line endings for KspAATask source roots to prevent cross-platform remote build cache misses (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2849\"\u003e#2849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bug where KSP incremental compilation does not consider library class references in annotations (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3011\"\u003e#3011\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eConsume all Kotlin sources in KSP to support other code generators (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3001\"\u003e#3001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix configuration cache invalidation in klib cross-compilation check (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3014\"\u003e#3014\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMemoized hash code for \u003ccode\u003eKSTypeImpl\u003c/code\u003e to speed up processing (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2896\"\u003e#2896\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix incorrect name generation for data classes annotated with \u003ccode\u003e@JvmRecord\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2813\"\u003e#2813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInclude \u003ccode\u003ekotlinx.coroutines\u003c/code\u003e in the distributed uber jar \u003ccode\u003esymbol-processing-aa-embeddable\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2938\"\u003e#2938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew debugging features for incremental compilation, including additional logging and dependency graph visualization (\u003ca href=\"https://redirect.github.com/google/ksp/issues/3015\"\u003e#3015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDeprecate the \u003ccode\u003eksp(...)\u003c/code\u003e Gradle configuration in Kotlin Multiplatform (KMP) projects in favor of target-specific configurations (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2956\"\u003e#2956\u003c/a\u003e). Note: Non-KMP projects are also affected. For migration details, see the \u003ca href=\"https://kotlinlang.org/docs/ksp-multiplatform.html#avoid-the-ksp-configuration-on-ksp-1-0-1\"\u003edocumentation\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThanks to \u003ca href=\"https://github.com/mvanhorn\"\u003e\u003ccode\u003e@​mvanhorn\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/Yong-yuan-X\"\u003e\u003ccode\u003e@​Yong-yuan-X\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/MariusVolkhart\"\u003e\u003ccode\u003e@​MariusVolkhart\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/shmuelr\"\u003e\u003ccode\u003e@​shmuelr\u003c/code\u003e\u003c/a\u003e and everyone who reported bugs and participated in discussions!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/ksp/compare/2.3.9...2.3.10\"\u003ehttps://github.com/google/ksp/compare/2.3.9...2.3.10\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.3.9\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCleaned up native cross-compilation support checks to prevent Gradle Configuration Cache invalidation (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2953\"\u003e#2953\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a compilation performance regression in in PsiResolutionStrategy introduced in 2.3.8  (\u003ca href=\"https://redirect.github.com/google/ksp/issues/2948\"\u003e#2948\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThanks to everyone who reported bugs and participated in discussions!\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/ksp/compare/2.3.8...2.3.9\"\u003ehttps://github.com/google/ksp/compare/2.3.8...2.3.9\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/c44fd9a91192679e07a1d905dda022796e32bbbe\"\u003e\u003ccode\u003ec44fd9a\u003c/code\u003e\u003c/a\u003e Rename coroutines core-jvm alias to coreJvm per review\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/5cec34dab94b81371fca720ff188fb42c38c108f\"\u003e\u003ccode\u003e5cec34d\u003c/code\u003e\u003c/a\u003e Move root build plugin versions to the version catalog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/b956e6b1f856717db7cbd1a24e23f73a7216c998\"\u003e\u003ccode\u003eb956e6b\u003c/code\u003e\u003c/a\u003e Move remaining kotlin-analysis-api versions to the version catalog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/9aed49722363306f8dc75c193b9c1f956907a628\"\u003e\u003ccode\u003e9aed497\u003c/code\u003e\u003c/a\u003e Do not cherry-pick conflicting commits in CI auto-merge workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/145dcd65fc7227a5fbb32a0e993681ac925f1a93\"\u003e\u003ccode\u003e145dcd6\u003c/code\u003e\u003c/a\u003e Update gradle wrapper to 9.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/68762a9376230007f02d1091e582f0265710bd80\"\u003e\u003ccode\u003e68762a9\u003c/code\u003e\u003c/a\u003e Check for valid gradle wrapper jar in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/336a2e4de3a3e0f47a3851eaa94b07975c667568\"\u003e\u003ccode\u003e336a2e4\u003c/code\u003e\u003c/a\u003e Regenerate gradle wrapper\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/94d5e09231902706719a409537e034b3088e7481\"\u003e\u003ccode\u003e94d5e09\u003c/code\u003e\u003c/a\u003e Use gh cli for release asset upload\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/d244982946ec314f25099cca39f1fcaeaf348b11\"\u003e\u003ccode\u003ed244982\u003c/code\u003e\u003c/a\u003e Disable all permissions in main workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/ksp/commit/b88bc0d453b478a0c486ad987e6bb8876ae207ff\"\u003e\u003ccode\u003eb88bc0d\u003c/code\u003e\u003c/a\u003e Pin actions/upload-release-asset at v1.0.2 SHA\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/ksp/compare/2.2.0-2.0.2...2.3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin:kotlin-gradle-plugin` from 2.2.0 to 2.4.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin:kotlin-gradle-plugin's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.10\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eKotlin 2.4.10-RC2\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin:kotlin-gradle-plugin's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.10\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.4.0\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83867\"\u003e\u003ccode\u003eKT-83867\u003c/code\u003e\u003c/a\u003e OVERLOAD_RESOLUTION_AMBIGUITY false positive with assertEquals in IJ repo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83723\"\u003e\u003ccode\u003eKT-83723\u003c/code\u003e\u003c/a\u003e [Analysis API] Enable experimental KDoc resolver by default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83388\"\u003e\u003ccode\u003eKT-83388\u003c/code\u003e\u003c/a\u003e Analysis API: properly support KMP in KotlinPackageProvider\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/5687445832cd835b4509b9fbc264cdf1a8201093\"\u003e\u003ccode\u003e5687445\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ba30392c459dd7c1ae74c1501e83453144416bc9\"\u003e\u003ccode\u003eba30392\u003c/code\u003e\u003c/a\u003e [Wasm] Support regenerate unchanged modules flag on KGP\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6307e7310d14eef05f199ebccd9518379772d3a7\"\u003e\u003ccode\u003e6307e73\u003c/code\u003e\u003c/a\u003e [Wasm] Implement Xwasm-IC-generate-unchanged-modules flag\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/39d7aee8470b7ce61fea8f76c317456e2756f7c0\"\u003e\u003ccode\u003e39d7aee\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a2956bed85f99752b78881075665d81a82e98ab2\"\u003e\u003ccode\u003ea2956be\u003c/code\u003e\u003c/a\u003e [Gradle] Update karma.conf.js to use 'require(...)' instead plain strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9b1361ce7a6cfd2edd6f8cdb05198573fb839b61\"\u003e\u003ccode\u003e9b1361c\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Updated regression test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a4c153af52ad4694c0cca14c25812db54b19f90e\"\u003e\u003ccode\u003ea4c153a\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Fix toochain to 2.4.0 for abiValidation compat config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bc04b90d245cd27d8339fe51bd43a90dd4c04e9f\"\u003e\u003ccode\u003ebc04b90\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bbcb94baa2eed1cc5ccb39147dcf5a5a184d7a14\"\u003e\u003ccode\u003ebbcb94b\u003c/code\u003e\u003c/a\u003e [CRI] explicitly disable CRI generation for non-JVM targets to avoid false-po...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6c2c458f1d2e4b4f8638fb16f12ff1dd375c4ae2\"\u003e\u003ccode\u003e6c2c458\u003c/code\u003e\u003c/a\u003e Scripting: fix jvmTarget processing from script annotations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.2.0...v2.4.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin:kotlin-annotation-processing-embeddable` from 2.2.0 to 2.4.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin:kotlin-annotation-processing-embeddable's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.10\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eKotlin 2.4.10-RC2\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin:kotlin-annotation-processing-embeddable's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.10\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.4.0\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83867\"\u003e\u003ccode\u003eKT-83867\u003c/code\u003e\u003c/a\u003e OVERLOAD_RESOLUTION_AMBIGUITY false positive with assertEquals in IJ repo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83723\"\u003e\u003ccode\u003eKT-83723\u003c/code\u003e\u003c/a\u003e [Analysis API] Enable experimental KDoc resolver by default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83388\"\u003e\u003ccode\u003eKT-83388\u003c/code\u003e\u003c/a\u003e Analysis API: properly support KMP in KotlinPackageProvider\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/5687445832cd835b4509b9fbc264cdf1a8201093\"\u003e\u003ccode\u003e5687445\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ba30392c459dd7c1ae74c1501e83453144416bc9\"\u003e\u003ccode\u003eba30392\u003c/code\u003e\u003c/a\u003e [Wasm] Support regenerate unchanged modules flag on KGP\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6307e7310d14eef05f199ebccd9518379772d3a7\"\u003e\u003ccode\u003e6307e73\u003c/code\u003e\u003c/a\u003e [Wasm] Implement Xwasm-IC-generate-unchanged-modules flag\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/39d7aee8470b7ce61fea8f76c317456e2756f7c0\"\u003e\u003ccode\u003e39d7aee\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a2956bed85f99752b78881075665d81a82e98ab2\"\u003e\u003ccode\u003ea2956be\u003c/code\u003e\u003c/a\u003e [Gradle] Update karma.conf.js to use 'require(...)' instead plain strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9b1361ce7a6cfd2edd6f8cdb05198573fb839b61\"\u003e\u003ccode\u003e9b1361c\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Updated regression test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a4c153af52ad4694c0cca14c25812db54b19f90e\"\u003e\u003ccode\u003ea4c153a\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Fix toochain to 2.4.0 for abiValidation compat config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bc04b90d245cd27d8339fe51bd43a90dd4c04e9f\"\u003e\u003ccode\u003ebc04b90\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bbcb94baa2eed1cc5ccb39147dcf5a5a184d7a14\"\u003e\u003ccode\u003ebbcb94b\u003c/code\u003e\u003c/a\u003e [CRI] explicitly disable CRI generation for non-JVM targets to avoid false-po...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6c2c458f1d2e4b4f8638fb16f12ff1dd375c4ae2\"\u003e\u003ccode\u003e6c2c458\u003c/code\u003e\u003c/a\u003e Scripting: fix jvmTarget processing from script annotations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.2.0...v2.4.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin:kotlin-compiler-embeddable` from 2.2.0 to 2.4.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin:kotlin-compiler-embeddable's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.10\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eKotlin 2.4.10-RC2\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin:kotlin-compiler-embeddable's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.10\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.4.0\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83867\"\u003e\u003ccode\u003eKT-83867\u003c/code\u003e\u003c/a\u003e OVERLOAD_RESOLUTION_AMBIGUITY false positive with assertEquals in IJ repo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83723\"\u003e\u003ccode\u003eKT-83723\u003c/code\u003e\u003c/a\u003e [Analysis API] Enable experimental KDoc resolver by default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83388\"\u003e\u003ccode\u003eKT-83388\u003c/code\u003e\u003c/a\u003e Analysis API: properly support KMP in KotlinPackageProvider\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/5687445832cd835b4509b9fbc264cdf1a8201093\"\u003e\u003ccode\u003e5687445\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ba30392c459dd7c1ae74c1501e83453144416bc9\"\u003e\u003ccode\u003eba30392\u003c/code\u003e\u003c/a\u003e [Wasm] Support regenerate unchanged modules flag on KGP\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6307e7310d14eef05f199ebccd9518379772d3a7\"\u003e\u003ccode\u003e6307e73\u003c/code\u003e\u003c/a\u003e [Wasm] Implement Xwasm-IC-generate-unchanged-modules flag\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/39d7aee8470b7ce61fea8f76c317456e2756f7c0\"\u003e\u003ccode\u003e39d7aee\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a2956bed85f99752b78881075665d81a82e98ab2\"\u003e\u003ccode\u003ea2956be\u003c/code\u003e\u003c/a\u003e [Gradle] Update karma.conf.js to use 'require(...)' instead plain strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9b1361ce7a6cfd2edd6f8cdb05198573fb839b61\"\u003e\u003ccode\u003e9b1361c\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Updated regression test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a4c153af52ad4694c0cca14c25812db54b19f90e\"\u003e\u003ccode\u003ea4c153a\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Fix toochain to 2.4.0 for abiValidation compat config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bc04b90d245cd27d8339fe51bd43a90dd4c04e9f\"\u003e\u003ccode\u003ebc04b90\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bbcb94baa2eed1cc5ccb39147dcf5a5a184d7a14\"\u003e\u003ccode\u003ebbcb94b\u003c/code\u003e\u003c/a\u003e [CRI] explicitly disable CRI generation for non-JVM targets to avoid false-po...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6c2c458f1d2e4b4f8638fb16f12ff1dd375c4ae2\"\u003e\u003ccode\u003e6c2c458\u003c/code\u003e\u003c/a\u003e Scripting: fix jvmTarget processing from script annotations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.2.0...v2.4.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin:kotlin-reflect` from 2.2.0 to 2.4.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin:kotlin-reflect's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.10\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eKotlin 2.4.10-RC2\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin:kotlin-reflect's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.10\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbr...\n\n_Description has been truncated_","html_url":"https://github.com/SimbaPlayTT/Flipper-Android-App-custom-theme/pull/6","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/SimbaPlayTT%2FFlipper-Android-App-custom-theme/issues/6","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/6/packages"}},{"old_version":"3.5.1","new_version":"3.7.0","update_type":"minor","path":"/android","pr_created_at":"2026-07-31T12:27:35.000Z","version_change":"3.5.1 → 3.7.0","issue":{"uuid":"5029559409","node_id":"PR_kwDOSyQXzc75AjYi","number":25,"state":"closed","title":"chore(deps): bump the android-deps group in /android with 28 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-07-31T18:11:30.000Z","author_association":null,"state_reason":null,"created_at":"2026-07-31T12:27:35.000Z","updated_at":"2026-07-31T18:11:31.000Z","time_to_close":20635,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"android-deps","update_count":28,"packages":[{"name":"com.android.application","old_version":"8.13.0","new_version":"9.3.1"},{"name":"org.jetbrains.kotlin.android","old_version":"1.9.22","new_version":"2.4.10","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.google.dagger.hilt.android","old_version":"2.50","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"com.google.gms.google-services","old_version":"4.4.0","new_version":"4.5.0"},{"name":"com.google.firebase.crashlytics","old_version":"2.9.9","new_version":"3.0.7"},{"name":"androidx.core:core-ktx","old_version":"1.12.0","new_version":"1.19.0"},{"name":"androidx.lifecycle:lifecycle-runtime-ktx","old_version":"2.7.0","new_version":"2.11.0"},{"name":"androidx.activity:activity-compose","old_version":"1.8.2","new_version":"1.13.0"},{"name":"androidx.compose:compose-bom","old_version":"2023.10.01","new_version":"2026.06.01"},{"name":"com.google.android.material:material","old_version":"1.11.0","new_version":"1.14.0","repository_url":"https://github.com/material-components/material-components-android"},{"name":"com.google.dagger:hilt-android","old_version":"2.50","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"com.google.dagger:hilt-compiler","old_version":"2.50","new_version":"2.60.1","repository_url":"https://github.com/google/dagger"},{"name":"androidx.hilt:hilt-navigation-compose","old_version":"1.1.0","new_version":"1.4.0"},{"name":"androidx.hilt:hilt-work","old_version":"1.1.0","new_version":"1.4.0"},{"name":"androidx.hilt:hilt-compiler","old_version":"1.1.0","new_version":"1.4.0"},{"name":"com.squareup.retrofit2:retrofit","old_version":"2.11.0","new_version":"3.0.0","repository_url":"https://github.com/square/retrofit"},{"name":"com.squareup.retrofit2:converter-gson","old_version":"2.11.0","new_version":"3.0.0","repository_url":"https://github.com/square/retrofit"},{"name":"com.squareup.okhttp3:logging-interceptor","old_version":"4.12.0","new_version":"5.4.0","repository_url":"https://github.com/square/okhttp"},{"name":"androidx.room:room-runtime","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-ktx","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-compiler","old_version":"2.6.1","new_version":"2.8.4"},{"name":"io.coil-kt:coil-compose","old_version":"2.5.0","new_version":"2.7.0","repository_url":"https://github.com/coil-kt/coil"},{"name":"androidx.security:security-crypto","old_version":"1.1.0-alpha06","new_version":"1.1.0"},{"name":"com.google.android.libraries.identity.googleid:googleid","old_version":"1.1.1","new_version":"1.2.0"},{"name":"androidx.exifinterface:exifinterface","old_version":"1.3.7","new_version":"1.4.2"},{"name":"androidx.test.ext:junit","old_version":"1.1.5","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.5.1","new_version":"3.7.0"},{"name":"gradle-wrapper","old_version":"8.13","new_version":"9.6.1","repository_url":"https://github.com/gradle/gradle"}],"path":"/android","ecosystem":"maven"},"body":"Bumps the android-deps group in /android with 28 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| com.android.application | `8.13.0` | `9.3.1` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `1.9.22` | `2.4.10` |\n| [com.google.dagger.hilt.android](https://github.com/google/dagger) | `2.50` | `2.60.1` |\n| com.google.gms.google-services | `4.4.0` | `4.5.0` |\n| com.google.firebase.crashlytics | `2.9.9` | `3.0.7` |\n| androidx.core:core-ktx | `1.12.0` | `1.19.0` |\n| androidx.lifecycle:lifecycle-runtime-ktx | `2.7.0` | `2.11.0` |\n| androidx.activity:activity-compose | `1.8.2` | `1.13.0` |\n| androidx.compose:compose-bom | `2023.10.01` | `2026.06.01` |\n| [com.google.android.material:material](https://github.com/material-components/material-components-android) | `1.11.0` | `1.14.0` |\n| [com.google.dagger:hilt-android](https://github.com/google/dagger) | `2.50` | `2.60.1` |\n| [com.google.dagger:hilt-compiler](https://github.com/google/dagger) | `2.50` | `2.60.1` |\n| androidx.hilt:hilt-navigation-compose | `1.1.0` | `1.4.0` |\n| androidx.hilt:hilt-work | `1.1.0` | `1.4.0` |\n| androidx.hilt:hilt-compiler | `1.1.0` | `1.4.0` |\n| [com.squareup.retrofit2:retrofit](https://github.com/square/retrofit) | `2.11.0` | `3.0.0` |\n| [com.squareup.retrofit2:converter-gson](https://github.com/square/retrofit) | `2.11.0` | `3.0.0` |\n| [com.squareup.okhttp3:logging-interceptor](https://github.com/square/okhttp) | `4.12.0` | `5.4.0` |\n| androidx.room:room-runtime | `2.6.1` | `2.8.4` |\n| androidx.room:room-ktx | `2.6.1` | `2.8.4` |\n| androidx.room:room-compiler | `2.6.1` | `2.8.4` |\n| [io.coil-kt:coil-compose](https://github.com/coil-kt/coil) | `2.5.0` | `2.7.0` |\n| androidx.security:security-crypto | `1.1.0-alpha06` | `1.1.0` |\n| com.google.android.libraries.identity.googleid:googleid | `1.1.1` | `1.2.0` |\n| androidx.exifinterface:exifinterface | `1.3.7` | `1.4.2` |\n| androidx.test.ext:junit | `1.1.5` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.5.1` | `3.7.0` |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `8.13` | `9.6.1` |\n\nUpdates `com.android.application` from 8.13.0 to 9.3.1\n\nUpdates `org.jetbrains.kotlin.android` from 1.9.22 to 2.4.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.4.10\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eKotlin 2.4.10-RC2\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.10\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87066\"\u003e\u003ccode\u003eKT-87066\u003c/code\u003e\u003c/a\u003e K/Wasm: Not all files are presented in compiler output directory with multimodule-closed-world and incremental compilation\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86939\"\u003e\u003ccode\u003eKT-86939\u003c/code\u003e\u003c/a\u003e JVM: IllegalStateException \u0026quot;No value for annotation parameter\u0026quot; when using const val in nested Java annotation array argument\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83766\"\u003e\u003ccode\u003eKT-83766\u003c/code\u003e\u003c/a\u003e K2: Wrong sourcePsi is set for \u003ccode\u003eSymbolPsiLiteral\u003c/code\u003e in SLC for annotation arguments referencing a const val\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86728\"\u003e\u003ccode\u003eKT-86728\u003c/code\u003e\u003c/a\u003e Reified type inference: expected type not propagated into inline call inside lambda with elvis operator\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompose Compiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://issuetracker.google.com/issues/522127447\"\u003e\u003ccode\u003eb/522127447\u003c/code\u003e\u003c/a\u003e Compose Compiler 2.4: classes previously inferred \u003ccode\u003estable\u003c/code\u003e now reported \u003ccode\u003eruntime\u003c/code\u003e/\u003ccode\u003eUncertain\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eKlibs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86501\"\u003e\u003ccode\u003eKT-86501\u003c/code\u003e\u003c/a\u003e Native: IrTypeAliasSymbolImpl is already bound. Signature: kotlinx.datetime/Instant|null[0] on iosSimulatorArm64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. CLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86930\"\u003e\u003ccode\u003eKT-86930\u003c/code\u003e\u003c/a\u003e Introduce \u003ccode\u003ekotlinr\u003c/code\u003e in the Kotlin distribution\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. BCV\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87223\"\u003e\u003ccode\u003eKT-87223\u003c/code\u003e\u003c/a\u003e Gradle, BCV: open version range in kotlinAbiValidationCompatClasspath causes kotlin-build-tools-impl to resolve to 2.4.20-Beta1 instead of 2.4.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. JS\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87304\"\u003e\u003ccode\u003eKT-87304\u003c/code\u003e\u003c/a\u003e jsBrowserTest fails with \u0026quot;exited with errors (exit code: 1)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86057\"\u003e\u003ccode\u003eKT-86057\u003c/code\u003e\u003c/a\u003e kotlinUpgradeYarnLock skips lock file regeneration when kotlinNpmInstall is up-to-date, causing kotlinStoreYarnLock to fail\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Multiplatform\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87084\"\u003e\u003ccode\u003eKT-87084\u003c/code\u003e\u003c/a\u003e False positive warning for JS and Wasm compilations when CRI is enabled\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-87076\"\u003e\u003ccode\u003eKT-87076\u003c/code\u003e\u003c/a\u003e \u003ccode\u003e@file\u003c/code\u003e:CompilerOptions(\u0026quot;-jvm-target\u0026quot;, ...) ignored in .main.kts scripts in Kotlin 2.4.0, falling back to JVM target 1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-86352\"\u003e\u003ccode\u003eKT-86352\u003c/code\u003e\u003c/a\u003e K2 scripting: FirResolvedTypeRef exception when resolving extension functions from imported scripts\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.4.0\u003c/h2\u003e\n\u003ch3\u003eAnalysis API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83867\"\u003e\u003ccode\u003eKT-83867\u003c/code\u003e\u003c/a\u003e OVERLOAD_RESOLUTION_AMBIGUITY false positive with assertEquals in IJ repo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83723\"\u003e\u003ccode\u003eKT-83723\u003c/code\u003e\u003c/a\u003e [Analysis API] Enable experimental KDoc resolver by default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-83388\"\u003e\u003ccode\u003eKT-83388\u003c/code\u003e\u003c/a\u003e Analysis API: properly support KMP in KotlinPackageProvider\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/5687445832cd835b4509b9fbc264cdf1a8201093\"\u003e\u003ccode\u003e5687445\u003c/code\u003e\u003c/a\u003e Add Changelog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/ba30392c459dd7c1ae74c1501e83453144416bc9\"\u003e\u003ccode\u003eba30392\u003c/code\u003e\u003c/a\u003e [Wasm] Support regenerate unchanged modules flag on KGP\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6307e7310d14eef05f199ebccd9518379772d3a7\"\u003e\u003ccode\u003e6307e73\u003c/code\u003e\u003c/a\u003e [Wasm] Implement Xwasm-IC-generate-unchanged-modules flag\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/39d7aee8470b7ce61fea8f76c317456e2756f7c0\"\u003e\u003ccode\u003e39d7aee\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a2956bed85f99752b78881075665d81a82e98ab2\"\u003e\u003ccode\u003ea2956be\u003c/code\u003e\u003c/a\u003e [Gradle] Update karma.conf.js to use 'require(...)' instead plain strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9b1361ce7a6cfd2edd6f8cdb05198573fb839b61\"\u003e\u003ccode\u003e9b1361c\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Updated regression test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/a4c153af52ad4694c0cca14c25812db54b19f90e\"\u003e\u003ccode\u003ea4c153a\u003c/code\u003e\u003c/a\u003e [Gradle] KT-87223: Fix toochain to 2.4.0 for abiValidation compat config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bc04b90d245cd27d8339fe51bd43a90dd4c04e9f\"\u003e\u003ccode\u003ebc04b90\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.4.10-RC\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/bbcb94baa2eed1cc5ccb39147dcf5a5a184d7a14\"\u003e\u003ccode\u003ebbcb94b\u003c/code\u003e\u003c/a\u003e [CRI] explicitly disable CRI generation for non-JVM targets to avoid false-po...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/6c2c458f1d2e4b4f8638fb16f12ff1dd375c4ae2\"\u003e\u003ccode\u003e6c2c458\u003c/code\u003e\u003c/a\u003e Scripting: fix jvmTarget processing from script annotations\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v1.9.22...v2.4.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger.hilt.android` from 2.50 to 2.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger.hilt.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5203\"\u003e#5203\u003c/a\u003e: Fixes regression in Dagger 2.60 where the Hilt compiler options (like fastInit) failed to propagate to the Hilt aggregation compilation tasks. (e181a0d88)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5204\"\u003e#5204\u003c/a\u003e: Fixes \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e import error by removing the annotation from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e (3f2dd8fba)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7a89b6cea7d47167f2d5f9912f61f3fee333d88\"\u003e\u003ccode\u003ef7a89b6\u003c/code\u003e\u003c/a\u003e 2.60.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/76780171d7c3ff0dc0240644f703cf181fd8b8e8\"\u003e\u003ccode\u003e7678017\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/974fe294b70f2a3ea43731a4f5b95e75c2bcb38d\"\u003e\u003ccode\u003e974fe29\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/823484c63fbdcc61d413bba40d164272f22e51a8\"\u003e\u003ccode\u003e823484c\u003c/code\u003e\u003c/a\u003e Make Android*InjectionTest$ApplicationReturnsNull public.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/c26f8d7be8ff1856667ddb3b070a410b3aeabfcc\"\u003e\u003ccode\u003ec26f8d7\u003c/code\u003e\u003c/a\u003e Add test for \u003ccode\u003e@AssistedFactory\u003c/code\u003e compilations without compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e181a0d884a3f14c8a7967af5d45f0a8c9a600ac\"\u003e\u003ccode\u003ee181a0d\u003c/code\u003e\u003c/a\u003e Fix Hilt compiler option propagation to Hilt aggregation tasks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/812e2f337718a79dd45ab8488398b5a893291ae8\"\u003e\u003ccode\u003e812e2f3\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3f2dd8fbab0a71ec09dc4f9dc543d89ec108c7f0\"\u003e\u003ccode\u003e3f2dd8f\u003c/code\u003e\u003c/a\u003e Delete \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e90e102c73d67ccb3aaad1835391e6cee2a17b42\"\u003e\u003ccode\u003ee90e102\u003c/code\u003e\u003c/a\u003e Update Dagger version in yml config and REAME.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.50...dagger-2.60.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.gms.google-services` from 4.4.0 to 4.5.0\n\nUpdates `com.google.firebase.crashlytics` from 2.9.9 to 3.0.7\n\nUpdates `androidx.core:core-ktx` from 1.12.0 to 1.19.0\n\nUpdates `androidx.lifecycle:lifecycle-runtime-ktx` from 2.7.0 to 2.11.0\n\nUpdates `androidx.activity:activity-compose` from 1.8.2 to 1.13.0\n\nUpdates `androidx.compose:compose-bom` from 2023.10.01 to 2026.06.01\n\nUpdates `com.google.android.material:material` from 1.11.0 to 1.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/material-components/material-components-android/releases\"\u003ecom.google.android.material:material's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.14.0\u003c/h2\u003e\n\u003ch1\u003eNew in 1.14.0!\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eExpressive Themes (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/getting-started.md#material3expressive-themes\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Lists (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/List.md\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Button Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/CommonButton.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Icon Button Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/IconButton.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Button Group Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/ButtonGroup.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive FAB Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/FloatingActionButton.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Top App Bar Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/TopAppBar.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Navigation Bar (BottomNavigationView) Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/BottomNavigation.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Navigation Rail Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/NavigationRail.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Search Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/Search.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Progress Indicator Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/ProgressIndicator.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Slider Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/Slider.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEmphasized Typescale (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/theming/Typography.md#emphasized-scale\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImportant\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRequired \u003ccode\u003eminSdkVersion\u003c/code\u003e is now 23 or higher, for Material and \u003ca href=\"https://developer.android.com/jetpack/androidx/versions#version-table\"\u003eAndroidX\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eLibrary is now built with Android Gradle Plugin (AGP) 8.11.1 and Gradle 8.13.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDependency Updates\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eDependency\u003c/th\u003e\n\u003cth\u003ePrevious version\u003c/th\u003e\n\u003cth\u003eNew version\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.constraintlayout:constraintlayout\u003c/td\u003e\n\u003ctd\u003e2.1.0\u003c/td\u003e\n\u003ctd\u003e2.2.1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.core:core\u003c/td\u003e\n\u003ctd\u003e1.6.0\u003c/td\u003e\n\u003ctd\u003e1.16.0\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.customview:customview\u003c/td\u003e\n\u003ctd\u003eN/A\u003c/td\u003e\n\u003ctd\u003e1.2.0\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ecom.android.tools.build:gradle\u003c/td\u003e\n\u003ctd\u003e8.7.3\u003c/td\u003e\n\u003ctd\u003e8.11.1\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eLibrary Updates\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eAppBar\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eFixed the bug that setBackground will reset the internal MaterialShapeDrawable for lift-on-scroll feature. (1adc50110ed6491661f89aa535355b1480fac73a)\u003c/li\u003e\n\u003cli\u003eAdd support for navigation button with circle background (015e0534e1a6205224097f258102f913832f99ed)\u003c/li\u003e\n\u003cli\u003eImprove keyboard navigation in TopAppBar catalog demos (98a73a61d272d3e38ee87dd4b322f7787c374a9c)\u003c/li\u003e\n\u003cli\u003eRemoved special key shortcut and keyboard navigation cluster for top app bar for correct keyboard navigation a11y. (ee52adbf051f744f2345ec5b7f4ab4df3b101d4d)\u003c/li\u003e\n\u003cli\u003eUpdated ripple color on actions in M3 toolbar. (3b971c9fe9d6ae9a175d96a448a2e740fa97996f)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBottomAppBar\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eRemove special key shortcut and keyboard navigation cluster for bottom app bar for correct keyboard navigation a11y. (5c73d7a9284fb8e8409452bb95751bf70912acfd)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBottomNavigationView\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eFix navigation item layout in non-compact windows (78189012dada1fae4516eaccab7b8f75c481aa73)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBottomSheet\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecated enableEdgeToEdge for bottom sheet dialogs on API 35+. (603f1ef9d5223fc06fa432c4175473eda2138330)\u003c/li\u003e\n\u003cli\u003ePrevent ACTION_DOWN events on the BottomSheetHandleDragView from setting touchingScrollChild to true. (af7f254bf660704368d46e630d34a81c479fa1c7)\u003c/li\u003e\n\u003cli\u003eFixed keyboard animation on Android 14 (a0b4dfa8769f98851efe97569c900f75eb0d5ef2)\u003c/li\u003e\n\u003cli\u003eFixed crash when protections are set before setContentView is called (d2119098489f6f6b55d77f2c7966b8ddf16c90ed)\u003c/li\u003e\n\u003cli\u003eAdded half-expanded state description for accessibility (95e7b452088d88005982a3f29ec212ef7ee8696d)\u003c/li\u003e\n\u003cli\u003eAdded support for androidx.core ProtectionLayout API and update dependency to 1.16 (e7f9f639d2f4a3b9f619ce704df82cbb14e49222)\u003c/li\u003e\n\u003cli\u003eMake handle respond to keyboard input (1ee07687af2c4c84f515e45c1b809d65aeecbbf4)\u003c/li\u003e\n\u003cli\u003eDelete duplicate \u0026quot;Handling insets and fullscreen\u0026quot; section (5e7e8238f7be448af6b4db4b2ad6128737c0bc50)\u003c/li\u003e\n\u003cli\u003eAdded support for Nested Scrolling with multiple nested scroll children. (4e4e8f3388beb7e82a87cb67142aa34444a79740)\u003c/li\u003e\n\u003cli\u003eMake behavior_draggableOnNestedScroll public (a67afdff0d207239d0f427a37e44074936db3166)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/66c334b7946dabf33adfe1a2b7cad6bcaa4ea3ad\"\u003e\u003ccode\u003e66c334b\u003c/code\u003e\u003c/a\u003e [Release] Update library version to 1.14.0 stable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/12e57b5143609a96de8516426336bcf3b3e321f7\"\u003e\u003ccode\u003e12e57b5\u003c/code\u003e\u003c/a\u003e [Focus Rings] Add setters and getters for stroke widths and inner inset\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/f4652d6af613395835b17ce329ceb03f43fc4a84\"\u003e\u003ccode\u003ef4652d6\u003c/code\u003e\u003c/a\u003e [NavigationView] Improve focus saving when opening NavigationView\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/14b9ac97b0863fa7fea6f59954441cea9f4e7e14\"\u003e\u003ccode\u003e14b9ac9\u003c/code\u003e\u003c/a\u003e [Focus Rings] Add setters for outer and inner stroke colors and for refreshin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/d6de1da0f5532090d8b7de697e13c180f56e11e1\"\u003e\u003ccode\u003ed6de1da\u003c/code\u003e\u003c/a\u003e [A11y][BottomSheet] Auto-expand when a focused view is off-screen in non-touc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/41cfb65e8393cd7ff0f9dc082b400c852405e9cc\"\u003e\u003ccode\u003e41cfb65\u003c/code\u003e\u003c/a\u003e [A11y][NavigationView] Request and restore focus when opened and closed in Dr...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/8f63e9485bf6da5a9a0aaefa4bbf26c8ec1364a5\"\u003e\u003ccode\u003e8f63e94\u003c/code\u003e\u003c/a\u003e [Catalog] Fix lift on scroll glitchiness in All Components demo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/80aa0cc0233af0e81a846271de0d5218beeceeaf\"\u003e\u003ccode\u003e80aa0cc\u003c/code\u003e\u003c/a\u003e [Release] Update library version to 1.14.0-rc01\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/fd44c9d58699e18de06ca5de8687fe79f390568b\"\u003e\u003ccode\u003efd44c9d\u003c/code\u003e\u003c/a\u003e [Button] [SplitButton] Fix inset and optical centering issue for SplitButton ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/e6ae416e7fc791d733eedde96ffea66d313ef231\"\u003e\u003ccode\u003ee6ae416\u003c/code\u003e\u003c/a\u003e [SearchView] Make sure IME is hidden when EditText loses focus\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/material-components/material-components-android/compare/1.11.0...1.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger:hilt-android` from 2.50 to 2.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5203\"\u003e#5203\u003c/a\u003e: Fixes regression in Dagger 2.60 where the Hilt compiler options (like fastInit) failed to propagate to the Hilt aggregation compilation tasks. (e181a0d88)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5204\"\u003e#5204\u003c/a\u003e: Fixes \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e import error by removing the annotation from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e (3f2dd8fba)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7a89b6cea7d47167f2d5f9912f61f3fee333d88\"\u003e\u003ccode\u003ef7a89b6\u003c/code\u003e\u003c/a\u003e 2.60.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/76780171d7c3ff0dc0240644f703cf181fd8b8e8\"\u003e\u003ccode\u003e7678017\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/974fe294b70f2a3ea43731a4f5b95e75c2bcb38d\"\u003e\u003ccode\u003e974fe29\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/823484c63fbdcc61d413bba40d164272f22e51a8\"\u003e\u003ccode\u003e823484c\u003c/code\u003e\u003c/a\u003e Make Android*InjectionTest$ApplicationReturnsNull public.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/c26f8d7be8ff1856667ddb3b070a410b3aeabfcc\"\u003e\u003ccode\u003ec26f8d7\u003c/code\u003e\u003c/a\u003e Add test for \u003ccode\u003e@AssistedFactory\u003c/code\u003e compilations without compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e181a0d884a3f14c8a7967af5d45f0a8c9a600ac\"\u003e\u003ccode\u003ee181a0d\u003c/code\u003e\u003c/a\u003e Fix Hilt compiler option propagation to Hilt aggregation tasks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/812e2f337718a79dd45ab8488398b5a893291ae8\"\u003e\u003ccode\u003e812e2f3\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3f2dd8fbab0a71ec09dc4f9dc543d89ec108c7f0\"\u003e\u003ccode\u003e3f2dd8f\u003c/code\u003e\u003c/a\u003e Delete \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e90e102c73d67ccb3aaad1835391e6cee2a17b42\"\u003e\u003ccode\u003ee90e102\u003c/code\u003e\u003c/a\u003e Update Dagger version in yml config and REAME.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.50...dagger-2.60.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger:hilt-compiler` from 2.50 to 2.60.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5203\"\u003e#5203\u003c/a\u003e: Fixes regression in Dagger 2.60 where the Hilt compiler options (like fastInit) failed to propagate to the Hilt aggregation compilation tasks. (e181a0d88)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5204\"\u003e#5204\u003c/a\u003e: Fixes \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e import error by removing the annotation from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e (3f2dd8fba)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7a89b6cea7d47167f2d5f9912f61f3fee333d88\"\u003e\u003ccode\u003ef7a89b6\u003c/code\u003e\u003c/a\u003e 2.60.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/76780171d7c3ff0dc0240644f703cf181fd8b8e8\"\u003e\u003ccode\u003e7678017\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/974fe294b70f2a3ea43731a4f5b95e75c2bcb38d\"\u003e\u003ccode\u003e974fe29\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/823484c63fbdcc61d413bba40d164272f22e51a8\"\u003e\u003ccode\u003e823484c\u003c/code\u003e\u003c/a\u003e Make Android*InjectionTest$ApplicationReturnsNull public.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/c26f8d7be8ff1856667ddb3b070a410b3aeabfcc\"\u003e\u003ccode\u003ec26f8d7\u003c/code\u003e\u003c/a\u003e Add test for \u003ccode\u003e@AssistedFactory\u003c/code\u003e compilations without compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e181a0d884a3f14c8a7967af5d45f0a8c9a600ac\"\u003e\u003ccode\u003ee181a0d\u003c/code\u003e\u003c/a\u003e Fix Hilt compiler option propagation to Hilt aggregation tasks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/812e2f337718a79dd45ab8488398b5a893291ae8\"\u003e\u003ccode\u003e812e2f3\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3f2dd8fbab0a71ec09dc4f9dc543d89ec108c7f0\"\u003e\u003ccode\u003e3f2dd8f\u003c/code\u003e\u003c/a\u003e Delete \u003ccode\u003e@CanIgnoreReturnValue\u003c/code\u003e from \u003ccode\u003eActivityRetainedComponentBuilder\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e90e102c73d67ccb3aaad1835391e6cee2a17b42\"\u003e\u003ccode\u003ee90e102\u003c/code\u003e\u003c/a\u003e Update Dagger version in yml config and REAME.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.50...dagger-2.60.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.hilt:hilt-navigation-compose` from 1.1.0 to 1.4.0\n\nUpdates `androidx.hilt:hilt-work` from 1.1.0 to 1.4.0\n\nUpdates `androidx.hilt:hilt-compiler` from 1.1.0 to 1.4.0\n\nUpdates `com.squareup.retrofit2:retrofit` from 2.11.0 to 3.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/square/retrofit/releases\"\u003ecom.squareup.retrofit2:retrofit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eChanged\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to OkHttp 4.12 (from 3.14).\u003c/p\u003e\n\u003cp\u003eThis is the version of OkHttp that is written in Kotlin, and as a result Retrofit now has a transitive Kotlin dependency. However, this is also the \u003cem\u003esupported\u003c/em\u003e version of OkHttp whereas the previous version was out of support for nearly 4 years.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNote: The 3.x versions of Retrofit maintain forward binary-compatibility with the 2.x versions.\nThis means libraries compiled against 2.x can still be used with the 3.x versions.\u003c/p\u003e\n\u003ch2\u003e2.12.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFirst-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using \u003ccode\u003eCall.enqueue\u003c/code\u003e directly.\u003c/p\u003e\n\u003cp\u003eThe following converters support this feature through a new \u003ccode\u003ewithStreaming()\u003c/code\u003e factory method:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGson\u003c/li\u003e\n\u003cli\u003eJackson\u003c/li\u003e\n\u003cli\u003eMoshi\u003c/li\u003e\n\u003cli\u003eProtobuf\u003c/li\u003e\n\u003cli\u003eWire\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrimitive types used with \u003ccode\u003e@Tag\u003c/code\u003e now work by storing the value boxed with the boxed class as the key.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/lysine-dev/retrofit/blob/trunk/CHANGELOG.md\"\u003ecom.squareup.retrofit2:retrofit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/releases/tag/3.0.0\"\u003e3.0.0\u003c/a\u003e - 2025-05-15\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eChanged\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to OkHttp 4.12 (from 3.14).\u003c/p\u003e\n\u003cp\u003eThis is the version of OkHttp that is written in Kotlin, and as a result Retrofit now has a transitive Kotlin dependency. However, this is also the \u003cem\u003esupported\u003c/em\u003e version of OkHttp whereas the previous version was out of support for nearly 4 years.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNote: The 3.x versions of Retrofit maintain forward binary-compatibility with the 2.x versions.\nThis means libraries compiled against 2.x can still be used with the 3.x versions.\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/releases/tag/2.12.0\"\u003e2.12.0\u003c/a\u003e - 2025-05-15\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFirst-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using \u003ccode\u003eCall.enqueue\u003c/code\u003e directly.\u003c/p\u003e\n\u003cp\u003eThe following converters support this feature through a new \u003ccode\u003ewithStreaming()\u003c/code\u003e factory method:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGson\u003c/li\u003e\n\u003cli\u003eJackson\u003c/li\u003e\n\u003cli\u003eMoshi\u003c/li\u003e\n\u003cli\u003eProtobuf\u003c/li\u003e\n\u003cli\u003eWire\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrimitive types used with \u003ccode\u003e@Tag\u003c/code\u003e now work by storing the value boxed with the boxed class as the key.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/3ab0f1a2c18666adb79ebf4eacef6fbc40d3e801\"\u003e\u003ccode\u003e3ab0f1a\u003c/code\u003e\u003c/a\u003e Prepare version 3.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/e5c02d08f3777ce00a31fb37d77f15eecdf4e383\"\u003e\u003ccode\u003ee5c02d0\u003c/code\u003e\u003c/a\u003e Commit 2.x docs (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4378\"\u003e#4378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/5bc3f183cfa24ab1f382c2029dc82ee292caef1b\"\u003e\u003ccode\u003e5bc3f18\u003c/code\u003e\u003c/a\u003e Fix links on the proudction site (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4377\"\u003e#4377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/7c3b2290bd6cd985ebaa93bfc183abd1bf04b977\"\u003e\u003ccode\u003e7c3b229\u003c/code\u003e\u003c/a\u003e Remove compileOnly stdlib dependency (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4376\"\u003e#4376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/84185470adc33a0f1b3d8766f2d722c770e2e89a\"\u003e\u003ccode\u003e8418547\u003c/code\u003e\u003c/a\u003e Update okhttp monorepo to v4 (major) (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4375\"\u003e#4375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/06216a3b24ad828e511fd25b4858a1ed104c8719\"\u003e\u003ccode\u003e06216a3\u003c/code\u003e\u003c/a\u003e Try to fix removal of latest dir during release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/1697bdc4913a34871125c96c7be16b688c6e82bc\"\u003e\u003ccode\u003e1697bdc\u003c/code\u003e\u003c/a\u003e Prepare next development version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/5a6ce364ad5208999a8e0847de760f97d39ecffe\"\u003e\u003ccode\u003e5a6ce36\u003c/code\u003e\u003c/a\u003e Prepare version 2.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/4fb8aed0cc6ebcc581d128922768867ae14e85c1\"\u003e\u003ccode\u003e4fb8aed\u003c/code\u003e\u003c/a\u003e Fix artifact name (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4372\"\u003e#4372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/bf11ef4cfaa3c50967f79e87b3e27f33670b42bc\"\u003e\u003ccode\u003ebf11ef4\u003c/code\u003e\u003c/a\u003e Dedicated website build, final status job (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/square/retrofit/compare/2.11.0...3.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.squareup.retrofit2:converter-gson` from 2.11.0 to 3.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/square/retrofit/releases\"\u003ecom.squareup.retrofit2:converter-gson's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eChanged\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to OkHttp 4.12 (from 3.14).\u003c/p\u003e\n\u003cp\u003eThis is the version of OkHttp that is written in Kotlin, and as a result Retrofit now has a transitive Kotlin dependency. However, this is also the \u003cem\u003esupported\u003c/em\u003e version of OkHttp whereas the previous version was out of support for nearly 4 years.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNote: The 3.x versions of Retrofit maintain forward binary-compatibility with the 2.x versions.\nThis means libraries compiled against 2.x can still be used with the 3.x versions.\u003c/p\u003e\n\u003ch2\u003e2.12.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFirst-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using \u003ccode\u003eCall.enqueue\u003c/code\u003e directly.\u003c/p\u003e\n\u003cp\u003eThe following converters support this feature through a new \u003ccode\u003ewithStreaming()\u003c/code\u003e factory method:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGson\u003c/li\u003e\n\u003cli\u003eJackson\u003c/li\u003e\n\u003cli\u003eMoshi\u003c/li\u003e\n\u003cli\u003eProtobuf\u003c/li\u003e\n\u003cli\u003eWire\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrimitive types used with \u003ccode\u003e@Tag\u003c/code\u003e now work by storing the value boxed with the boxed class as the key.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/lysine-dev/retrofit/blob/trunk/CHANGELOG.md\"\u003ecom.squareup.retrofit2:converter-gson's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/releases/tag/3.0.0\"\u003e3.0.0\u003c/a\u003e - 2025-05-15\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eChanged\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to OkHttp 4.12 (from 3.14).\u003c/p\u003e\n\u003cp\u003eThis is the version of OkHttp that is written in Kotlin, and as a result Retrofit now has a transitive Kotlin dependency. However, this is also the \u003cem\u003esupported\u003c/em\u003e version of OkHttp whereas the previous version was out of support for nearly 4 years.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNote: The 3.x versions of Retrofit maintain forward binary-compatibility with the 2.x versions.\nThis means libraries compiled against 2.x can still be used with the 3.x versions.\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/releases/tag/2.12.0\"\u003e2.12.0\u003c/a\u003e - 2025-05-15\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFirst-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using \u003ccode\u003eCall.enqueue\u003c/code\u003e directly.\u003c/p\u003e\n\u003cp\u003eThe following converters support this feature through a new \u003ccode\u003ewithStreaming()\u003c/code\u003e factory method:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGson\u003c/li\u003e\n\u003cli\u003eJackson\u003c/li\u003e\n\u003cli\u003eMoshi\u003c/li\u003e\n\u003cli\u003eProtobuf\u003c/li\u003e\n\u003cli\u003eWire\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrimitive types used with \u003ccode\u003e@Tag\u003c/code\u003e now work by storing the value boxed with the boxed class as the key.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/3ab0f1a2c18666adb79ebf4eacef6fbc40d3e801\"\u003e\u003ccode\u003e3ab0f1a\u003c/code\u003e\u003c/a\u003e Prepare version 3.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/e5c02d08f3777ce00a31fb37d77f15eecdf4e383\"\u003e\u003ccode\u003ee5c02d0\u003c/code\u003e\u003c/a\u003e Commit 2.x docs (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4378\"\u003e#4378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/5bc3f183cfa24ab1f382c2029dc82ee292caef1b\"\u003e\u003ccode\u003e5bc3f18\u003c/code\u003e\u003c/a\u003e Fix links on the proudction site (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4377\"\u003e#4377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/7c3b2290bd6cd985ebaa93bfc183abd1bf04b977\"\u003e\u003ccode\u003e7c3b229\u003c/code\u003e\u003c/a\u003e Remove compileOnly stdlib dependency (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4376\"\u003e#4376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/84185470adc33a0f1b3d8766f2d722c770e2e89a\"\u003e\u003ccode\u003e8418547\u003c/code\u003e\u003c/a\u003e Update okhttp monorepo to v4 (major) (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4375\"\u003e#4375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/06216a3b24ad828e511fd25b4858a1ed104c8719\"\u003e\u003ccode\u003e06216a3\u003c/code\u003e\u003c/a\u003e Try to fix removal of latest dir during release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/1697bdc4913a34871125c96c7be16b688c6e82bc\"\u003e\u003ccode\u003e1697bdc\u003c/code\u003e\u003c/a\u003e Prepare next development version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/5a6ce364ad5208999a8e0847de760f97d39ecffe\"\u003e\u003ccode\u003e5a6ce36\u003c/code\u003e\u003c/a\u003e Prepare version 2.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/4fb8aed0cc6ebcc581d128922768867ae14e85c1\"\u003e\u003ccode\u003e4fb8aed\u003c/code\u003e\u003c/a\u003e Fix artifact name (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4372\"\u003e#4372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/retrofit/commit/bf11ef4cfaa3c50967f79e87b3e27f33670b42bc\"\u003e\u003ccode\u003ebf11ef4\u003c/code\u003e\u003c/a\u003e Dedicated website build, final status job (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/square/retrofit/compare/2.11.0...3.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.squareup.okhttp3:logging-interceptor` from 4.12.0 to 5.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/lysine-dev/okhttp/blob/main/CHANGELOG.md\"\u003ecom.squareup.okhttp3:logging-interceptor's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 5.4.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-06-08\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNew: Add superpowers to interceptors. Interceptors can now override anything settable on\n\u003ccode\u003eOkHttpClient.Builder\u003c/code\u003e, such as the cache, connection pool, socket factory, and DNS. We expect\nthis will allow most users to use interceptors everywhere, insted of mixing and matching\ninterceptors with custom \u003ccode\u003eCall.Factory\u003c/code\u003e wrappers.\u003c/li\u003e\n\u003cli\u003eFix: Limit each HTTP/2 response to 256 KiB of total headers.\u003c/li\u003e\n\u003cli\u003eUpgrade: [kotlinx.coroutines 1.11.0][coroutines_1_11_0]. This is used by the optional\n\u003ccode\u003eokhttp-coroutines\u003c/code\u003e artifact.\u003c/li\u003e\n\u003cli\u003eUpgrade: [GraalVM 25.0.3][graalvm_25].\u003c/li\u003e\n\u003cli\u003eUpgrade: [Okio 3.17.0][okio_3_17_0].\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 5.3.2\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-11-18\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: Don't delay triggering timeouts. In Okio 3.16.0 we introduced a regression that caused\ntimeouts to fire later than they were supposed to.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade: [Okio 3.16.4][okio_3_16_4].\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 5.3.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-11-16\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eThis release is the same as 5.3.0. Okio 3.16.3 didn't have a necessary fix!\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade: [Okio 3.16.3][okio_3_16_3].\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 5.3.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-10-30\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNew: Add tags to \u003ccode\u003eCall\u003c/code\u003e, including computable tags. Use this to attach application-specific\nmetadata to a \u003ccode\u003eCall\u003c/code\u003e in an \u003ccode\u003eEventListener\u003c/code\u003e or \u003ccode\u003eInterceptor\u003c/code\u003e. The tag can be read in any other\n\u003ccode\u003eEventListener\u003c/code\u003e or \u003ccode\u003eInterceptor\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"kotlin\"\u003e\u003ccode\u003e  override fun intercept(chain: Interceptor.Chain): Response {\n    chain.call().tag(MyAnalyticsTag::class) {\n      MyAnalyticsTag(...)\n    }\n\u003cpre\u003e\u003ccode\u003ereturn chain.proceed(chain.request())\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e}\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/61423f472da24e0ccc42b6a2c0863fb27932fea5\"\u003e\u003ccode\u003e61423f4\u003c/code\u003e\u003c/a\u003e Prepare for release 5.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/d7e6effcb6852ca848b5f497032546b98b0a6370\"\u003e\u003ccode\u003ed7e6eff\u003c/code\u003e\u003c/a\u003e Update eclipse.osgi to v3.24.200 (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9480\"\u003e#9480\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/7a350986e3231a7b81cbfcc6e3c185327033422b\"\u003e\u003ccode\u003e7a35098\u003c/code\u003e\u003c/a\u003e Update bnd to v7.3.0 (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9475\"\u003e#9475\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/0c5a45b1174b8f735cc251eb19faaed87b65d868\"\u003e\u003ccode\u003e0c5a45b\u003c/code\u003e\u003c/a\u003e Update dependency com.puppycrawl.tools:checkstyle to v13.5.0 (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9468\"\u003e#9468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/113ad17f70af6984a1a8b4d46024118e5409c44b\"\u003e\u003ccode\u003e113ad17\u003c/code\u003e\u003c/a\u003e Update dependency macos to v26 (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9457\"\u003e#9457\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/84f601af03d047eef3f4b2f0ca6b6f72303dcea1\"\u003e\u003ccode\u003e84f601a\u003c/code\u003e\u003c/a\u003e Update shadow.plugin to v9.4.2 (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9466\"\u003e#9466\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/7d463f4bcfca91e4466037f2c65c7c700545d64c\"\u003e\u003ccode\u003e7d463f4\u003c/code\u003e\u003c/a\u003e Update spotless.plugin to v8.6.0 (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9464\"\u003e#9464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/3bf00f52921a0727bd18997cd92112dd2e582ed7\"\u003e\u003ccode\u003e3bf00f5\u003c/code\u003e\u003c/a\u003e Update plugin com.diffplug.spotless to v8.6.0 (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9463\"\u003e#9463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/cfc45a3f146d2389797a3d51d405e9118bed56c9\"\u003e\u003ccode\u003ecfc45a3\u003c/code\u003e\u003c/a\u003e Update spotless.plugin to v8.5.1 (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9456\"\u003e#9456\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lysine-dev/okhttp/commit/81c5006e336c1cb67870694e38707e2c1c44fb34\"\u003e\u003ccode\u003e81c5006\u003c/code\u003e\u003c/a\u003e Apply gradle lint correctly (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9459\"\u003e#9459\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/square/okhttp/compare/parent-4.12.0...parent-5.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.room:room-runtime` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `io.coil-kt:coil-compose` from 2.5.0 to 2.7.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coil-kt/coil/releases\"\u003eio.coil-kt:coil-compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.7.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#270---july-17-2024\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e2.6.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md#260---february-23-2024\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coil-kt/coil/blob/main/CHANGELOG.md\"\u003eio.coil-kt:coil-compose's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[2.7.0] - July 17, 2024\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSlightly optimize internal coroutines usage to improve the performance of \u003ccode\u003eImageLoader.execute\u003c/code\u003e, \u003ccode\u003eAsyncImage\u003c/code\u003e, \u003ccode\u003eSubcomposeAsyncImage\u003c/code\u003e, and \u003ccode\u003erememberAsyncImagePainter\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/2205\"\u003e#2205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix duplicate network calls for chunked responses. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/2363\"\u003e#2363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Kotlin to 2.0.0.\u003c/li\u003e\n\u003cli\u003eUpdate Compose UI to 1.6.8.\u003c/li\u003e\n\u003cli\u003eUpdate Okio to 3.9.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.0.0-alpha08] - July 8, 2024\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING\u003c/strong\u003e: Rename \u003ccode\u003eImageRequest\u003c/code\u003e and \u003ccode\u003eImageLoader\u003c/code\u003e \u003ccode\u003edispatcher\u003c/code\u003e methods to \u003ccode\u003ecoroutineContext\u003c/code\u003e. For instance, \u003ccode\u003eImageRequest.Builder.dispatcher\u003c/code\u003e is now \u003ccode\u003eImageRequest.Builder.coroutineContext\u003c/code\u003e. This was renamed as the method now accepts any \u003ccode\u003eCoroutineContext\u003c/code\u003e and no longer requires a \u003ccode\u003eDispatcher\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eFix: Fix \u003ccode\u003eIllegalStateException: Reading a state that was created after the snapshot was taken or in a snapshot that has not yet been applied\u003c/code\u003e which could occur due to a race condition.\n\u003cul\u003e\n\u003cli\u003eNOTE: This reintroduces a soft dependency on \u003ccode\u003eDispatchers.Main.immediate\u003c/code\u003e. As a result you should re-add a dependency on \u003ca href=\"https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-swing/\"\u003e\u003ccode\u003ekotlinx-coroutines-swing\u003c/code\u003e\u003c/a\u003e on JVM. If it's not imported then \u003ccode\u003eImageRequest\u003c/code\u003es won't be dispatched immediately and will have one frame of delay before setting the \u003ccode\u003eImageRequest.placeholder\u003c/code\u003e or resolving from the memory cache.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.0.0-alpha07] - June 26, 2024\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING\u003c/strong\u003e: \u003ccode\u003eAsyncImagePainter\u003c/code\u003e no longer waits for \u003ccode\u003eonDraw\u003c/code\u003e by default and instead uses \u003ccode\u003eSize.ORIGINAL\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003eThis fixes \u003ca href=\"https://redirect.github.com/coil-kt/coil/issues/1910\"\u003ecompatibility issues with Roborazzi/Paparazzi\u003c/a\u003e and overall improves test reliability.\u003c/li\u003e\n\u003cli\u003eTo revert back to waiting for \u003ccode\u003eonDraw\u003c/code\u003e, set \u003ccode\u003eDrawScopeSizeResolver\u003c/code\u003e as your \u003ccode\u003eImageRequest.sizeResolver\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING\u003c/strong\u003e: Refactor the multiplatform \u003ccode\u003eImage\u003c/code\u003e API. Notably, \u003ccode\u003easCoilImage\u003c/code\u003e has been renamed to \u003ccode\u003easImage\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING\u003c/strong\u003e: \u003ccode\u003eAsyncImagePainter.state\u003c/code\u003e has been changed to \u003ccode\u003eStateFlow\u0026lt;AsyncImagePainter.State\u0026gt;\u003c/code\u003e. Use \u003ccode\u003ecollectAsState\u003c/code\u003e to observe its value. This improves performance.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING\u003c/strong\u003e: \u003ccode\u003eAsyncImagePainter.imageLoader\u003c/code\u003e and \u003ccode\u003eAsyncImagePainter.request\u003c/code\u003e have been combined into \u003ccode\u003eStateFlow\u0026lt;AsyncImagePainter.Inputs\u0026gt;\u003c/code\u003e. Use \u003ccode\u003ecollectAsState\u003c/code\u003e to observe its value. This improves performance.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBREAKING\u003c/strong\u003e: Remove support for \u003ccode\u003eandroid.resource://example.package.name/drawable/image\u003c/code\u003e URIs as it prevents resource shrinking optimizations.\n\u003cul\u003e\n\u003cli\u003eIf you still needs its functionality you can \u003ca href=\"https://github.com/coil-kt/coil/blob/main/coil-core/src/androidInstrumentedTest/kotlin/coil3/map/ResourceUriMapper.kt\"\u003emanually include \u003ccode\u003eResourceUriMapper\u003c/code\u003e in your component registry\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNew\u003c/strong\u003e: Introduce \u003ccode\u003eAsyncImagePreviewHandler\u003c/code\u003e to support controlling \u003ccode\u003eAsyncImagePainter\u003c/code\u003e's preview rendering behavior.\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003eLocalAsyncImagePreviewHandler\u003c/code\u003e to override the preview behavior.\u003c/li\u003e\n\u003cli\u003eAs part of this change and other \u003ccode\u003ecoil-compose\u003c/code\u003e improvements, \u003ccode\u003eAsyncImagePainter\u003c/code\u003e now attempts to execute execute the \u003ccode\u003eImageRequest\u003c/code\u003e by default instead of defaulting to displaying \u003ccode\u003eImageRequest.placeholder\u003c/code\u003e. \u003ca href=\"https://developer.android.com/develop/ui/compose/tooling/previews#preview-limitations\"\u003eRequests that use the network or files are expected to fail\u003c/a\u003e in the preview environment, however Android resources should work.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNew\u003c/strong\u003e: Support extracting video image by frame index. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/2183\"\u003e#2183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNew\u003c/strong\u003e: Support passing \u003ccode\u003eCoroutineContext\u003c/code\u003e to any \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e methods. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/2241\"\u003e#2241\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNew\u003c/strong\u003e: Support the weak reference memory cache on JS and WASM JS.\u003c/li\u003e\n\u003cli\u003eDon't dispatch to \u003ccode\u003eDispatchers.Main.immediate\u003c/code\u003e in Compose. As a side-effect, \u003ca href=\"https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-swing/\"\u003e\u003ccode\u003ekotlinx-coroutines-swing\u003c/code\u003e\u003c/a\u003e no longer needs to be imported on JVM.\u003c/li\u003e\n\u003cli\u003eDon't call \u003ccode\u003easync\u003c/code\u003e and create a disposable in Compose to improve performance (thanks \u003ca href=\"https://github.com/mlykotom\"\u003e\u003ccode\u003e@​mlykotom\u003c/code\u003e\u003c/a\u003e!). (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/2205\"\u003e#2205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix passing global \u003ccode\u003eImageLoader\u003c/code\u003e extras to \u003ccode\u003eOptions\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/2223\"\u003e#2223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecrossfade(false)\u003c/code\u003e not working on non-Android targets.\u003c/li\u003e\n\u003cli\u003eFix VP8X feature flags byte offset (\u003ca href=\"https://redirect.github.com/coil-kt/coil/pull/2199\"\u003e#2199\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eConvert \u003ccode\u003eSvgDecoder\u003c/code\u003e on non-Android targets to render to a bitmap instead of render the image at draw-time. This improves performance.\n\u003cul\u003e\n\u003cli\u003eThis behavior can be controlled using \u003ccode\u003eSvgDecoder(renderToBitmap)\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eMove \u003ccode\u003eScaleDrawable\u003c/code\u003e from ...\n\n_Description has been truncated_","html_url":"https://github.com/pranaypr6/Moment/pull/25","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/pranaypr6%2FMoment/issues/25","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/25/packages"}},{"old_version":"3.5.1","new_version":"3.7.0","update_type":"minor","path":"/android","pr_created_at":"2026-07-04T14:29:08.000Z","version_change":"3.5.1 → 3.7.0","issue":{"uuid":"4809340163","node_id":"PR_kwDOStSw1c7t33T8","number":56,"state":"closed","title":"Bump the gradle group in /android with 22 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-07-04T14:57:46.000Z","author_association":null,"state_reason":null,"created_at":"2026-07-04T14:29:08.000Z","updated_at":"2026-07-04T14:58:18.000Z","time_to_close":1718,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"gradle","update_count":22,"packages":[{"name":"gradle-wrapper","old_version":"8.14.3","new_version":"8.14.5","repository_url":"https://github.com/gradle/gradle"},{"name":"androidx.core:core-ktx","old_version":"1.13.1","new_version":"1.19.0"},{"name":"androidx.lifecycle:lifecycle-runtime-ktx","old_version":"2.8.0","new_version":"2.11.0"},{"name":"androidx.lifecycle:lifecycle-viewmodel-compose","old_version":"2.8.0","new_version":"2.11.0"},{"name":"androidx.activity:activity-compose","old_version":"1.9.0","new_version":"1.13.0"},{"name":"androidx.navigation:navigation-compose","old_version":"2.7.7","new_version":"2.9.8"},{"name":"com.google.dagger:hilt-android","old_version":"2.51.1","new_version":"2.60","repository_url":"https://github.com/google/dagger"},{"name":"com.google.dagger:hilt-compiler","old_version":"2.51.1","new_version":"2.60","repository_url":"https://github.com/google/dagger"},{"name":"com.google.dagger.hilt.android","old_version":"2.51.1","new_version":"2.60","repository_url":"https://github.com/google/dagger"},{"name":"androidx.hilt:hilt-navigation-compose","old_version":"1.2.0","new_version":"1.4.0"},{"name":"androidx.room:room-runtime","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-ktx","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-compiler","old_version":"2.6.1","new_version":"2.8.4"},{"name":"com.squareup.retrofit2:retrofit","old_version":"2.11.0","new_version":"2.12.0","repository_url":"https://github.com/square/retrofit"},{"name":"androidx.datastore:datastore-preferences","old_version":"1.1.1","new_version":"1.2.1"},{"name":"nl.dionsegijn:konfetti-compose","old_version":"2.0.4","new_version":"2.0.5","repository_url":"https://github.com/DanielMartinus/Konfetti"},{"name":"androidx.test.ext:junit","old_version":"1.1.5","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.5.1","new_version":"3.7.0"},{"name":"org.robolectric:robolectric","old_version":"4.14.1","new_version":"4.16.1","repository_url":"https://github.com/robolectric/robolectric"},{"name":"io.github.takahirom.roborazzi:roborazzi","old_version":"1.32.0","new_version":"1.65.0","repository_url":"https://github.com/takahirom/roborazzi"},{"name":"io.github.takahirom.roborazzi:roborazzi-compose","old_version":"1.32.0","new_version":"1.65.0","repository_url":"https://github.com/takahirom/roborazzi"},{"name":"io.github.takahirom.roborazzi:roborazzi-junit-rule","old_version":"1.32.0","new_version":"1.65.0","repository_url":"https://github.com/takahirom/roborazzi"}],"path":"/android","ecosystem":"maven"},"body":"[//]: # (dependabot-start)\n⚠️  **Dependabot is rebasing this PR** ⚠️ \n\nRebasing might not happen immediately, so don't worry if this takes some time.\n\nNote: if you make any changes to this PR yourself, they will take precedence over the rebase.\n\n---\n\n[//]: # (dependabot-end)\n\nBumps the gradle group in /android with 22 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `8.14.3` | `8.14.5` |\n| androidx.core:core-ktx | `1.13.1` | `1.19.0` |\n| androidx.lifecycle:lifecycle-runtime-ktx | `2.8.0` | `2.11.0` |\n| androidx.lifecycle:lifecycle-viewmodel-compose | `2.8.0` | `2.11.0` |\n| androidx.activity:activity-compose | `1.9.0` | `1.13.0` |\n| androidx.navigation:navigation-compose | `2.7.7` | `2.9.8` |\n| [com.google.dagger:hilt-android](https://github.com/google/dagger) | `2.51.1` | `2.60` |\n| [com.google.dagger:hilt-compiler](https://github.com/google/dagger) | `2.51.1` | `2.60` |\n| [com.google.dagger.hilt.android](https://github.com/google/dagger) | `2.51.1` | `2.60` |\n| androidx.hilt:hilt-navigation-compose | `1.2.0` | `1.4.0` |\n| androidx.room:room-runtime | `2.6.1` | `2.8.4` |\n| androidx.room:room-ktx | `2.6.1` | `2.8.4` |\n| androidx.room:room-compiler | `2.6.1` | `2.8.4` |\n| [com.squareup.retrofit2:retrofit](https://github.com/square/retrofit) | `2.11.0` | `2.12.0` |\n| androidx.datastore:datastore-preferences | `1.1.1` | `1.2.1` |\n| [nl.dionsegijn:konfetti-compose](https://github.com/DanielMartinus/Konfetti) | `2.0.4` | `2.0.5` |\n| androidx.test.ext:junit | `1.1.5` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.5.1` | `3.7.0` |\n| [org.robolectric:robolectric](https://github.com/robolectric/robolectric) | `4.14.1` | `4.16.1` |\n| [io.github.takahirom.roborazzi:roborazzi](https://github.com/takahirom/roborazzi) | `1.32.0` | `1.65.0` |\n| [io.github.takahirom.roborazzi:roborazzi-compose](https://github.com/takahirom/roborazzi) | `1.32.0` | `1.65.0` |\n| [io.github.takahirom.roborazzi:roborazzi-junit-rule](https://github.com/takahirom/roborazzi) | `1.32.0` | `1.65.0` |\n\nUpdates `gradle-wrapper` from 8.14.3 to 8.14.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gradle/gradle/releases\"\u003egradle-wrapper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.14.5\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 8.14.5.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eJava 24 support\u003c/li\u003e\n\u003cli\u003eGraalVM Native Image toolchain selection\u003c/li\u003e\n\u003cli\u003eEnhancements to test reporting\u003c/li\u003e\n\u003cli\u003eBuild Authoring improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gradle.org/8.14.5/release-notes.html\"\u003eRead the Release Notes\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe would like to thank the following community members for their contributions to this release of Gradle:\n\u003ca href=\"https://github.com/liutikas\"\u003eAurimas\u003c/a\u003e,\n\u003ca href=\"https://github.com/benjamin-bader\"\u003eBen Bader\u003c/a\u003e,\n\u003ca href=\"https://github.com/Vampire\"\u003eBjörn Kautler\u003c/a\u003e,\n\u003ca href=\"https://github.com/chandre92\"\u003echandre92\u003c/a\u003e,\n\u003ca href=\"https://github.com/dlehammer\"\u003eDaniel Hammer\u003c/a\u003e,\n\u003ca href=\"https://github.com/danishnawab\"\u003eDanish Nawab\u003c/a\u003e,\n\u003ca href=\"https://github.com/DreierF\"\u003eFlorian Dreier\u003c/a\u003e,\n\u003ca href=\"https://github.com/Mengmeiivy\"\u003eIvy Chen\u003c/a\u003e,\n\u003ca href=\"https://github.com/jjohannes\"\u003eJendrik Johannes\u003c/a\u003e,\n\u003ca href=\"https://github.com/jimmy1995-gu\"\u003ejimmy1995-gu\u003c/a\u003e,\n\u003ca href=\"https://github.com/vmadalin\"\u003eMadalin Valceleanu\u003c/a\u003e,\n\u003ca href=\"https://github.com/NaMinhyeok\"\u003eNa Minhyeok\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eUpgrade instructions\u003c/h2\u003e\n\u003cp\u003eSwitch your build to use Gradle 8.14.5 by updating your wrapper:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./gradlew wrapper --gradle-version=8.14.5 \u0026amp;\u0026amp; ./gradlew wrapper\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the Gradle \u003ca href=\"https://docs.gradle.org/8.14.5/userguide/upgrading_version_8.html\"\u003e8.x upgrade guide\u003c/a\u003e to learn about deprecations, breaking changes and other considerations when upgrading.\u003c/p\u003e\n\u003cp\u003eFor Java, Groovy, Kotlin and Android compatibility, see the \u003ca href=\"https://docs.gradle.org/8.14.5/userguide/compatibility.html\"\u003efull compatibility notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReporting problems\u003c/h2\u003e\n\u003cp\u003eIf you find a problem with this release, please file a bug on \u003ca href=\"https://github.com/gradle/gradle/issues\"\u003eGitHub Issues\u003c/a\u003e adhering to our issue guidelines.\nIf you're not sure you're encountering a bug, please use the \u003ca href=\"https://discuss.gradle.org/c/help-discuss\"\u003eforum\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe hope you will build happiness with Gradle, and we look forward to your feedback via \u003ca href=\"https://twitter.com/gradle\"\u003eTwitter\u003c/a\u003e or on \u003ca href=\"https://github.com/gradle\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e8.14.4\u003c/h2\u003e\n\u003cp\u003eThis is a patch release for 8.14. We recommend using 8.14.4 instead of 8.14.\u003c/p\u003e\n\u003cp\u003eThis release addresses two security vulnerabilities:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/security/advisories/GHSA-mqwm-5m85-gmcv\"\u003eFailure to disable repositories failing to answer can expose builds to malicious artifacts\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/security/advisories/GHSA-w78c-w6vf-rw82\"\u003eFailure to disable repositories with unknown host can expose builds to malicious artifacts\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/62345becae08b13e793521816d585102fea66398\"\u003e\u003ccode\u003e62345be\u003c/code\u003e\u003c/a\u003e Finalize release notes for 8.14.5 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37829\"\u003e#37829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/38049c286691bf85cee542f8b2f8dc1cc54dd25d\"\u003e\u003ccode\u003e38049c2\u003c/code\u003e\u003c/a\u003e Finalize release notes for 8.14.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/f3781397d4ad84fcc034f239efe7dc350f564741\"\u003e\u003ccode\u003ef378139\u003c/code\u003e\u003c/a\u003e Update jdks.yaml (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37780\"\u003e#37780\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/4e739b5959a5b0f1c5962cd387143c91b27343d3\"\u003e\u003ccode\u003e4e739b5\u003c/code\u003e\u003c/a\u003e Update jdks.yaml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/d94136aadaa292280b860e5032e7dddc6e116112\"\u003e\u003ccode\u003ed94136a\u003c/code\u003e\u003c/a\u003e Update jdks.yaml (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37704\"\u003e#37704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/a2f6942e453c80634fca32ba0e11a9ce8b7baf48\"\u003e\u003ccode\u003ea2f6942\u003c/code\u003e\u003c/a\u003e Update jdks.yaml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/28df2639ea8752218176288ef6a9e678c779f73b\"\u003e\u003ccode\u003e28df263\u003c/code\u003e\u003c/a\u003e Backport exclude bugfix (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37559\"\u003e#37559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/e03dca12e7b77f5f6ec00f7d81eb8734f7596d52\"\u003e\u003ccode\u003ee03dca1\u003c/code\u003e\u003c/a\u003e Upgrade BouncyCastle to 1.84 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37656\"\u003e#37656\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/987d1a32e4f3d97b14413e9ee2742df820ec6beb\"\u003e\u003ccode\u003e987d1a3\u003c/code\u003e\u003c/a\u003e Bump the Jackson version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/56e392c0f0b9f16bcba1c03f7bd0bae08a82556a\"\u003e\u003ccode\u003e56e392c\u003c/code\u003e\u003c/a\u003e Bump Bouncycastle to 1.84\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gradle/gradle/compare/v8.14.3...v8.14.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.core:core-ktx` from 1.13.1 to 1.19.0\n\nUpdates `androidx.lifecycle:lifecycle-runtime-ktx` from 2.8.0 to 2.11.0\n\nUpdates `androidx.lifecycle:lifecycle-viewmodel-compose` from 2.8.0 to 2.11.0\n\nUpdates `androidx.lifecycle:lifecycle-viewmodel-compose` from 2.8.0 to 2.11.0\n\nUpdates `androidx.activity:activity-compose` from 1.9.0 to 1.13.0\n\nUpdates `androidx.navigation:navigation-compose` from 2.7.7 to 2.9.8\n\nUpdates `com.google.dagger:hilt-android` from 2.51.1 to 2.60\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003ch3\u003eBug fixes/features:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/4944\"\u003e#4944\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/4979\"\u003e#4979\u003c/a\u003e: Support AGP 9 in HiltGradlePlugin (6afd7ea5a0fb84a38f2d23c990ddbd95e728a39d)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.58\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 support was held back from this release (\u003ca href=\"https://redirect.github.com/google/dagger/pull/5061/commits/0a5b42cf910be11752c4b958c4735715bf57c564\"\u003egoogle/dagger#5061\u003c/a\u003e) because it forces users onto AGP 9. It will be available in the next Dagger release (e92e3f392).\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/d9ccdc70e7f68cffcdad04f90463963bd6713043\"\u003e\u003ccode\u003ed9ccdc7\u003c/code\u003e\u003c/a\u003e 2.60 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e820a704ca51606575dc35d78eedcfcfe24061c4\"\u003e\u003ccode\u003ee820a70\u003c/code\u003e\u003c/a\u003e Refactor: Inline library sources directly within MembersInjectionValidationTest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/4bedb4b6417e61184a84070389fff453926b17c3\"\u003e\u003ccode\u003e4bedb4b\u003c/code\u003e\u003c/a\u003e Support nullable type annotations with a flag.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/445e6f01f505a4e5b6dff8edb564b2c8205376e4\"\u003e\u003ccode\u003e445e6f0\u003c/code\u003e\u003c/a\u003e Fix wording on ProducerMonitor methodStarting and ready javadocs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/5b8b2bdbed4b048087fad859aeced2539b04a1fd\"\u003e\u003ccode\u003e5b8b2bd\u003c/code\u003e\u003c/a\u003e Enable Guava BetaApi checks in Dagger's Bazel build.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/639cd2b7dbc87414e463ec9519911fb3c77696c0\"\u003e\u003ccode\u003e639cd2b\u003c/code\u003e\u003c/a\u003e Temporarily disable a few KSP tests before updating XProcessing artifacts.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/5988296e5bca4c2c7cae8e291c724b22d2adb35f\"\u003e\u003ccode\u003e5988296\u003c/code\u003e\u003c/a\u003e Handle \u003ccode\u003eRuntimeException\u003c/code\u003es in \u003ccode\u003eDaggerSuperficialValidation\u003c/code\u003e getMessage / trac...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/2227e7023b162f4889773b7d9b004e36b5b70cf2\"\u003e\u003ccode\u003e2227e70\u003c/code\u003e\u003c/a\u003e Remove unused ProcessorErrors methods.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7daaec5a969591650101a612d580eef93a65d59b\"\u003e\u003ccode\u003e7daaec5\u003c/code\u003e\u003c/a\u003e Update Kotlin and KSP versions to 2.3.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.51.1...dagger-2.60\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger:hilt-compiler` from 2.51.1 to 2.60\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003ch3\u003eBug fixes/features:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/4944\"\u003e#4944\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/4979\"\u003e#4979\u003c/a\u003e: Support AGP 9 in HiltGradlePlugin (6afd7ea5a0fb84a38f2d23c990ddbd95e728a39d)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.58\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 support was held back from this release (\u003ca href=\"https://redirect.github.com/google/dagger/pull/5061/commits/0a5b42cf910be11752c4b958c4735715bf57c564\"\u003egoogle/dagger#5061\u003c/a\u003e) because it forces users onto AGP 9. It will be available in the next Dagger release (e92e3f392).\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/d9ccdc70e7f68cffcdad04f90463963bd6713043\"\u003e\u003ccode\u003ed9ccdc7\u003c/code\u003e\u003c/a\u003e 2.60 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e820a704ca51606575dc35d78eedcfcfe24061c4\"\u003e\u003ccode\u003ee820a70\u003c/code\u003e\u003c/a\u003e Refactor: Inline library sources directly within MembersInjectionValidationTest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/4bedb4b6417e61184a84070389fff453926b17c3\"\u003e\u003ccode\u003e4bedb4b\u003c/code\u003e\u003c/a\u003e Support nullable type annotations with a flag.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/445e6f01f505a4e5b6dff8edb564b2c8205376e4\"\u003e\u003ccode\u003e445e6f0\u003c/code\u003e\u003c/a\u003e Fix wording on ProducerMonitor methodStarting and ready javadocs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/5b8b2bdbed4b048087fad859aeced2539b04a1fd\"\u003e\u003ccode\u003e5b8b2bd\u003c/code\u003e\u003c/a\u003e Enable Guava BetaApi checks in Dagger's Bazel build.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/639cd2b7dbc87414e463ec9519911fb3c77696c0\"\u003e\u003ccode\u003e639cd2b\u003c/code\u003e\u003c/a\u003e Temporarily disable a few KSP tests before updating XProcessing artifacts.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/5988296e5bca4c2c7cae8e291c724b22d2adb35f\"\u003e\u003ccode\u003e5988296\u003c/code\u003e\u003c/a\u003e Handle \u003ccode\u003eRuntimeException\u003c/code\u003es in \u003ccode\u003eDaggerSuperficialValidation\u003c/code\u003e getMessage / trac...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/2227e7023b162f4889773b7d9b004e36b5b70cf2\"\u003e\u003ccode\u003e2227e70\u003c/code\u003e\u003c/a\u003e Remove unused ProcessorErrors methods.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7daaec5a969591650101a612d580eef93a65d59b\"\u003e\u003ccode\u003e7daaec5\u003c/code\u003e\u003c/a\u003e Update Kotlin and KSP versions to 2.3.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.51.1...dagger-2.60\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger.hilt.android` from 2.51.1 to 2.60\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger.hilt.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003ch3\u003eBug fixes/features:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/4944\"\u003e#4944\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/4979\"\u003e#4979\u003c/a\u003e: Support AGP 9 in HiltGradlePlugin (6afd7ea5a0fb84a38f2d23c990ddbd95e728a39d)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.58\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 support was held back from this release (\u003ca href=\"https://redirect.github.com/google/dagger/pull/5061/commits/0a5b42cf910be11752c4b958c4735715bf57c564\"\u003egoogle/dagger#5061\u003c/a\u003e) because it forces users onto AGP 9. It will be available in the next Dagger release (e92e3f392).\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/d9ccdc70e7f68cffcdad04f90463963bd6713043\"\u003e\u003ccode\u003ed9ccdc7\u003c/code\u003e\u003c/a\u003e 2.60 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e820a704ca51606575dc35d78eedcfcfe24061c4\"\u003e\u003ccode\u003ee820a70\u003c/code\u003e\u003c/a\u003e Refactor: Inline library sources directly within MembersInjectionValidationTest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/4bedb4b6417e61184a84070389fff453926b17c3\"\u003e\u003ccode\u003e4bedb4b\u003c/code\u003e\u003c/a\u003e Support nullable type annotations with a flag.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/445e6f01f505a4e5b6dff8edb564b2c8205376e4\"\u003e\u003ccode\u003e445e6f0\u003c/code\u003e\u003c/a\u003e Fix wording on ProducerMonitor methodStarting and ready javadocs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/5b8b2bdbed4b048087fad859aeced2539b04a1fd\"\u003e\u003ccode\u003e5b8b2bd\u003c/code\u003e\u003c/a\u003e Enable Guava BetaApi checks in Dagger's Bazel build.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/639cd2b7dbc87414e463ec9519911fb3c77696c0\"\u003e\u003ccode\u003e639cd2b\u003c/code\u003e\u003c/a\u003e Temporarily disable a few KSP tests before updating XProcessing artifacts.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/5988296e5bca4c2c7cae8e291c724b22d2adb35f\"\u003e\u003ccode\u003e5988296\u003c/code\u003e\u003c/a\u003e Handle \u003ccode\u003eRuntimeException\u003c/code\u003es in \u003ccode\u003eDaggerSuperficialValidation\u003c/code\u003e getMessage / trac...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/2227e7023b162f4889773b7d9b004e36b5b70cf2\"\u003e\u003ccode\u003e2227e70\u003c/code\u003e\u003c/a\u003e Remove unused ProcessorErrors methods.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7daaec5a969591650101a612d580eef93a65d59b\"\u003e\u003ccode\u003e7daaec5\u003c/code\u003e\u003c/a\u003e Update Kotlin and KSP versions to 2.3.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.51.1...dagger-2.60\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger:hilt-compiler` from 2.51.1 to 2.60\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.60\u003c/h2\u003e\n\u003ch2\u003eNew features:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5165\"\u003e#5165\u003c/a\u003e: Support nullable type annotations when using the flag \u003ccode\u003e-Adagger.nullableTypeAnnotations=enabled\u003c/code\u003e.\nFor more details see \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\"\u003ehttps://dagger.dev/dev-guide/compiler-options#nullable-type-annotations\u003c/a\u003e. (4bedb4b64)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5087\"\u003e#5087\u003c/a\u003e: When using the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e, you\ncan now disable \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#fast-init\"\u003efastInit mode\u003c/a\u003e from the command line,\ne.g. \u003ccode\u003e-Pdagger.hilt.fastInit=false\u003c/code\u003e. For more details see \u003ca href=\"https://dagger.dev/hilt/flags#fast-init\"\u003ehttps://dagger.dev/hilt/flags#fast-init\u003c/a\u003e. (0f7642ba1)\u003c/li\u003e\n\u003cli\u003eIntroduced parameterless \u003ccode\u003e@Binds\u003c/code\u003e methods to explicitly bind \u003ccode\u003e@Inject\u003c/code\u003e constructors. For more details see \u003ca href=\"https://dagger.dev/dev-guide/#parameterless-binds\"\u003ehttps://dagger.dev/dev-guide/#parameterless-binds\u003c/a\u003e. (4c81e9416)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePotential breaking changes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using the Hilt Gradle plugin, an error is now reported if a user sets a plugin-controlled flag (previously the plugin just ignored the user’s input). (a119ba68c)\u003c/li\u003e\n\u003cli\u003eMultidex support is removed. minSDK for Hilt is now 23, matching AndroidX\n(\u003ca href=\"https://issuetracker.google.com/380448311\"\u003ehttps://issuetracker.google.com/380448311\u003c/a\u003e) (1990bd1c4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes:\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1290\"\u003e#1290\u003c/a\u003e: Enabled Guava BetaApi checks (5b8b2bdbe)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5190\"\u003e#5190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5180\"\u003e#5180\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/5177\"\u003e#5177\u003c/a\u003e: Updated Kotlin version ton 2.3.21 (7daaec5a9)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/5160\"\u003e#5160\u003c/a\u003e: Deferred ViewModelMetadata processing on error types or missing \u003ca href=\"https://github.com/AssistedFactory\"\u003e\u003ccode\u003e@​AssistedFactory\u003c/code\u003e\u003c/a\u003e (59827c699)\u003c/li\u003e\n\u003cli\u003eFixes missing originating element attachments in a few Hilt processors to ensure correct incremental compilation tracking. (2930ca837)\u003c/li\u003e\n\u003cli\u003eFixes Dagger multibinding duplicate masking across Map components (compile-time validation)\nAdds strict compile-time detection for duplicate map multibinding keys across component boundaries. This is enabled via the \u003ccode\u003e-Adagger.mapMultibindingDuplicateDetectionFix=ENABLED\u003c/code\u003e. This option is \u003ccode\u003eDISABLED\u003c/code\u003e by default to maintain backward compatibility. See \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#map-multibinding-duplicate-detection-fix\"\u003eCompiler Options\u003c/a\u003e for more details. (504397ebe)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003ch3\u003eBug fixes/features:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/4944\"\u003e#4944\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/4979\"\u003e#4979\u003c/a\u003e: Support AGP 9 in HiltGradlePlugin (6afd7ea5a0fb84a38f2d23c990ddbd95e728a39d)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.58\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 support was held back from this release (\u003ca href=\"https://redirect.github.com/google/dagger/pull/5061/commits/0a5b42cf910be11752c4b958c4735715bf57c564\"\u003egoogle/dagger#5061\u003c/a\u003e) because it forces users onto AGP 9. It will be available in the next Dagger release (e92e3f392).\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/d9ccdc70e7f68cffcdad04f90463963bd6713043\"\u003e\u003ccode\u003ed9ccdc7\u003c/code\u003e\u003c/a\u003e 2.60 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7451e3788d1f7944323f6dcad6e404274bba166c\"\u003e\u003ccode\u003e7451e37\u003c/code\u003e\u003c/a\u003e Add dependenciesRequested to ProducerMonitor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/e820a704ca51606575dc35d78eedcfcfe24061c4\"\u003e\u003ccode\u003ee820a70\u003c/code\u003e\u003c/a\u003e Refactor: Inline library sources directly within MembersInjectionValidationTest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/4bedb4b6417e61184a84070389fff453926b17c3\"\u003e\u003ccode\u003e4bedb4b\u003c/code\u003e\u003c/a\u003e Support nullable type annotations with a flag.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/445e6f01f505a4e5b6dff8edb564b2c8205376e4\"\u003e\u003ccode\u003e445e6f0\u003c/code\u003e\u003c/a\u003e Fix wording on ProducerMonitor methodStarting and ready javadocs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/5b8b2bdbed4b048087fad859aeced2539b04a1fd\"\u003e\u003ccode\u003e5b8b2bd\u003c/code\u003e\u003c/a\u003e Enable Guava BetaApi checks in Dagger's Bazel build.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/639cd2b7dbc87414e463ec9519911fb3c77696c0\"\u003e\u003ccode\u003e639cd2b\u003c/code\u003e\u003c/a\u003e Temporarily disable a few KSP tests before updating XProcessing artifacts.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/5988296e5bca4c2c7cae8e291c724b22d2adb35f\"\u003e\u003ccode\u003e5988296\u003c/code\u003e\u003c/a\u003e Handle \u003ccode\u003eRuntimeException\u003c/code\u003es in \u003ccode\u003eDaggerSuperficialValidation\u003c/code\u003e getMessage / trac...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/2227e7023b162f4889773b7d9b004e36b5b70cf2\"\u003e\u003ccode\u003e2227e70\u003c/code\u003e\u003c/a\u003e Remove unused ProcessorErrors methods.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/7daaec5a969591650101a612d580eef93a65d59b\"\u003e\u003ccode\u003e7daaec5\u003c/code\u003e\u003c/a\u003e Update Kotlin and KSP versions to 2.3.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.51.1...dagger-2.60\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.hilt:hilt-navigation-compose` from 1.2.0 to 1.4.0\n\nUpdates `androidx.room:room-runtime` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `com.squareup.retrofit2:retrofit` from 2.11.0 to 2.12.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/square/retrofit/releases\"\u003ecom.squareup.retrofit2:retrofit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.12.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFirst-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using \u003ccode\u003eCall.enqueue\u003c/code\u003e directly.\u003c/p\u003e\n\u003cp\u003eThe following converters support this feature through a new \u003ccode\u003ewithStreaming()\u003c/code\u003e factory method:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGson\u003c/li\u003e\n\u003cli\u003eJackson\u003c/li\u003e\n\u003cli\u003eMoshi\u003c/li\u003e\n\u003cli\u003eProtobuf\u003c/li\u003e\n\u003cli\u003eWire\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrimitive types used with \u003ccode\u003e@Tag\u003c/code\u003e now work by storing the value boxed with the boxed class as the key.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/square/retrofit/blob/trunk/CHANGELOG.md\"\u003ecom.squareup.retrofit2:retrofit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/square/retrofit/releases/tag/2.12.0\"\u003e2.12.0\u003c/a\u003e - 2025-05-15\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFirst-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using \u003ccode\u003eCall.enqueue\u003c/code\u003e directly.\u003c/p\u003e\n\u003cp\u003eThe following converters support this feature through a new \u003ccode\u003ewithStreaming()\u003c/code\u003e factory method:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGson\u003c/li\u003e\n\u003cli\u003eJackson\u003c/li\u003e\n\u003cli\u003eMoshi\u003c/li\u003e\n\u003cli\u003eProtobuf\u003c/li\u003e\n\u003cli\u003eWire\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrimitive types used with \u003ccode\u003e@Tag\u003c/code\u003e now work by storing the value boxed with the boxed class as the key.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/5a6ce364ad5208999a8e0847de760f97d39ecffe\"\u003e\u003ccode\u003e5a6ce36\u003c/code\u003e\u003c/a\u003e Prepare version 2.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/4fb8aed0cc6ebcc581d128922768867ae14e85c1\"\u003e\u003ccode\u003e4fb8aed\u003c/code\u003e\u003c/a\u003e Fix artifact name (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4372\"\u003e#4372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/bf11ef4cfaa3c50967f79e87b3e27f33670b42bc\"\u003e\u003ccode\u003ebf11ef4\u003c/code\u003e\u003c/a\u003e Dedicated website build, final status job (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/152cef59f2769c8d5bf102209fcf9565f0805a5e\"\u003e\u003ccode\u003e152cef5\u003c/code\u003e\u003c/a\u003e Update dependency sharp to ^0.34.0 (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4369\"\u003e#4369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/87a1de000541244c6db4c83cf414a6166bd70e93\"\u003e\u003ccode\u003e87a1de0\u003c/code\u003e\u003c/a\u003e Update dependency astro to v5.7.13 (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4364\"\u003e#4364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/7dac3926f247edb3673a650bf6d78b6eda1eaac0\"\u003e\u003ccode\u003e7dac392\u003c/code\u003e\u003c/a\u003e Update dependency \u003ccode\u003e@​astrojs/starlight\u003c/code\u003e to v0.34.3 (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4362\"\u003e#4362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/e8986a004bc7d44b9b6d373350b822de7717f949\"\u003e\u003ccode\u003ee8986a0\u003c/code\u003e\u003c/a\u003e Update dependency com.vanniktech:gradle-maven-publish-plugin to v0.32.0 (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4368\"\u003e#4368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/93084eb985b93b81093b14d3afa0760256a740c2\"\u003e\u003ccode\u003e93084eb\u003c/code\u003e\u003c/a\u003e Specify site and base in website config (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4367\"\u003e#4367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/924e202af9f035a25a3ccdaa1e8fe7603715b66f\"\u003e\u003ccode\u003e924e202\u003c/code\u003e\u003c/a\u003e Run website commands in website dir (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4365\"\u003e#4365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/f3a8fe8d2a5f46bd9fcf6e36b0f10a078779d29f\"\u003e\u003ccode\u003ef3a8fe8\u003c/code\u003e\u003c/a\u003e New website (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4359\"\u003e#4359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/square/retrofit/compare/2.11.0...2.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.datastore:datastore-preferences` from 1.1.1 to 1.2.1\n\nUpdates `nl.dionsegijn:konfetti-compose` from 2.0.4 to 2.0.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/DanielMartinus/Konfetti/releases\"\u003enl.dionsegijn:konfetti-compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.5\u003c/h2\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/DanielMartinus/Konfetti/pull/333\"\u003eDanielMartinus/Konfetti#333\u003c/a\u003e) and issue \u003ca href=\"https://redirect.github.com/DanielMartinus/Konfetti/issues/306\"\u003eDanielMartinus/Konfetti#306\u003c/a\u003e \u003cstrong\u003eReplace withFrameMillis with withInfiniteAnimationFrameMillis\u003c/strong\u003e - fixes instrumentation tests with Konfetti-compose implementation in them (\u003ccode\u003eIdling resource timed out: possibly due to compose being busy.\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/crowleysimon\"\u003e\u003ccode\u003e@​crowleysimon\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/lupuuss\"\u003e\u003ccode\u003e@​lupuuss\u003c/code\u003e\u003c/a\u003e for investigating this issue and \u003ca href=\"https://github.com/matthewbartos\"\u003e\u003ccode\u003e@​matthewbartos\u003c/code\u003e\u003c/a\u003e for getting it on my radar\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DanielMartinus/Konfetti/commit/bacc389dbdac31313a2acd2702793f32fdaeb10a\"\u003e\u003ccode\u003ebacc389\u003c/code\u003e\u003c/a\u003e Bump version 2.0.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DanielMartinus/Konfetti/commit/6dbc42e5fe677f2d3d601a6b39bcc592ac4cc432\"\u003e\u003ccode\u003e6dbc42e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/DanielMartinus/Konfetti/issues/333\"\u003e#333\u003c/a\u003e from lupuuss/compose-konfetti-view-tests-support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DanielMartinus/Konfetti/commit/c4ccd6b291a1ae103b3f8965dbdccfbf2482cb31\"\u003e\u003ccode\u003ec4ccd6b\u003c/code\u003e\u003c/a\u003e Replace withFrameMillis with withInfiniteAnimationFrameMillis to run Konfetti...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DanielMartinus/Konfetti/commit/6183596b5fbdd2c1fc6ea2656c85da8f883f3f51\"\u003e\u003ccode\u003e6183596\u003c/code\u003e\u003c/a\u003e Update LICENSE\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DanielMartinus/Konfetti/commit/1ebaf94b1dc257ba0d453c9413cb49b4d0c653e3\"\u003e\u003ccode\u003e1ebaf94\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/DanielMartinus/Konfetti/issues/322\"\u003e#322\u003c/a\u003e from DanielMartinus/update-spotless\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DanielMartinus/Konfetti/commit/1a1373f613b8e37ec5cf66d5318529b14f48131a\"\u003e\u003ccode\u003e1a1373f\u003c/code\u003e\u003c/a\u003e Run spotless\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DanielMartinus/Konfetti/commit/892f480ff2195048c0519f79a29257f95cdb0cc1\"\u003e\u003ccode\u003e892f480\u003c/code\u003e\u003c/a\u003e Add .editorconfig to make it work with compose class capitalization\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DanielMartinus/Konfetti/commit/fa17150be4516586094393f4bd816bf9af3d69c7\"\u003e\u003ccode\u003efa17150\u003c/code\u003e\u003c/a\u003e Bump ktlint and spotless version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DanielMartinus/Konfetti/commit/0425c22ee0633bcd0d528bd797e8ad146dbbcc67\"\u003e\u003ccode\u003e0425c22\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/DanielMartinus/Konfetti/issues/321\"\u003e#321\u003c/a\u003e from DanielMartinus/migrate-core-to-jvm-only-module\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DanielMartinus/Konfetti/commit/5a4ba383fad86a3079300cbcc0f899b236479049\"\u003e\u003ccode\u003e5a4ba38\u003c/code\u003e\u003c/a\u003e Include javadoc for sonatype\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/DanielMartinus/Konfetti/compare/v2.0.4...v2.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.test.ext:junit` from 1.1.5 to 1.3.0\n\nUpdates `androidx.test.espresso:espresso-core` from 3.5.1 to 3.7.0\n\nUpdates `org.robolectric:robolectric` from 4.14.1 to 4.16.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/robolectric/robolectric/releases\"\u003eorg.robolectric:robolectric's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eRobolectric 4.16.1 is a minor release that fixes some issues when Robolectric is used for Android Platform development. Most notably, it is updated to support the deletion of \u003ca href=\"https://developer.android.com/reference/android/hardware/fingerprint/FingerprintManager\"\u003eFingerprintManager\u003c/a\u003e in the Android Framework, as well as some improvements to the \u003ccode\u003eVirtualDeviceManager\u003c/code\u003e shadow.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/robolectric/robolectric/compare/robolectric-4.16...robolectric-4.16.1\"\u003ehttps://github.com/robolectric/robolectric/compare/robolectric-4.16...robolectric-4.16.1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eRobolectric 4.16 supports Android Baklava (SDK 36), and you need to use JDK 21 if running tests with SDK 36 target. It also removes support for Android L (SDK 21 and 22).\u003c/p\u003e\n\u003cp\u003eOne exciting new feature is native resources (ResourcesMode.NATIVE). Note this is currently only available in SDK 36.\u003c/p\u003e\n\u003cp\u003eIf you have any issues, please file them \u003ca href=\"https://github.com/robolectric/robolectric/issues\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReuse \u003ccode\u003eShadowUIModeManager\u003c/code\u003e in \u003ccode\u003eShadowUIModeManagerTest\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10368\"\u003erobolectric/robolectric#10368\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate AndroidX by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10373\"\u003erobolectric/robolectric#10373\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency gradle to v8.14.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10372\"\u003erobolectric/robolectric#10372\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency com.googlecode.libphonenumber:libphonenumber to v9.0.7 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10371\"\u003erobolectric/robolectric#10371\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency org.bouncycastle:bcprov-jdk18on to v1.81 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10374\"\u003erobolectric/robolectric#10374\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ApplicationInfo inconsistencies in Robolectric. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10375\"\u003erobolectric/robolectric#10375\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd shadow for new resolveActivityAsUser variant. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10377\"\u003erobolectric/robolectric#10377\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdjust to indevelopment SDK changes. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10379\"\u003erobolectric/robolectric#10379\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdding support to the Simulator for picking up the device configuration from a Configurer. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10381\"\u003erobolectric/robolectric#10381\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClean up SDK ranges for shadow methods in Baklava. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10380\"\u003erobolectric/robolectric#10380\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a shadow for Equalizer in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10384\"\u003erobolectric/robolectric#10384\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate example to be consistent with robolectric.org by \u003ca href=\"https://github.com/seadowg\"\u003e\u003ccode\u003e@​seadowg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/7475\"\u003erobolectric/robolectric#7475\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate the \u003ccode\u003esimulator-gradle-plugin\u003c/code\u003e to depends on AGP \u003ccode\u003egradle-api\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10386\"\u003erobolectric/robolectric#10386\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace custom \u003ccode\u003egetOrDefault()\u003c/code\u003e with the corresponding Java method by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10370\"\u003erobolectric/robolectric#10370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Javadoc for \u003ccode\u003eShadowPausedLooper\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10387\"\u003erobolectric/robolectric#10387\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix condition in \u003ccode\u003eResourceHelper#parseFloatAttribute()\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10369\"\u003erobolectric/robolectric#10369\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eValidate listener in \u003ccode\u003eShadowAccountManager#addOnAccountsUpdatedListener()\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10361\"\u003erobolectric/robolectric#10361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for UiModeManager.setNightMode(UiModeManager.MODE_NIGHT_CUSTOM) in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10390\"\u003erobolectric/robolectric#10390\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLazily register the simulator plugin by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10391\"\u003erobolectric/robolectric#10391\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable stricter plugin validation by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10388\"\u003erobolectric/robolectric#10388\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd the VirtualDeviceManager#getVirtualDevice(int deviceId) to the ShadowVirtualDeviceManager. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10395\"\u003erobolectric/robolectric#10395\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix various small warnings by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10394\"\u003erobolectric/robolectric#10394\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd shadow implement of AccessibilityService#getRootInActiveWindow in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10397\"\u003erobolectric/robolectric#10397\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd more information to the generated POM file by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10392\"\u003erobolectric/robolectric#10392\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange ShadowChoreographer.getDefaultFrameDelay into a shadow method. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10404\"\u003erobolectric/robolectric#10404\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRestore removed methods from \u003ccode\u003eConfig\u003c/code\u003e by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10406\"\u003erobolectric/robolectric#10406\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd shadow override for Network SocketFactory. in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10409\"\u003erobolectric/robolectric#10409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing deprecations to some \u003ccode\u003eConfig.Builder\u003c/code\u003e methods by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10408\"\u003erobolectric/robolectric#10408\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003etestDebugUnitTest\u003c/code\u003e from the dependencies of the \u003ccode\u003esimulator\u003c/code\u003e task by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10413\"\u003erobolectric/robolectric#10413\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMerge branch 'google' into 'master' by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10414\"\u003erobolectric/robolectric#10414\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the snapshot version to 4.16 by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10415\"\u003erobolectric/robolectric#10415\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd ability to specify is80211azNtbMeasurement to ShadowRangingResult in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10410\"\u003erobolectric/robolectric#10410\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded implementation for Path.op by \u003ca href=\"https://github.com/GisoBartels\"\u003e\u003ccode\u003e@​GisoBartels\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10288\"\u003erobolectric/robolectric#10288\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix massive code warnings of ShadowVirtualDeviceManagerTest by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10399\"\u003erobolectric/robolectric#10399\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove redundant String concatenation by \u003ca href=\"https://github.com/MGaetan89\"\u003e\u003ccode\u003e@​MGaetan89\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10417\"\u003erobolectric/robolectric#10417\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigrate deprecated APIs to idleMainLooper for ShadowVirtualDeviceManagerTest by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10418\"\u003erobolectric/robolectric#10418\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace Stream#toList to Stream#collect(Collectors.toList()) by \u003ca href=\"https://github.com/utzcoz\"\u003e\u003ccode\u003e@​utzcoz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10420\"\u003erobolectric/robolectric#10420\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport Java 11 in the simulator gradle plugin by \u003ca href=\"https://github.com/hoisie\"\u003e\u003ccode\u003e@​hoisie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10421\"\u003erobolectric/robolectric#10421\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate AndroidX by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/robolectric/robolectric/pull/10422\"\u003erobolectric/robolectric#10422\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/524ea8e634ad51b39356a41fbb4a3474034dd250\"\u003e\u003ccode\u003e524ea8e\u003c/code\u003e\u003c/a\u003e Bump version to 4.16.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/54fd1eeaf0ce87ac3280a7156a666dcddffe874f\"\u003e\u003ccode\u003e54fd1ee\u003c/code\u003e\u003c/a\u003e Implement ResTable support for shared libraries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/1e35e634fc7c22e1d54fe3ac73ab8fce704bd4db\"\u003e\u003ccode\u003e1e35e63\u003c/code\u003e\u003c/a\u003e When a top-level exception occurs in the Simulator, print the stack trace and...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/e2c046f467de139f346eff3e0c0ff2d3610f66e6\"\u003e\u003ccode\u003ee2c046f\u003c/code\u003e\u003c/a\u003e Added custom ThreadFactory to name threads in LocalUIController\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/7f3165a0f04a222579f46dec49d02242e4bb1b0d\"\u003e\u003ccode\u003e7f3165a\u003c/code\u003e\u003c/a\u003e Add newly required \u003ccode\u003e--add-exports\u003c/code\u003e arguments to test tasks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/db54b4b046e460eb6e5df5f19c8ae8abfa276455\"\u003e\u003ccode\u003edb54b4b\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eVirtualDeviceParamsBuilder\u003c/code\u003e to support creating new virtual devices.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/b73adc38c8f5aed39e3e08d844145c5fe2e7ad33\"\u003e\u003ccode\u003eb73adc3\u003c/code\u003e\u003c/a\u003e Implement shadow behavior for VirtualDeviceManager#registerVirtualDeviceListener\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/1e05fdeb1c5fe630b070dad13553806b58650149\"\u003e\u003ccode\u003e1e05fde\u003c/code\u003e\u003c/a\u003e Create shadow for VirtualDeviceManager$VirtualDevice#createVirtualCamera\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/d160747766edebd7b36e61d37f930fd253e7f429\"\u003e\u003ccode\u003ed160747\u003c/code\u003e\u003c/a\u003e Future proof ShadowFingerprintManagerTest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robolectric/robolectric/commit/d7a0438407c7eb82488b4474e51128d44a493eda\"\u003e\u003ccode\u003ed7a0438\u003c/code\u003e\u003c/a\u003e Add maxSdk for ShadowFingerprintManager.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/robolectric/robolectric/compare/robolectric-4.14.1...robolectric-4.16.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.github.takahirom.roborazzi:roborazzi` from 1.32.0 to 1.65.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/takahirom/roborazzi/releases\"\u003eio.github.takahirom.roborazzi:roborazzi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.65.0\u003c/h2\u003e\n\u003ch2\u003eNew experimental feature - Separate output directories per variant/target\u003c/h2\u003e\n\u003cp\u003eYou can now opt in to giving each Roborazzi task its own output directory:\u003c/p\u003e\n\u003cpre lang=\"kotlin\"\u003e\u003ccode\u003eroborazzi {\r\n  @OptIn(ExperimentalRoborazziApi::class)\r\n  separateOutputDirs.set(true)\r\n}\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eWhen enabled, each Roborazzi task gets its own output and intermediate subdirectory (e.g. \u003ccode\u003ebuild/outputs/roborazzi/debug/\u003c/code\u003e, \u003ccode\u003ebuild/outputs/roborazzi/desktop/\u003c/code\u003e) instead of sharing a single directory across every variant/target. It defaults to \u003ccode\u003efalse\u003c/code\u003e, so existing behavior is unchanged.\u003c/p\u003e\n\u003cp\u003eWhy: When multiple Roborazzi test tasks run in a single Gradle invocation (e.g. \u003ccode\u003echeck\u003c/code\u003e, KMP's \u003ccode\u003eallTests\u003c/code\u003e), they race over the shared output directory: one task's finalizer copy can delete files while another task fingerprints them as input. On Gradle 9 this hard-fails with \u003ccode\u003eCannot access input property 'roborazziImageInput'\u003c/code\u003e (\u003ccode\u003eNoSuchFileException\u003c/code\u003e). Separating the directories removes the race at the root.\u003c/p\u003e\n\u003cp\u003eNote: If you enable this option, your golden images move to per-task subdirectories, so you'll need to re-record them (or move the existing files).\u003c/p\u003e\n\u003cp\u003eThank you, \u003ca href=\"https://github.com/boiler23\"\u003e\u003ccode\u003e@​boiler23\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/F43nd1r\"\u003e\u003ccode\u003e@​F43nd1r\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/vladcudoidem\"\u003e\u003ccode\u003e@​vladcudoidem\u003c/code\u003e\u003c/a\u003e for reporting these issues.\u003c/p\u003e\n\u003ch2\u003eMaintenance - Binary compatibility validation\u003c/h2\u003e\n\u003cp\u003eRoborazzi now uses the \u003ca href=\"https://github.com/Kotlin/binary-compatibility-validator\"\u003ekotlinx binary-compatibility-validator\u003c/a\u003e in CI, so any unintended change to the published JVM API surface fails CI instead of slipping into a release. This has no effect on your project, but it makes upcoming refactoring for iOS/KMP support safer.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental separateOutputDirs option to Roborazzi Gradle plugin by \u003ca href=\"https://github.com/takahirom\"\u003e\u003ccode\u003e@​takahirom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/takahirom/roborazzi/pull/851\"\u003etakahirom/roborazzi#851\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd binary compatibility validator with initial API dumps by \u003ca href=\"https://github.com/takahirom\"\u003e\u003ccode\u003e@​takahirom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/takahirom/roborazzi/pull/852\"\u003etakahirom/roborazzi#852\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/takahirom/roborazzi/compare/1.64.0...1.65.0\"\u003ehttps://github.com/takahirom/roborazzi/compare/1.64.0...1.65.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.64.0\u003c/h2\u003e\n\u003ch2\u003eNew feature - Filtering previews by annotation\u003c/h2\u003e\n\u003cp\u003eYou can now control which Compose Previews are captured with \u003ccode\u003eannotationFilter\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eTo use the built-in \u003ccode\u003e@RoboPreviewExclude\u003c/code\u003e / \u003ccode\u003e@RoboPreviewInclude\u003c/code\u003e annotations, add the \u003ccode\u003eroborazzi-annotations\u003c/code\u003e dependency:\u003c/p\u003e\n\u003cpre lang=\"kotlin\"\u003e\u003ccode\u003eimplementation(\u0026quot;io.github.takahirom.roborazzi:roborazzi-annotations:[version]\u0026quot;)\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eBy default, previews annotated with \u003ccode\u003e@RoboPreviewExclude\u003c/code\u003e are skipped and everything else is captured:\u003c/p\u003e\n\u003cpre lang=\"kotlin\"\u003e\u003ccode\u003e@RoboPreviewExclude\r\n@Preview\r\n@Composable\r\nfun WorkInProgressPreview() { /* not captured */ }\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/takahirom/roborazzi/commit/4241b35346ae4c447ac1ba5167e12568473d5647\"\u003e\u003ccode\u003e4241b35\u003c/code\u003e\u003c/a\u003e 1.65.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/takahirom/roborazzi/commit/1fa7858cf171c13792ba7b4a58b73156e2d0cba6\"\u003e\u003ccode\u003e1fa7858\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/takahirom/roborazzi/issues/852\"\u003e#852\u003c/a\u003e from takahirom/tm/add-binary-compatibility-validator\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/takahirom/roborazzi/commit/9474b51f39dc6127263e100c8d194a0337fff263\"\u003e\u003ccode\u003e9474b51\u003c/code\u003e\u003c/a\u003e Skip BCV application in integration-test composite builds\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/takahirom/roborazzi/commit/638acd2bfb4230915a90df0f6e28923bc14d4071\"\u003e\u003ccode\u003e638acd2\u003c/code\u003e\u003c/a\u003e Run apiCheck in CI test workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/takahirom/roborazzi/commit/1ff716151c4c2b91052351043cf50f5547bd1970\"\u003e\u003ccode\u003e1ff7161\u003c/code\u003e\u003c/a\u003e Add binary compatibility validator with initial API dumps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/takahirom/roborazzi/commit/db6552088c2f054cec348fd795582f82cacb2b34\"\u003e\u003ccode\u003edb65520\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/takahirom/roborazzi/issues/851\"\u003e#851\u003c/a\u003e from takahirom/tm/separate-output-dirs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/takahirom/roborazzi/commit/01e926bef14464d5a8ae3569cab12699f1a891a8\"\u003e\u003ccode\u003e01e926b\u003c/code\u003e\u003c/a\u003e Add experimental separateOutputDirs option to Roborazzi Gradle plugin\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/takahirom/roborazzi/commit/6cb9dbd0a0fc4ad8d55049d0f0c45d1fb293f0ac\"\u003e\u003ccode\u003e6cb9dbd\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/takahirom/roborazzi/issues/843\"\u003e#843\u003c/a\u003e from takahirom/tm/fix-stacked-dialog-z-order\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/takahirom/roborazzi/commit/916ccfdd1087878f689172f7b6e660054cb6bb08\"\u003e\u003ccode\u003e916ccfd\u003c/code\u003e\u003c/a\u003e Update VERSION_NAME to 1.64.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/takahirom/roborazzi/commit/52c7aa240ea702de8c2f1f6c167464b33920d4d2\"\u003e\u003ccode\u003e52c7aa2\u003c/code\u003e\u003c/a\u003e Fix z-order of same-type windows in captureScreenRoboImage\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/takahirom/roborazzi/compare/1.32.0...1.65.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.github.takahirom.roborazzi:roborazzi-compose` from 1.32.0 to 1.65.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/takahirom/roborazzi/releases\"\u003eio.github.takahirom.roborazzi:roborazzi-compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.65.0\u003c/h2\u003e\n\u003ch2\u003eNew experimental feature - Separate output directories per variant/target\u003c/h2\u003e\n\u003cp\u003eYou can now opt in to giving each Roborazzi task its own output directory:\u003c/p\u003e\n\u003cpre lang=\"kotlin\"\u003e\u003ccode\u003eroborazzi {\r\n  @OptIn(ExperimentalRoborazziApi::class)\r\n  separateOutputDirs.set(true)\r\n}\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eWhen enabled, each Roborazzi task gets its own output an...\n\n_Description has been truncated_","html_url":"https://github.com/CDRaab01/Spotter/pull/56","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/CDRaab01%2FSpotter/issues/56","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/56/packages"}},{"old_version":"3.6.1","new_version":"3.7.0","update_type":"minor","path":null,"pr_created_at":"2026-05-31T01:06:09.000Z","version_change":"3.6.1 → 3.7.0","issue":{"uuid":"4556193355","node_id":"PR_kwDOSsoXFc7hBp0I","number":6,"state":"closed","title":"chore(deps): bump the androidx group with 22 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-05-31T01:13:02.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-31T01:06:09.000Z","updated_at":"2026-05-31T01:13:04.000Z","time_to_close":413,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"androidx","update_count":22,"packages":[{"name":"androidx.core:core-ktx","old_version":"1.15.0","new_version":"1.18.0"},{"name":"androidx.lifecycle:lifecycle-runtime-ktx","old_version":"2.8.7","new_version":"2.10.0"},{"name":"androidx.lifecycle:lifecycle-viewmodel-compose","old_version":"2.8.7","new_version":"2.10.0"},{"name":"androidx.lifecycle:lifecycle-runtime-compose","old_version":"2.8.7","new_version":"2.10.0"},{"name":"androidx.activity:activity-compose","old_version":"1.9.3","new_version":"1.13.0"},{"name":"androidx.compose:compose-bom","old_version":"2024.12.01","new_version":"2026.05.01"},{"name":"androidx.tv:tv-material","old_version":"1.0.0","new_version":"1.1.0"},{"name":"androidx.navigation:navigation-compose","old_version":"2.8.5","new_version":"2.9.8"},{"name":"androidx.hilt:hilt-navigation-compose","old_version":"1.2.0","new_version":"1.3.0"},{"name":"androidx.room:room-runtime","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-ktx","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-paging","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-compiler","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.paging:paging-runtime","old_version":"3.3.5","new_version":"3.5.0"},{"name":"androidx.paging:paging-compose","old_version":"3.3.5","new_version":"3.5.0"},{"name":"androidx.security:security-crypto","old_version":"1.1.0-alpha06","new_version":"1.1.0"},{"name":"androidx.media3:media3-exoplayer","old_version":"1.5.1","new_version":"1.10.1","repository_url":"https://github.com/androidx/media"},{"name":"androidx.media3:media3-exoplayer-hls","old_version":"1.5.1","new_version":"1.10.1","repository_url":"https://github.com/androidx/media"},{"name":"androidx.media3:media3-ui","old_version":"1.5.1","new_version":"1.10.1","repository_url":"https://github.com/androidx/media"},{"name":"androidx.media3:media3-session","old_version":"1.5.1","new_version":"1.10.1","repository_url":"https://github.com/androidx/media"},{"name":"androidx.test.ext:junit","old_version":"1.2.1","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.6.1","new_version":"3.7.0"}],"path":null,"ecosystem":"maven"},"body":"Bumps the androidx group with 22 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| androidx.core:core-ktx | `1.15.0` | `1.18.0` |\n| androidx.lifecycle:lifecycle-runtime-ktx | `2.8.7` | `2.10.0` |\n| androidx.lifecycle:lifecycle-viewmodel-compose | `2.8.7` | `2.10.0` |\n| androidx.lifecycle:lifecycle-runtime-compose | `2.8.7` | `2.10.0` |\n| androidx.activity:activity-compose | `1.9.3` | `1.13.0` |\n| androidx.compose:compose-bom | `2024.12.01` | `2026.05.01` |\n| androidx.tv:tv-material | `1.0.0` | `1.1.0` |\n| androidx.navigation:navigation-compose | `2.8.5` | `2.9.8` |\n| androidx.hilt:hilt-navigation-compose | `1.2.0` | `1.3.0` |\n| androidx.room:room-runtime | `2.6.1` | `2.8.4` |\n| androidx.room:room-ktx | `2.6.1` | `2.8.4` |\n| androidx.room:room-paging | `2.6.1` | `2.8.4` |\n| androidx.room:room-compiler | `2.6.1` | `2.8.4` |\n| androidx.paging:paging-runtime | `3.3.5` | `3.5.0` |\n| androidx.paging:paging-compose | `3.3.5` | `3.5.0` |\n| androidx.security:security-crypto | `1.1.0-alpha06` | `1.1.0` |\n| [androidx.media3:media3-exoplayer](https://github.com/androidx/media) | `1.5.1` | `1.10.1` |\n| [androidx.media3:media3-exoplayer-hls](https://github.com/androidx/media) | `1.5.1` | `1.10.1` |\n| [androidx.media3:media3-ui](https://github.com/androidx/media) | `1.5.1` | `1.10.1` |\n| [androidx.media3:media3-session](https://github.com/androidx/media) | `1.5.1` | `1.10.1` |\n| androidx.test.ext:junit | `1.2.1` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.6.1` | `3.7.0` |\n\nUpdates `androidx.core:core-ktx` from 1.15.0 to 1.18.0\n\nUpdates `androidx.lifecycle:lifecycle-runtime-ktx` from 2.8.7 to 2.10.0\n\nUpdates `androidx.lifecycle:lifecycle-viewmodel-compose` from 2.8.7 to 2.10.0\n\nUpdates `androidx.lifecycle:lifecycle-runtime-compose` from 2.8.7 to 2.10.0\n\nUpdates `androidx.lifecycle:lifecycle-viewmodel-compose` from 2.8.7 to 2.10.0\n\nUpdates `androidx.lifecycle:lifecycle-runtime-compose` from 2.8.7 to 2.10.0\n\nUpdates `androidx.activity:activity-compose` from 1.9.3 to 1.13.0\n\nUpdates `androidx.compose:compose-bom` from 2024.12.01 to 2026.05.01\n\nUpdates `androidx.tv:tv-material` from 1.0.0 to 1.1.0\n\nUpdates `androidx.navigation:navigation-compose` from 2.8.5 to 2.9.8\n\nUpdates `androidx.hilt:hilt-navigation-compose` from 1.2.0 to 1.3.0\n\nUpdates `androidx.room:room-runtime` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-paging` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-paging` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `androidx.paging:paging-runtime` from 3.3.5 to 3.5.0\n\nUpdates `androidx.paging:paging-compose` from 3.3.5 to 3.5.0\n\nUpdates `androidx.security:security-crypto` from 1.1.0-alpha06 to 1.1.0\n\nUpdates `androidx.media3:media3-exoplayer` from 1.5.1 to 1.10.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/releases\"\u003eandroidx.media3:media3-exoplayer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.10.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eonAudioSessionIdChanged\u003c/code\u003e in \u003ccode\u003eSimpleBasePlayer\u003c/code\u003e and \u003ccode\u003eForwardingSimpleBasePlayer\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix race condition related to audio session id generation that could lead to an \u003ccode\u003eIllegalStateException\u003c/code\u003e with tunneling mode (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3099\"\u003e#3099\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix possible app crashes when recovering from decoder errors with renderer prewarming.\u003c/li\u003e\n\u003cli\u003eFix issue where video artifacts were caused by supplying initialization data when using an AV1-based Dolby Vision codec (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3153\"\u003e#3153\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eAdjust track selection logic in \u003ccode\u003eVideoTrackInfo\u003c/code\u003e to resolve fallback MIME types and move HDR and codec score preferences to quality preferences (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3135\"\u003e#3135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP3: Ignore Xing data length if it is longer than the known stream length (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3117\"\u003e#3117\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e in \u003ccode\u003eMp4Extractor\u003c/code\u003e when \u003ccode\u003eFLAG_OMIT_TRACK_SAMPLE_TABLE\u003c/code\u003e is set and the track lacks a sync sample (\u003ccode\u003estss\u003c/code\u003e) box.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAudio:\n\u003cul\u003e\n\u003cli\u003eFix bug where audio events may be misrouted if multiple audio renderers are added to the player.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eVideo:\n\u003cul\u003e\n\u003cli\u003eAdjust logic for codec reuse at frame rate changes on API below 30 to avoid codec resets where they are not beneficial (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3120\"\u003e#3120\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDisable forced synchronization workaround in \u003ccode\u003equeueSecureInputBuffer\u003c/code\u003e for API 31+. The workaround was an artificial bottleneck that forced decryption to run serially which prevented garbled video due to a framework issue existing prior to API 31.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImage:\n\u003cul\u003e\n\u003cli\u003eFix issue in scrubbing mode where image updates would only take effect when the user \u0026quot;stops scrubbing\u0026quot; (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2815\"\u003e#2815\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSession:\n\u003cul\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eForegroundServiceStartNotAllowedException\u003c/code\u003e wasn't propagated across thread boundaries in case the application thread is not the main thread (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2499\"\u003e#2499\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eCOMMAND_SEEK_TO_MEDIA_ITEM\u003c/code\u003e is not available in a \u003ccode\u003eMediaController\u003c/code\u003e when connecting to a platform-only session that supports seeking to other items but no playlist modifications.\u003c/li\u003e\n\u003cli\u003eFix issue where \u003ccode\u003eMediaController\u003c/code\u003e can't set media items on platform media sessions that don't allow \u003ccode\u003ePREPARE_FROM\u003c/code\u003e actions.\u003c/li\u003e\n\u003cli\u003eFix bug where own process wasn't marked with \u003ccode\u003eController.isTrusted()\u003c/code\u003e on API 27 or before when connecting via platform controllers.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eHLS extension:\n\u003cul\u003e\n\u003cli\u003eFix a bug where an \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e is thrown during stream fallback if the track selection is a subset of the available tracks (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3161\"\u003e#3161\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix an issue where the initialization segment was not carried over across media playlist updates if the \u003ccode\u003e#EXT-X-MAP\u003c/code\u003e tag was not repeated in subsequent updates (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3105\"\u003e#3105\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eDASH extension:\n\u003cul\u003e\n\u003cli\u003eFix crash in \u003ccode\u003eSampleQueue\u003c/code\u003e when seeking into a chunk that is currently being canceled.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003ePromote \u003ccode\u003ePlayer.mute()\u003c/code\u003e and \u003ccode\u003ePlayer.unmute()\u003c/code\u003e from \u003ccode\u003eUnstableApi\u003c/code\u003e to stable.\u003c/li\u003e\n\u003cli\u003ePromote \u003ccode\u003eFormat.pcmEncoding\u003c/code\u003e and \u003ccode\u003eC.PcmEncoding\u003c/code\u003e from \u003ccode\u003eUnstableApi\u003c/code\u003e to stable.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.primaryTrackGroupId\u003c/code\u003e to identify the primary group of embedded \u003ccode\u003eFormat\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/androidx/media/issues/294\"\u003e#294\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eAdd clipping capabilities to \u003ccode\u003eAdsMediaSource\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd support for dynamic scheduling in \u003ccode\u003eMediaCodecVideoRenderer\u003c/code\u003e to better align scheduling work and CPU wake-cycles to when video frames can be processed. You can enable this using \u003ccode\u003eexperimentalSetEnableMediaCodecVideoRendererDurationToProgressUs()\u003c/code\u003e in the \u003ccode\u003eDefaultRenderersFactory\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAllow setting a custom \u003ccode\u003eDataSource.Factory\u003c/code\u003e in \u003ccode\u003eDefaultPreloadManager.Builder\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eExoPlayer\u003c/code\u003e to be mocked without Robolectric by moving some default constants to \u003ccode\u003eExoPlayer.Builder\u003c/code\u003e. Mocking this complex interface is not generally encouraged - only when the usage is minimal/simple/incidental (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2985\"\u003e#2985\u003c/a\u003e).\n\u003cul\u003e\n\u003cli\u003eThis required moving \u003ccode\u003eDEFAULT_STUCK_PLAYING_DETECTION_TIMEOUT_MS\u003c/code\u003e from \u003ccode\u003eExoPlayer\u003c/code\u003e to \u003ccode\u003eExoPlayer.Builder\u003c/code\u003e (without deprecation).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix a bug where \u003ccode\u003eProgressiveMediaSource\u003c/code\u003e propagates out-of-date timeline info to the player, and the queued periods unexpectedly get removed (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3016\"\u003e#3016\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix issue where ExoPlayer would not request delayed audio focus when playback is requested during phone calls.\u003c/li\u003e\n\u003cli\u003eFix bug where transitions from on-demand to live content may cause re-buffers at the end of the on-demand content (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3052\"\u003e#3052\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Dolby Vision Profile 10 (\u003ca href=\"https://redirect.github.com/androidx/media/pull/2830\"\u003e#2830\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where an uninitialized pre roll ad produced an \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3125\"\u003e#3125\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eCompositionPlayer:\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eEditedMediaItem.removeVideo\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTransformer:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eEditedMediaItem.Builder.setFrameRate()\u003c/code\u003e can now set a maximum output frame rate for video, which is particularly helpful when increasing media speed with \u003ccode\u003esetSpeed()\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/blob/release/RELEASENOTES.md\"\u003eandroidx.media3:media3-exoplayer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e1.10.1 (2026-05-12)\u003c/h3\u003e\n\u003cp\u003eThis release includes the following changes since \u003ca href=\"https://github.com/androidx/media/blob/release/#1100-2026-03-25\"\u003e1.10.0\u003c/a\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eonAudioSessionIdChanged\u003c/code\u003e in \u003ccode\u003eSimpleBasePlayer\u003c/code\u003e and\n\u003ccode\u003eForwardingSimpleBasePlayer\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix race condition related to audio session id generation that could\nlead to an \u003ccode\u003eIllegalStateException\u003c/code\u003e with tunneling mode.\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/3099\"\u003e#3099\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix possible app crashes when recovering from decoder errors with\nrenderer prewarming.\u003c/li\u003e\n\u003cli\u003eFix issue where video artifacts were caused by supplying initialization\ndata when using an AV1-based Dolby Vision codec\n(\u003ca href=\"https://redirect.github.com/androidx/media/pull/3153\"\u003e#3153\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eAdjust track selection logic in \u003ccode\u003eVideoTrackInfo\u003c/code\u003e to resolve fallback\nMIME types and move HDR and codec score preferences to quality\npreferences (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3135\"\u003e#3135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP3: Ignore Xing data length if it is longer than the known stream\nlength (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3117\"\u003e#3117\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e in \u003ccode\u003eMp4Extractor\u003c/code\u003e when\n\u003ccode\u003eFLAG_OMIT_TRACK_SAMPLE_TABLE\u003c/code\u003e is set and the track lacks a sync sample\n(\u003ccode\u003estss\u003c/code\u003e) box.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAudio:\n\u003cul\u003e\n\u003cli\u003eFix bug where audio events may be misrouted if multiple audio renderers\nare added to the player.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eVideo:\n\u003cul\u003e\n\u003cli\u003eAdjust logic for codec reuse at frame rate changes on API below 30 to\navoid codec resets where they are not beneficial\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/3120\"\u003e#3120\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDisable forced synchronization workaround in \u003ccode\u003equeueSecureInputBuffer\u003c/code\u003e\nfor API 31+. The workaround was an artificial bottleneck that forced\ndecryption to run serially which prevented garbled video due to a\nframework issue existing prior to API 31.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImage:\n\u003cul\u003e\n\u003cli\u003eFix issue in scrubbing mode where image updates would only take effect\nwhen the user \u0026quot;stops scrubbing\u0026quot;\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/2815\"\u003e#2815\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSession:\n\u003cul\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eForegroundServiceStartNotAllowedException\u003c/code\u003e wasn't\npropagated across thread boundaries in case the application thread is\nnot the main thread\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/2499\"\u003e#2499\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eCOMMAND_SEEK_TO_MEDIA_ITEM\u003c/code\u003e is not available in a\n\u003ccode\u003eMediaController\u003c/code\u003e when connecting to a platform-only session that\nsupports seeking to other items but no playlist modifications.\u003c/li\u003e\n\u003cli\u003eFix issue where \u003ccode\u003eMediaController\u003c/code\u003e can't set media items on platform\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/5fb306449733dd71595700c1227ad6087578c559\"\u003e\u003ccode\u003e5fb3064\u003c/code\u003e\u003c/a\u003e Bump version to 1.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/95d6a273bd675ef168525ac3bb54aa6a3f1c76ce\"\u003e\u003ccode\u003e95d6a27\u003c/code\u003e\u003c/a\u003e Update release notes for 1.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/a2bc30474e3313e8bc690428d9c8615b99ffc25d\"\u003e\u003ccode\u003ea2bc304\u003c/code\u003e\u003c/a\u003e Fix Mp4Extractor OutOfBounds exception when sample tables are omitted\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/2142ab0b73bfe32edac50b0b6840ff7176297fdc\"\u003e\u003ccode\u003e2142ab0\u003c/code\u003e\u003c/a\u003e Fix scrubbing mode's intermittent seek prevention for image rendering\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/b323c9d818da8e36d8a6308b27bcfaeb079fa70f\"\u003e\u003ccode\u003eb323c9d\u003c/code\u003e\u003c/a\u003e Add specific error codes for failure to render errors.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/a8ef4090a9f018eba9455eb70d496b3884e50443\"\u003e\u003ccode\u003ea8ef409\u003c/code\u003e\u003c/a\u003e Fix redirection of stderr in bazelisk check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/14f8248c55f8b17bc63a04b7a4363a8a150bf472\"\u003e\u003ccode\u003e14f8248\u003c/code\u003e\u003c/a\u003e Improve memory management in av1 decoder\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/4a584060a8925ccd512dc50f79c765f58413d558\"\u003e\u003ccode\u003e4a58406\u003c/code\u003e\u003c/a\u003e Fix flaky tests in MediaSessionCompatCallbackWithMediaControllerTest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/de3e9e7d586876dce8b66ef10eb5e0910afd5d54\"\u003e\u003ccode\u003ede3e9e7\u003c/code\u003e\u003c/a\u003e Fix crash in SampleQueue when seeking into canceled chunks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/910c4027ff0137fc5c827dfab465aa1ece37487c\"\u003e\u003ccode\u003e910c402\u003c/code\u003e\u003c/a\u003e Fix video track selection for Dolby Vision fallback tracks\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/androidx/media/compare/1.5.1...1.10.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.media3:media3-exoplayer-hls` from 1.5.1 to 1.10.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/releases\"\u003eandroidx.media3:media3-exoplayer-hls's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.10.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eonAudioSessionIdChanged\u003c/code\u003e in \u003ccode\u003eSimpleBasePlayer\u003c/code\u003e and \u003ccode\u003eForwardingSimpleBasePlayer\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix race condition related to audio session id generation that could lead to an \u003ccode\u003eIllegalStateException\u003c/code\u003e with tunneling mode (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3099\"\u003e#3099\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix possible app crashes when recovering from decoder errors with renderer prewarming.\u003c/li\u003e\n\u003cli\u003eFix issue where video artifacts were caused by supplying initialization data when using an AV1-based Dolby Vision codec (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3153\"\u003e#3153\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eAdjust track selection logic in \u003ccode\u003eVideoTrackInfo\u003c/code\u003e to resolve fallback MIME types and move HDR and codec score preferences to quality preferences (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3135\"\u003e#3135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP3: Ignore Xing data length if it is longer than the known stream length (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3117\"\u003e#3117\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e in \u003ccode\u003eMp4Extractor\u003c/code\u003e when \u003ccode\u003eFLAG_OMIT_TRACK_SAMPLE_TABLE\u003c/code\u003e is set and the track lacks a sync sample (\u003ccode\u003estss\u003c/code\u003e) box.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAudio:\n\u003cul\u003e\n\u003cli\u003eFix bug where audio events may be misrouted if multiple audio renderers are added to the player.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eVideo:\n\u003cul\u003e\n\u003cli\u003eAdjust logic for codec reuse at frame rate changes on API below 30 to avoid codec resets where they are not beneficial (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3120\"\u003e#3120\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDisable forced synchronization workaround in \u003ccode\u003equeueSecureInputBuffer\u003c/code\u003e for API 31+. The workaround was an artificial bottleneck that forced decryption to run serially which prevented garbled video due to a framework issue existing prior to API 31.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImage:\n\u003cul\u003e\n\u003cli\u003eFix issue in scrubbing mode where image updates would only take effect when the user \u0026quot;stops scrubbing\u0026quot; (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2815\"\u003e#2815\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSession:\n\u003cul\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eForegroundServiceStartNotAllowedException\u003c/code\u003e wasn't propagated across thread boundaries in case the application thread is not the main thread (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2499\"\u003e#2499\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eCOMMAND_SEEK_TO_MEDIA_ITEM\u003c/code\u003e is not available in a \u003ccode\u003eMediaController\u003c/code\u003e when connecting to a platform-only session that supports seeking to other items but no playlist modifications.\u003c/li\u003e\n\u003cli\u003eFix issue where \u003ccode\u003eMediaController\u003c/code\u003e can't set media items on platform media sessions that don't allow \u003ccode\u003ePREPARE_FROM\u003c/code\u003e actions.\u003c/li\u003e\n\u003cli\u003eFix bug where own process wasn't marked with \u003ccode\u003eController.isTrusted()\u003c/code\u003e on API 27 or before when connecting via platform controllers.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eHLS extension:\n\u003cul\u003e\n\u003cli\u003eFix a bug where an \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e is thrown during stream fallback if the track selection is a subset of the available tracks (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3161\"\u003e#3161\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix an issue where the initialization segment was not carried over across media playlist updates if the \u003ccode\u003e#EXT-X-MAP\u003c/code\u003e tag was not repeated in subsequent updates (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3105\"\u003e#3105\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eDASH extension:\n\u003cul\u003e\n\u003cli\u003eFix crash in \u003ccode\u003eSampleQueue\u003c/code\u003e when seeking into a chunk that is currently being canceled.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003ePromote \u003ccode\u003ePlayer.mute()\u003c/code\u003e and \u003ccode\u003ePlayer.unmute()\u003c/code\u003e from \u003ccode\u003eUnstableApi\u003c/code\u003e to stable.\u003c/li\u003e\n\u003cli\u003ePromote \u003ccode\u003eFormat.pcmEncoding\u003c/code\u003e and \u003ccode\u003eC.PcmEncoding\u003c/code\u003e from \u003ccode\u003eUnstableApi\u003c/code\u003e to stable.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.primaryTrackGroupId\u003c/code\u003e to identify the primary group of embedded \u003ccode\u003eFormat\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/androidx/media/issues/294\"\u003e#294\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eAdd clipping capabilities to \u003ccode\u003eAdsMediaSource\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd support for dynamic scheduling in \u003ccode\u003eMediaCodecVideoRenderer\u003c/code\u003e to better align scheduling work and CPU wake-cycles to when video frames can be processed. You can enable this using \u003ccode\u003eexperimentalSetEnableMediaCodecVideoRendererDurationToProgressUs()\u003c/code\u003e in the \u003ccode\u003eDefaultRenderersFactory\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAllow setting a custom \u003ccode\u003eDataSource.Factory\u003c/code\u003e in \u003ccode\u003eDefaultPreloadManager.Builder\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eExoPlayer\u003c/code\u003e to be mocked without Robolectric by moving some default constants to \u003ccode\u003eExoPlayer.Builder\u003c/code\u003e. Mocking this complex interface is not generally encouraged - only when the usage is minimal/simple/incidental (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2985\"\u003e#2985\u003c/a\u003e).\n\u003cul\u003e\n\u003cli\u003eThis required moving \u003ccode\u003eDEFAULT_STUCK_PLAYING_DETECTION_TIMEOUT_MS\u003c/code\u003e from \u003ccode\u003eExoPlayer\u003c/code\u003e to \u003ccode\u003eExoPlayer.Builder\u003c/code\u003e (without deprecation).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix a bug where \u003ccode\u003eProgressiveMediaSource\u003c/code\u003e propagates out-of-date timeline info to the player, and the queued periods unexpectedly get removed (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3016\"\u003e#3016\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix issue where ExoPlayer would not request delayed audio focus when playback is requested during phone calls.\u003c/li\u003e\n\u003cli\u003eFix bug where transitions from on-demand to live content may cause re-buffers at the end of the on-demand content (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3052\"\u003e#3052\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Dolby Vision Profile 10 (\u003ca href=\"https://redirect.github.com/androidx/media/pull/2830\"\u003e#2830\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where an uninitialized pre roll ad produced an \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3125\"\u003e#3125\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eCompositionPlayer:\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eEditedMediaItem.removeVideo\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTransformer:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eEditedMediaItem.Builder.setFrameRate()\u003c/code\u003e can now set a maximum output frame rate for video, which is particularly helpful when increasing media speed with \u003ccode\u003esetSpeed()\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/blob/release/RELEASENOTES.md\"\u003eandroidx.media3:media3-exoplayer-hls's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e1.10.1 (2026-05-12)\u003c/h3\u003e\n\u003cp\u003eThis release includes the following changes since \u003ca href=\"https://github.com/androidx/media/blob/release/#1100-2026-03-25\"\u003e1.10.0\u003c/a\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eonAudioSessionIdChanged\u003c/code\u003e in \u003ccode\u003eSimpleBasePlayer\u003c/code\u003e and\n\u003ccode\u003eForwardingSimpleBasePlayer\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix race condition related to audio session id generation that could\nlead to an \u003ccode\u003eIllegalStateException\u003c/code\u003e with tunneling mode.\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/3099\"\u003e#3099\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix possible app crashes when recovering from decoder errors with\nrenderer prewarming.\u003c/li\u003e\n\u003cli\u003eFix issue where video artifacts were caused by supplying initialization\ndata when using an AV1-based Dolby Vision codec\n(\u003ca href=\"https://redirect.github.com/androidx/media/pull/3153\"\u003e#3153\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eAdjust track selection logic in \u003ccode\u003eVideoTrackInfo\u003c/code\u003e to resolve fallback\nMIME types and move HDR and codec score preferences to quality\npreferences (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3135\"\u003e#3135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP3: Ignore Xing data length if it is longer than the known stream\nlength (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3117\"\u003e#3117\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e in \u003ccode\u003eMp4Extractor\u003c/code\u003e when\n\u003ccode\u003eFLAG_OMIT_TRACK_SAMPLE_TABLE\u003c/code\u003e is set and the track lacks a sync sample\n(\u003ccode\u003estss\u003c/code\u003e) box.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAudio:\n\u003cul\u003e\n\u003cli\u003eFix bug where audio events may be misrouted if multiple audio renderers\nare added to the player.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eVideo:\n\u003cul\u003e\n\u003cli\u003eAdjust logic for codec reuse at frame rate changes on API below 30 to\navoid codec resets where they are not beneficial\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/3120\"\u003e#3120\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDisable forced synchronization workaround in \u003ccode\u003equeueSecureInputBuffer\u003c/code\u003e\nfor API 31+. The workaround was an artificial bottleneck that forced\ndecryption to run serially which prevented garbled video due to a\nframework issue existing prior to API 31.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImage:\n\u003cul\u003e\n\u003cli\u003eFix issue in scrubbing mode where image updates would only take effect\nwhen the user \u0026quot;stops scrubbing\u0026quot;\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/2815\"\u003e#2815\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSession:\n\u003cul\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eForegroundServiceStartNotAllowedException\u003c/code\u003e wasn't\npropagated across thread boundaries in case the application thread is\nnot the main thread\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/2499\"\u003e#2499\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eCOMMAND_SEEK_TO_MEDIA_ITEM\u003c/code\u003e is not available in a\n\u003ccode\u003eMediaController\u003c/code\u003e when connecting to a platform-only session that\nsupports seeking to other items but no playlist modifications.\u003c/li\u003e\n\u003cli\u003eFix issue where \u003ccode\u003eMediaController\u003c/code\u003e can't set media items on platform\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/5fb306449733dd71595700c1227ad6087578c559\"\u003e\u003ccode\u003e5fb3064\u003c/code\u003e\u003c/a\u003e Bump version to 1.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/95d6a273bd675ef168525ac3bb54aa6a3f1c76ce\"\u003e\u003ccode\u003e95d6a27\u003c/code\u003e\u003c/a\u003e Update release notes for 1.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/a2bc30474e3313e8bc690428d9c8615b99ffc25d\"\u003e\u003ccode\u003ea2bc304\u003c/code\u003e\u003c/a\u003e Fix Mp4Extractor OutOfBounds exception when sample tables are omitted\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/2142ab0b73bfe32edac50b0b6840ff7176297fdc\"\u003e\u003ccode\u003e2142ab0\u003c/code\u003e\u003c/a\u003e Fix scrubbing mode's intermittent seek prevention for image rendering\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/b323c9d818da8e36d8a6308b27bcfaeb079fa70f\"\u003e\u003ccode\u003eb323c9d\u003c/code\u003e\u003c/a\u003e Add specific error codes for failure to render errors.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/a8ef4090a9f018eba9455eb70d496b3884e50443\"\u003e\u003ccode\u003ea8ef409\u003c/code\u003e\u003c/a\u003e Fix redirection of stderr in bazelisk check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/14f8248c55f8b17bc63a04b7a4363a8a150bf472\"\u003e\u003ccode\u003e14f8248\u003c/code\u003e\u003c/a\u003e Improve memory management in av1 decoder\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/4a584060a8925ccd512dc50f79c765f58413d558\"\u003e\u003ccode\u003e4a58406\u003c/code\u003e\u003c/a\u003e Fix flaky tests in MediaSessionCompatCallbackWithMediaControllerTest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/de3e9e7d586876dce8b66ef10eb5e0910afd5d54\"\u003e\u003ccode\u003ede3e9e7\u003c/code\u003e\u003c/a\u003e Fix crash in SampleQueue when seeking into canceled chunks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/910c4027ff0137fc5c827dfab465aa1ece37487c\"\u003e\u003ccode\u003e910c402\u003c/code\u003e\u003c/a\u003e Fix video track selection for Dolby Vision fallback tracks\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/androidx/media/compare/1.5.1...1.10.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.media3:media3-ui` from 1.5.1 to 1.10.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/releases\"\u003eandroidx.media3:media3-ui's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.10.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eonAudioSessionIdChanged\u003c/code\u003e in \u003ccode\u003eSimpleBasePlayer\u003c/code\u003e and \u003ccode\u003eForwardingSimpleBasePlayer\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix race condition related to audio session id generation that could lead to an \u003ccode\u003eIllegalStateException\u003c/code\u003e with tunneling mode (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3099\"\u003e#3099\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix possible app crashes when recovering from decoder errors with renderer prewarming.\u003c/li\u003e\n\u003cli\u003eFix issue where video artifacts were caused by supplying initialization data when using an AV1-based Dolby Vision codec (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3153\"\u003e#3153\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eAdjust track selection logic in \u003ccode\u003eVideoTrackInfo\u003c/code\u003e to resolve fallback MIME types and move HDR and codec score preferences to quality preferences (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3135\"\u003e#3135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP3: Ignore Xing data length if it is longer than the known stream length (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3117\"\u003e#3117\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e in \u003ccode\u003eMp4Extractor\u003c/code\u003e when \u003ccode\u003eFLAG_OMIT_TRACK_SAMPLE_TABLE\u003c/code\u003e is set and the track lacks a sync sample (\u003ccode\u003estss\u003c/code\u003e) box.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAudio:\n\u003cul\u003e\n\u003cli\u003eFix bug where audio events may be misrouted if multiple audio renderers are added to the player.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eVideo:\n\u003cul\u003e\n\u003cli\u003eAdjust logic for codec reuse at frame rate changes on API below 30 to avoid codec resets where they are not beneficial (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3120\"\u003e#3120\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDisable forced synchronization workaround in \u003ccode\u003equeueSecureInputBuffer\u003c/code\u003e for API 31+. The workaround was an artificial bottleneck that forced decryption to run serially which prevented garbled video due to a framework issue existing prior to API 31.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImage:\n\u003cul\u003e\n\u003cli\u003eFix issue in scrubbing mode where image updates would only take effect when the user \u0026quot;stops scrubbing\u0026quot; (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2815\"\u003e#2815\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSession:\n\u003cul\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eForegroundServiceStartNotAllowedException\u003c/code\u003e wasn't propagated across thread boundaries in case the application thread is not the main thread (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2499\"\u003e#2499\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eCOMMAND_SEEK_TO_MEDIA_ITEM\u003c/code\u003e is not available in a \u003ccode\u003eMediaController\u003c/code\u003e when connecting to a platform-only session that supports seeking to other items but no playlist modifications.\u003c/li\u003e\n\u003cli\u003eFix issue where \u003ccode\u003eMediaController\u003c/code\u003e can't set media items on platform media sessions that don't allow \u003ccode\u003ePREPARE_FROM\u003c/code\u003e actions.\u003c/li\u003e\n\u003cli\u003eFix bug where own process wasn't marked with \u003ccode\u003eController.isTrusted()\u003c/code\u003e on API 27 or before when connecting via platform controllers.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eHLS extension:\n\u003cul\u003e\n\u003cli\u003eFix a bug where an \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e is thrown during stream fallback if the track selection is a subset of the available tracks (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3161\"\u003e#3161\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix an issue where the initialization segment was not carried over across media playlist updates if the \u003ccode\u003e#EXT-X-MAP\u003c/code\u003e tag was not repeated in subsequent updates (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3105\"\u003e#3105\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eDASH extension:\n\u003cul\u003e\n\u003cli\u003eFix crash in \u003ccode\u003eSampleQueue\u003c/code\u003e when seeking into a chunk that is currently being canceled.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003ePromote \u003ccode\u003ePlayer.mute()\u003c/code\u003e and \u003ccode\u003ePlayer.unmute()\u003c/code\u003e from \u003ccode\u003eUnstableApi\u003c/code\u003e to stable.\u003c/li\u003e\n\u003cli\u003ePromote \u003ccode\u003eFormat.pcmEncoding\u003c/code\u003e and \u003ccode\u003eC.PcmEncoding\u003c/code\u003e from \u003ccode\u003eUnstableApi\u003c/code\u003e to stable.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.primaryTrackGroupId\u003c/code\u003e to identify the primary group of embedded \u003ccode\u003eFormat\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/androidx/media/issues/294\"\u003e#294\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eAdd clipping capabilities to \u003ccode\u003eAdsMediaSource\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd support for dynamic scheduling in \u003ccode\u003eMediaCodecVideoRenderer\u003c/code\u003e to better align scheduling work and CPU wake-cycles to when video frames can be processed. You can enable this using \u003ccode\u003eexperimentalSetEnableMediaCodecVideoRendererDurationToProgressUs()\u003c/code\u003e in the \u003ccode\u003eDefaultRenderersFactory\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAllow setting a custom \u003ccode\u003eDataSource.Factory\u003c/code\u003e in \u003ccode\u003eDefaultPreloadManager.Builder\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eExoPlayer\u003c/code\u003e to be mocked without Robolectric by moving some default constants to \u003ccode\u003eExoPlayer.Builder\u003c/code\u003e. Mocking this complex interface is not generally encouraged - only when the usage is minimal/simple/incidental (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2985\"\u003e#2985\u003c/a\u003e).\n\u003cul\u003e\n\u003cli\u003eThis required moving \u003ccode\u003eDEFAULT_STUCK_PLAYING_DETECTION_TIMEOUT_MS\u003c/code\u003e from \u003ccode\u003eExoPlayer\u003c/code\u003e to \u003ccode\u003eExoPlayer.Builder\u003c/code\u003e (without deprecation).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix a bug where \u003ccode\u003eProgressiveMediaSource\u003c/code\u003e propagates out-of-date timeline info to the player, and the queued periods unexpectedly get removed (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3016\"\u003e#3016\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix issue where ExoPlayer would not request delayed audio focus when playback is requested during phone calls.\u003c/li\u003e\n\u003cli\u003eFix bug where transitions from on-demand to live content may cause re-buffers at the end of the on-demand content (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3052\"\u003e#3052\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Dolby Vision Profile 10 (\u003ca href=\"https://redirect.github.com/androidx/media/pull/2830\"\u003e#2830\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where an uninitialized pre roll ad produced an \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3125\"\u003e#3125\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eCompositionPlayer:\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eEditedMediaItem.removeVideo\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTransformer:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eEditedMediaItem.Builder.setFrameRate()\u003c/code\u003e can now set a maximum output frame rate for video, which is particularly helpful when increasing media speed with \u003ccode\u003esetSpeed()\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/blob/release/RELEASENOTES.md\"\u003eandroidx.media3:media3-ui's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e1.10.1 (2026-05-12)\u003c/h3\u003e\n\u003cp\u003eThis release includes the following changes since \u003ca href=\"https://github.com/androidx/media/blob/release/#1100-2026-03-25\"\u003e1.10.0\u003c/a\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eonAudioSessionIdChanged\u003c/code\u003e in \u003ccode\u003eSimpleBasePlayer\u003c/code\u003e and\n\u003ccode\u003eForwardingSimpleBasePlayer\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix race condition related to audio session id generation that could\nlead to an \u003ccode\u003eIllegalStateException\u003c/code\u003e with tunneling mode.\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/3099\"\u003e#3099\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix possible app crashes when recovering from decoder errors with\nrenderer prewarming.\u003c/li\u003e\n\u003cli\u003eFix issue where video artifacts were caused by supplying initialization\ndata when using an AV1-based Dolby Vision codec\n(\u003ca href=\"https://redirect.github.com/androidx/media/pull/3153\"\u003e#3153\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eAdjust track selection logic in \u003ccode\u003eVideoTrackInfo\u003c/code\u003e to resolve fallback\nMIME types and move HDR and codec score preferences to quality\npreferences (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3135\"\u003e#3135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP3: Ignore Xing data length if it is longer than the known stream\nlength (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3117\"\u003e#3117\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e in \u003ccode\u003eMp4Extractor\u003c/code\u003e when\n\u003ccode\u003eFLAG_OMIT_TRACK_SAMPLE_TABLE\u003c/code\u003e is set and the track lacks a sync sample\n(\u003ccode\u003estss\u003c/code\u003e) box.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAudio:\n\u003cul\u003e\n\u003cli\u003eFix bug where audio events may be misrouted if multiple audio renderers\nare added to the player.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eVideo:\n\u003cul\u003e\n\u003cli\u003eAdjust logic for codec reuse at frame rate changes on API below 30 to\navoid codec resets where they are not beneficial\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/3120\"\u003e#3120\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDisable forced synchronization workaround in \u003ccode\u003equeueSecureInputBuffer\u003c/code\u003e\nfor API 31+. The workaround was an artificial bottleneck that forced\ndecryption to run serially which prevented garbled video due to a\nframework issue existing prior to API 31.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImage:\n\u003cul\u003e\n\u003cli\u003eFix issue in scrubbing mode where image updates would only take effect\nwhen the user \u0026quot;stops scrubbing\u0026quot;\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/2815\"\u003e#2815\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSession:\n\u003cul\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eForegroundServiceStartNotAllowedException\u003c/code\u003e wasn't\npropagated across thread boundaries in case the application thread is\nnot the main thread\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/2499\"\u003e#2499\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eCOMMAND_SEEK_TO_MEDIA_ITEM\u003c/code\u003e is not available in a\n\u003ccode\u003eMediaController\u003c/code\u003e when connecting to a platform-only session that\nsupports seeking to other items but no playlist modifications.\u003c/li\u003e\n\u003cli\u003eFix issue where \u003ccode\u003eMediaController\u003c/code\u003e can't set media items on platform\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/5fb306449733dd71595700c1227ad6087578c559\"\u003e\u003ccode\u003e5fb3064\u003c/code\u003e\u003c/a\u003e Bump version to 1.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/95d6a273bd675ef168525ac3bb54aa6a3f1c76ce\"\u003e\u003ccode\u003e95d6a27\u003c/code\u003e\u003c/a\u003e Update release notes for 1.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/a2bc30474e3313e8bc690428d9c8615b99ffc25d\"\u003e\u003ccode\u003ea2bc304\u003c/code\u003e\u003c/a\u003e Fix Mp4Extractor OutOfBounds exception when sample tables are omitted\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/2142ab0b73bfe32edac50b0b6840ff7176297fdc\"\u003e\u003ccode\u003e2142ab0\u003c/code\u003e\u003c/a\u003e Fix scrubbing mode's intermittent seek prevention for image rendering\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/b323c9d818da8e36d8a6308b27bcfaeb079fa70f\"\u003e\u003ccode\u003eb323c9d\u003c/code\u003e\u003c/a\u003e Add specific error codes for failure to render errors.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/a8ef4090a9f018eba9455eb70d496b3884e50443\"\u003e\u003ccode\u003ea8ef409\u003c/code\u003e\u003c/a\u003e Fix redirection of stderr in bazelisk check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/14f8248c55f8b17bc63a04b7a4363a8a150bf472\"\u003e\u003ccode\u003e14f8248\u003c/code\u003e\u003c/a\u003e Improve memory management in av1 decoder\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/4a584060a8925ccd512dc50f79c765f58413d558\"\u003e\u003ccode\u003e4a58406\u003c/code\u003e\u003c/a\u003e Fix flaky tests in MediaSessionCompatCallbackWithMediaControllerTest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/de3e9e7d586876dce8b66ef10eb5e0910afd5d54\"\u003e\u003ccode\u003ede3e9e7\u003c/code\u003e\u003c/a\u003e Fix crash in SampleQueue when seeking into canceled chunks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/910c4027ff0137fc5c827dfab465aa1ece37487c\"\u003e\u003ccode\u003e910c402\u003c/code\u003e\u003c/a\u003e Fix video track selection for Dolby Vision fallback tracks\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/androidx/media/compare/1.5.1...1.10.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.media3:media3-session` from 1.5.1 to 1.10.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/releases\"\u003eandroidx.media3:media3-session's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.10.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eonAudioSessionIdChanged\u003c/code\u003e in \u003ccode\u003eSimpleBasePlayer\u003c/code\u003e and \u003ccode\u003eForwardingSimpleBasePlayer\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix race condition related to audio session id generation that could lead to an \u003ccode\u003eIllegalStateException\u003c/code\u003e with tunneling mode (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3099\"\u003e#3099\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix possible app crashes when recovering from decoder errors with renderer prewarming.\u003c/li\u003e\n\u003cli\u003eFix issue where video artifacts were caused by supplying initialization data when using an AV1-based Dolby Vision codec (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3153\"\u003e#3153\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eAdjust track selection logic in \u003ccode\u003eVideoTrackInfo\u003c/code\u003e to resolve fallback MIME types and move HDR and codec score preferences to quality preferences (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3135\"\u003e#3135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP3: Ignore Xing data length if it is longer than the known stream length (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3117\"\u003e#3117\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e in \u003ccode\u003eMp4Extractor\u003c/code\u003e when \u003ccode\u003eFLAG_OMIT_TRACK_SAMPLE_TABLE\u003c/code\u003e is set and the track lacks a sync sample (\u003ccode\u003estss\u003c/code\u003e) box.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAudio:\n\u003cul\u003e\n\u003cli\u003eFix bug where audio events may be misrouted if multiple audio renderers are added to the player.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eVideo:\n\u003cul\u003e\n\u003cli\u003eAdjust logic for codec reuse at frame rate changes on API below 30 to avoid codec resets where they are not beneficial (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3120\"\u003e#3120\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDisable forced synchronization workaround in \u003ccode\u003equeueSecureInputBuffer\u003c/code\u003e for API 31+. The workaround was an artificial bottleneck that forced decryption to run serially which prevented garbled video due to a framework issue existing prior to API 31.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImage:\n\u003cul\u003e\n\u003cli\u003eFix issue in scrubbing mode where image updates would only take effect when the user \u0026quot;stops scrubbing\u0026quot; (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2815\"\u003e#2815\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSession:\n\u003cul\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eForegroundServiceStartNotAllowedException\u003c/code\u003e wasn't propagated across thread boundaries in case the application thread is not the main thread (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2499\"\u003e#2499\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eCOMMAND_SEEK_TO_MEDIA_ITEM\u003c/code\u003e is not available in a \u003ccode\u003eMediaController\u003c/code\u003e when connecting to a platform-only session that supports seeking to other items but no playlist modifications.\u003c/li\u003e\n\u003cli\u003eFix issue where \u003ccode\u003eMediaController\u003c/code\u003e can't set media items on platform media sessions that don't allow \u003ccode\u003ePREPARE_FROM\u003c/code\u003e actions.\u003c/li\u003e\n\u003cli\u003eFix bug where own process wasn't marked with \u003ccode\u003eController.isTrusted()\u003c/code\u003e on API 27 or before when connecting via platform controllers.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eHLS extension:\n\u003cul\u003e\n\u003cli\u003eFix a bug where an \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e is thrown during stream fallback if the track selection is a subset of the available tracks (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3161\"\u003e#3161\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix an issue where the initialization segment was not carried over across media playlist updates if the \u003ccode\u003e#EXT-X-MAP\u003c/code\u003e tag was not repeated in subsequent updates (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3105\"\u003e#3105\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eDASH extension:\n\u003cul\u003e\n\u003cli\u003eFix crash in \u003ccode\u003eSampleQueue\u003c/code\u003e when seeking into a chunk that is currently being canceled.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003ePromote \u003ccode\u003ePlayer.mute()\u003c/code\u003e and \u003ccode\u003ePlayer.unmute()\u003c/code\u003e from \u003ccode\u003eUnstableApi\u003c/code\u003e to stable.\u003c/li\u003e\n\u003cli\u003ePromote \u003ccode\u003eFormat.pcmEncoding\u003c/code\u003e and \u003ccode\u003eC.PcmEncoding\u003c/code\u003e from \u003ccode\u003eUnstableApi\u003c/code\u003e to stable.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.primaryTrackGroupId\u003c/code\u003e to identify the primary group of embedded \u003ccode\u003eFormat\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/androidx/media/issues/294\"\u003e#294\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eAdd clipping capabilities to \u003ccode\u003eAdsMediaSource\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd support for dynamic scheduling in \u003ccode\u003eMediaCodecVideoRenderer\u003c/code\u003e to better align scheduling work and CPU wake-cycles to when video frames can be processed. You can enable this using \u003ccode\u003eexperimentalSetEnableMediaCodecVideoRendererDurationToProgressUs()\u003c/code\u003e in the \u003ccode\u003eDefaultRenderersFactory\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAllow setting a custom \u003ccode\u003eDataSource.Factory\u003c/code\u003e in \u003ccode\u003eDefaultPreloadManager.Builder\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eExoPlayer\u003c/code\u003e to be mocked without Robolectric by moving some default constants to \u003ccode\u003eExoPlayer.Builder\u003c/code\u003e. Mocking this complex interface is not generally encouraged - only when the usage is minimal/simple/incidental (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2985\"\u003e#2985\u003c/a\u003e).\n\u003cul\u003e\n\u003cli\u003eThis required moving \u003ccode\u003eDEFAULT_STUCK_PLAYING_DETECTION_TIMEOUT_MS\u003c/code\u003e from \u003ccode\u003eExoPlayer\u003c/code\u003e to \u003ccode\u003eExoPlayer.Builder\u003c/code\u003e (without deprecation).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix a bug where \u003ccode\u003eProgressiveMediaSource\u003c/code\u003e propagates out-of-date timeline info to the player, and the queued periods unexpectedly get removed (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3016\"\u003e#3016\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix issue where ExoPlayer would not request delayed audio focus when playback is requested during phone calls.\u003c/li\u003e\n\u003cli\u003eFix bug where transitions from on-demand to live content may cause re-buffers at the end of the on-demand content (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3052\"\u003e#3052\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Dolby Vision Profile 10 (\u003ca href=\"https://redirect.github.com/androidx/media/pull/2830\"\u003e#2830\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where an uninitialized pre roll ad produced an \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3125\"\u003e#3125\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eCompositionPlayer:\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eEditedMediaItem.removeVideo\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTransformer:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eEditedMediaItem.Builder.setFrameRate()\u003c/code\u003e can now set a maximum output frame rate for video, which is particularly helpful when increasing media speed with \u003ccode\u003esetSpeed()\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/blob/release/RELEASENOTES.md\"\u003eandroidx.media3:media3-session's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e1.10.1 (2026-05-12)\u003c/h3\u003e\n\u003cp\u003eThis release includes the following changes since \u003ca href=\"https://github.com/androidx/media/blob/release/#1100-2026-03-25\"\u003e1.10.0\u003c/a\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eonAudioSessionIdChanged\u003c/code\u003e in \u003ccode\u003eSimpleBasePlayer\u003c/code\u003e and\n\u003ccode\u003eForwardingSimpleBasePlayer\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix race condition related to audio session id generation that could\nlead to an \u003ccode\u003eIllegalStateException\u003c/code\u003e with tunneling mode.\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/3099\"\u003e#3099\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix possible app crashes when recovering from decoder errors with\nrenderer prewarming.\u003c/li\u003e\n\u003cli\u003eFix issue where video artifacts were caused by supplying initialization\ndata when using an AV1-based Dolby Vision codec\n(\u003ca href=\"https://redirect.github.com/androidx/media/pull/3153\"\u003e#3153\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eAdjust track selection logic in \u003ccode\u003eVideoTrackInfo\u003c/code\u003e to resolve fallback\nMIME types and move HDR and codec score preferences to quality\npreferences (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3135\"\u003e#3135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP3: Ignore Xing data length if it is longer than the known stream\nlength (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3117\"\u003e#3117\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e in \u003ccode\u003eMp4Extractor\u003c/code\u003e when\n\u003ccode\u003eFLAG_OMIT_TRACK_SAMPLE_TABLE\u003c/code\u003e is set and the track lacks a sync sample\n(\u003ccode\u003estss\u003c/code\u003e) box.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAudio:\n\u003cul\u003e\n\u003cli\u003eFix bug where audio events may be misrouted if multiple audio renderers\nare added to the player.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eVideo:\n\u003cul\u003e\n\u003cli\u003eAdjust logic for codec reuse at frame rate changes on API below 30 to\navoid codec resets where they are not beneficial\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/3120\"\u003e#3120\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDisable forced synchronization workaround in \u003ccode\u003equeueSecureInputBuffer\u003c/code\u003e\nfor API 31+. The workaround was an artificial bottleneck that forced\ndecryption to run serially which prevented garbled video due to a\nframework issue existing prior to API 31.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImage:\n\u003cul\u003e\n\u003cli\u003eFix issue in scrubbing mode where image updates would only take effect\nwhen the user \u0026quot;stops scrubbing\u0026quot;\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/2815\"\u003e#2815\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSession:\n\u003cul\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eForegroundServiceStartNotAllowedException\u003c/code\u003e wasn't\npropagated across thread boundaries in case the application thread is\nnot the main thread\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/2499\"\u003e#2499\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eCOMMAND_SEEK_TO_MEDIA_ITEM\u003c/code\u003e is not available in a\n\u003ccode\u003eMediaController\u003c/code\u003e when connecting to a platform-only session that\nsupports seeking to other items but no playlist modifications.\u003c/li\u003e\n\u003cli\u003eFix issue where \u003ccode\u003eMediaController\u003c/code\u003e can't set media items on platform\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/5fb306449733dd71595700c1227ad6087578c559\"\u003e\u003ccode\u003e5fb3064\u003c/code\u003e\u003c/a\u003e Bump version to 1.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/95d6a273bd675ef168525ac3bb54aa6a3f1c76ce\"\u003e\u003ccode\u003e95d6a27\u003c/code\u003e\u003c/a\u003e Update release notes for 1.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/a2bc30474e3313e8bc690428d9c8615b99ffc25d\"\u003e\u003ccode\u003ea2bc304\u003c/code\u003e\u003c/a\u003e Fix Mp4Extractor OutOfBounds exception when sample tables are omitted\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/2142ab0b73bfe32edac50b0b6840ff7176297fdc\"\u003e\u003ccode\u003e2142ab0\u003c/code\u003e\u003c/a\u003e Fix scrubbing mode's intermittent seek prevention for image rendering\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/b323c9d818da8e36d8a6308b27bcfaeb079fa70f\"\u003e\u003ccode\u003eb323c9d\u003c/code\u003e\u003c/a\u003e Add specific error codes for failure to render errors.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/a8ef4090a9f018eba9455eb70d496b3884e50443\"\u003e\u003ccode\u003ea8ef409\u003c/code\u003e\u003c/a\u003e Fix redirection of stderr in bazelisk check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/14f8248c55f8b17bc63a04b7a4363a8a150bf472\"\u003e\u003ccode\u003e14f8248\u003c/code\u003e\u003c/a\u003e Improve memory management in av1 decoder\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/4a584060a8925ccd512dc50f79c765f58413d558\"\u003e\u003ccode\u003e4a58406\u003c/code\u003e\u003c/a\u003e Fix flaky tests in MediaSessionCompatCallbackWithMediaControllerTest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/de3e9e7d586876dce8b66ef10eb5e0910afd5d54\"\u003e\u003ccode\u003ede3e9e7\u003c/code\u003e\u003c/a\u003e Fix crash in SampleQueue when seeking into canceled chunks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/910c4027ff0137fc5c827dfab465aa1ece37487c\"\u003e\u003ccode\u003e910c402\u003c/code\u003e\u003c/a\u003e Fix video track selection for Dolby Vision fallback tracks\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/androidx/media/compare/1.5.1...1.10.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.media3:media3-exoplayer-hls` from 1.5.1 to 1.10.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/releases\"\u003eandroidx.media3:media3-exoplayer-hls's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.10.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eonAudioSessionIdChanged\u003c/code\u003e in \u003ccode\u003eSimpleBasePlayer\u003c/code\u003e and \u003ccode\u003eForwardingSimpleBasePlayer\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix race condition related to audio session id generation that could lead to an \u003ccode\u003eIllegalStateException\u003c/code\u003e with tunneling mode (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3099\"\u003e#3099\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix possible app crashes when recovering from decoder errors with renderer prewarming.\u003c/li\u003e\n\u003cli\u003eFix issue where video artifacts were caused by supplying initialization data when using an AV1-based Dolby Vision codec (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3153\"\u003e#3153\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eAdjust track selection logic in \u003ccode\u003eVideoTrackInfo\u003c/code\u003e to resolve fallback MIME types and move HDR and codec score preferences to quality preferences (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3135\"\u003e#3135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP3: Ignore Xing data length if it is longer than the known stream length (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3117\"\u003e#3117\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e in \u003ccode\u003eMp4Extractor\u003c/code\u003e when \u003ccode\u003eFLAG_OMIT_TRACK_SAMPLE_TABLE\u003c/code\u003e is set and the track lacks a sync sample (\u003ccode\u003estss\u003c/code\u003e) box.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAudio:\n\u003cul\u003e\n\u003cli\u003eFix bug where audio events may be misrouted if multiple audio renderers are added to the player.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eVideo:\n\u003cul\u003e\n\u003cli\u003eAdjust logic for codec reuse at frame rate changes on API below 30 to avoid codec resets where they are not beneficial (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3120\"\u003e#3120\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDisable forced synchronization workaround in \u003ccode\u003equeueSecureInputBuffer\u003c/code\u003e for API 31+. The workaround was an artificial bottleneck that forced decryption to run serially which prevented garbled video due to a framework issue existing prior to API 31.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImage:\n\u003cul\u003e\n\u003cli\u003eFix issue in scrubbing mode where image updates would only take effect when the user \u0026quot;stops scrubbing\u0026quot; (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2815\"\u003e#2815\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSession:\n\u003cul\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eForegroundServiceStartNotAllowedException\u003c/code\u003e wasn't propagated across thread boundaries in case the application thread is not the main thread (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2499\"\u003e#2499\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eCOMMAND_SEEK_TO_MEDIA_ITEM\u003c/code\u003e is not available in a \u003ccode\u003eMediaController\u003c/code\u003e when connecting to a platform-only session that supports seeking to other items but no playlist modifications.\u003c/li\u003e\n\u003cli\u003eFix issue where \u003ccode\u003eMediaController\u003c/code\u003e can't set media items on platform media sessions that don't allow \u003ccode\u003ePREPARE_FROM\u003c/code\u003e actions.\u003c/li\u003e\n\u003cli\u003eFix bug where own process wasn't marked with \u003ccode\u003eController.isTrusted()\u003c/code\u003e on API 27 or before when connecting via platform controllers.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eHLS extension:\n\u003cul\u003e\n\u003cli\u003eFix a bug where an \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e is thrown during stream fallback if the track selection is a subset of the available tracks (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3161\"\u003e#3161\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix an issue where the initialization segment was not carried over across media playlist updates if the \u003ccode\u003e#EXT-X-MAP\u003c/code\u003e tag was not repeated in subsequent updates (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3105\"\u003e#3105\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eDASH extension:\n\u003cul\u003e\n\u003cli\u003eFix crash in \u003ccode\u003eSampleQueue\u003c/code\u003e when seeking into a chunk that is currently being canceled.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003ePromote \u003ccode\u003ePlayer.mute()\u003c/code\u003e and \u003ccode\u003ePlayer.unmute()\u003c/code\u003e from \u003ccode\u003eUnstableApi\u003c/code\u003e to stable.\u003c/li\u003e\n\u003cli\u003ePromote \u003ccode\u003eFormat.pcmEncoding\u003c/code\u003e and \u003ccode\u003eC.PcmEncoding\u003c/code\u003e from \u003ccode\u003eUnstableApi\u003c/code\u003e to stable.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eFormat.primaryTrackGroupId\u003c/code\u003e to identify the primary group of embedded \u003ccode\u003eFormat\u003c/code\u003e instances (\u003ca href=\"https://redirect.github.com/androidx/media/issues/294\"\u003e#294\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eAdd clipping capabilities to \u003ccode\u003eAdsMediaSource\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd support for dynamic scheduling in \u003ccode\u003eMediaCodecVideoRenderer\u003c/code\u003e to better align scheduling work and CPU wake-cycles to when video frames can be processed. You can enable this using \u003ccode\u003eexperimentalSetEnableMediaCodecVideoRendererDurationToProgressUs()\u003c/code\u003e in the \u003ccode\u003eDefaultRenderersFactory\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAllow setting a custom \u003ccode\u003eDataSource.Factory\u003c/code\u003e in \u003ccode\u003eDefaultPreloadManager.Builder\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eExoPlayer\u003c/code\u003e to be mocked without Robolectric by moving some default constants to \u003ccode\u003eExoPlayer.Builder\u003c/code\u003e. Mocking this complex interface is not generally encouraged - only when the usage is minimal/simple/incidental (\u003ca href=\"https://redirect.github.com/androidx/media/issues/2985\"\u003e#2985\u003c/a\u003e).\n\u003cul\u003e\n\u003cli\u003eThis required moving \u003ccode\u003eDEFAULT_STUCK_PLAYING_DETECTION_TIMEOUT_MS\u003c/code\u003e from \u003ccode\u003eExoPlayer\u003c/code\u003e to \u003ccode\u003eExoPlayer.Builder\u003c/code\u003e (without deprecation).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix a bug where \u003ccode\u003eProgressiveMediaSource\u003c/code\u003e propagates out-of-date timeline info to the player, and the queued periods unexpectedly get removed (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3016\"\u003e#3016\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix issue where ExoPlayer would not request delayed audio focus when playback is requested during phone calls.\u003c/li\u003e\n\u003cli\u003eFix bug where transitions from on-demand to live content may cause re-buffers at the end of the on-demand content (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3052\"\u003e#3052\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for Dolby Vision Profile 10 (\u003ca href=\"https://redirect.github.com/androidx/media/pull/2830\"\u003e#2830\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where an uninitialized pre roll ad produced an \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3125\"\u003e#3125\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eCompositionPlayer:\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eEditedMediaItem.removeVideo\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTransformer:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eEditedMediaItem.Builder.setFrameRate()\u003c/code\u003e can now set a maximum output frame rate for video, which is particularly helpful when increasing media speed with \u003ccode\u003esetSpeed()\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/blob/release/RELEASENOTES.md\"\u003eandroidx.media3:media3-exoplayer-hls's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e1.10.1 (2026-05-12)\u003c/h3\u003e\n\u003cp\u003eThis release includes the following changes since \u003ca href=\"https://github.com/androidx/media/blob/release/#1100-2026-03-25\"\u003e1.10.0\u003c/a\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eonAudioSessionIdChanged\u003c/code\u003e in \u003ccode\u003eSimpleBasePlayer\u003c/code\u003e and\n\u003ccode\u003eForwardingSimpleBasePlayer\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix race condition related to audio session id generation that could\nlead to an \u003ccode\u003eIllegalStateException\u003c/code\u003e with tunneling mode.\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/3099\"\u003e#3099\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix possible app crashes when recovering from decoder errors with\nrenderer prewarming.\u003c/li\u003e\n\u003cli\u003eFix issue where video artifacts were caused by supplying initialization\ndata when using an AV1-based Dolby Vision codec\n(\u003ca href=\"https://redirect.github.com/androidx/media/pull/3153\"\u003e#3153\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eAdjust track selection logic in \u003ccode\u003eVideoTrackInfo\u003c/code\u003e to resolve fallback\nMIME types and move HDR and codec score preferences to quality\npreferences (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3135\"\u003e#3135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP3: Ignore Xing data length if it is longer than the known stream\nlength (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3117\"\u003e#3117\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e in \u003ccode\u003eMp4Extractor\u003c/code\u003e when\n\u003ccode\u003eFLAG_OMIT_TRACK_SAMPLE_TABLE\u003c/code\u003e is set and the track lacks a sync sample\n(\u003ccode\u003estss\u003c/code\u003e) box.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAudio:\n\u003cul\u003e\n\u003cli\u003eFix bug where audio events may be misrouted if multiple audio renderers\nare added to the player.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eVideo:\n\u003cul\u003e\n\u003cli\u003eAdjust logic for codec reuse at frame rate changes on API below 30 to\navoid codec resets where they are not beneficial\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/3120\"\u003e#3120\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDisable forced synchronization workaround in \u003ccode\u003equeueSecureInputBuffer\u003c/code\u003e\nfor API 31+. The workaround was an artificial bottleneck that forced\ndecryption to run serially which prevented garbled video due to a\nframework issue existing prior to API 31.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImage:\n\u003cul\u003e\n\u003cli\u003eFix issue in scrubbing mode where image updates would only take effect\nwhen the user \u0026quot;stops scrubbing\u0026quot;\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/2815\"\u003e#2815\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSession:\n\u003cul\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eForegroundServiceStartNotAllowedException\u003c/code\u003e wasn't\npropagated across thread boundaries in case the application thread is\nnot the main thread\n(\u003ca href=\"https://redirect.github.com/androidx/media/issues/2499\"\u003e#2499\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eCOMMAND_SEEK_TO_MEDIA_ITEM\u003c/code\u003e is not available in a\n\u003ccode\u003eMediaController\u003c/code\u003e when connecting to a platform-only session that\nsupports seeking to other items but no playlist modifications.\u003c/li\u003e\n\u003cli\u003eFix issue where \u003ccode\u003eMediaController\u003c/code\u003e can't set media items on platform\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/5fb306449733dd71595700c1227ad6087578c559\"\u003e\u003ccode\u003e5fb3064\u003c/code\u003e\u003c/a\u003e Bump version to 1.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/95d6a273bd675ef168525ac3bb54aa6a3f1c76ce\"\u003e\u003ccode\u003e95d6a27\u003c/code\u003e\u003c/a\u003e Update release notes for 1.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/a2bc30474e3313e8bc690428d9c8615b99ffc25d\"\u003e\u003ccode\u003ea2bc304\u003c/code\u003e\u003c/a\u003e Fix Mp4Extractor OutOfBounds exception when sample tables are omitted\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/2142ab0b73bfe32edac50b0b6840ff7176297fdc\"\u003e\u003ccode\u003e2142ab0\u003c/code\u003e\u003c/a\u003e Fix scrubbing mode's intermittent seek prevention for image rendering\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/b323c9d818da8e36d8a6308b27bcfaeb079fa70f\"\u003e\u003ccode\u003eb323c9d\u003c/code\u003e\u003c/a\u003e Add specific error codes for failure to render errors.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/a8ef4090a9f018eba9455eb70d496b3884e50443\"\u003e\u003ccode\u003ea8ef409\u003c/code\u003e\u003c/a\u003e Fix redirection of stderr in bazelisk check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/14f8248c55f8b17bc63a04b7a4363a8a150bf472\"\u003e\u003ccode\u003e14f8248\u003c/code\u003e\u003c/a\u003e Improve memory management in av1 decoder\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/4a584060a8925ccd512dc50f79c765f58413d558\"\u003e\u003ccode\u003e4a58406\u003c/code\u003e\u003c/a\u003e Fix flaky tests in MediaSessionCompatCallbackWithMediaControllerTest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/de3e9e7d586876dce8b66ef10eb5e0910afd5d54\"\u003e\u003ccode\u003ede3e9e7\u003c/code\u003e\u003c/a\u003e Fix crash in SampleQueue when seeking into canceled chunks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/androidx/media/commit/910c4027ff0137fc5c827dfab465aa1ece37487c\"\u003e\u003ccode\u003e910c402\u003c/code\u003e\u003c/a\u003e Fix video track selection for Dolby Vision fallback tracks\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/androidx/media/compare/1.5.1...1.10.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.media3:media3-ui` from 1.5.1 to 1.10.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/androidx/media/releases\"\u003eandroidx.media3:media3-ui's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.10.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCommon library:\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eonAudioSessionIdChanged\u003c/code\u003e in \u003ccode\u003eSimpleBasePlayer\u003c/code\u003e and \u003ccode\u003eForwardingSimpleBasePlayer\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExoPlayer:\n\u003cul\u003e\n\u003cli\u003eFix race condition related to audio session id generation that could lead to an \u003ccode\u003eIllegalStateException\u003c/code\u003e with tunneling mode (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3099\"\u003e#3099\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix possible app crashes when recovering from decoder errors with renderer prewarming.\u003c/li\u003e\n\u003cli\u003eFix issue where video artifacts were caused by supplying initialization data when using an AV1-based Dolby Vision codec (\u003ca href=\"https://redirect.github.com/androidx/media/pull/3153\"\u003e#3153\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eTrack selection:\n\u003cul\u003e\n\u003cli\u003eAdjust track selection logic in \u003ccode\u003eVideoTrackInfo\u003c/code\u003e to resolve fallback MIME types and move HDR and codec score preferences to quality preferences (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3135\"\u003e#3135\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eExtractors:\n\u003cul\u003e\n\u003cli\u003eMP3: Ignore Xing data length if it is longer than the known stream length (\u003ca href=\"https://redirect.github.com/androidx/media/issues/3117\"\u003e#3117\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eArrayIndexOutOfBoundsException\u003c/code\u003e in \u003ccode\u003eMp4Extractor\u003c/code\u003e when \u003ccode\u003eFLAG_OMIT_TRACK_SAMPLE_TABLE\u003c/code\u003e is set and the track lacks a sync sample (\u003ccode\u003estss\u003c/code\u003e) box.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAudio:\n\u003cul\u003e\n\u003cli\u003eFix bug where audio events may be misrouted if multiple audio renderer...\n\n_Description has been truncated_","html_url":"https://github.com/isnow-git/strix/pull/6","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/isnow-git%2Fstrix/issues/6","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/6/packages"}},{"old_version":"3.6.1","new_version":"3.7.0","update_type":"minor","path":null,"pr_created_at":"2026-05-27T22:48:29.000Z","version_change":"3.6.1 → 3.7.0","issue":{"uuid":"4536269037","node_id":"PR_kwDOSpGRQM7gBUbg","number":12,"state":"closed","title":"build: bump the gradle-minor-patch group across 1 directory with 35 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-05-28T00:29:40.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-27T22:48:29.000Z","updated_at":"2026-05-28T00:29:50.000Z","time_to_close":6071,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build: bump","group_name":"gradle-minor-patch","update_count":35,"packages":[{"name":"gradle-wrapper","old_version":"8.11.1","new_version":"8.14.5","repository_url":"https://github.com/gradle/gradle"},{"name":"androidx.core:core-ktx","old_version":"1.15.0","new_version":"1.18.0"},{"name":"androidx.lifecycle:lifecycle-runtime-ktx","old_version":"2.8.7","new_version":"2.10.0"},{"name":"androidx.activity:activity-compose","old_version":"1.9.3","new_version":"1.13.0"},{"name":"androidx.navigation:navigation-compose","old_version":"2.8.5","new_version":"2.9.8"},{"name":"androidx.lifecycle:lifecycle-viewmodel-compose","old_version":"2.8.7","new_version":"2.10.0"},{"name":"androidx.lifecycle:lifecycle-runtime-compose","old_version":"2.8.7","new_version":"2.10.0"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-android","old_version":"1.9.0","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-test","old_version":"1.9.0","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"io.ktor:ktor-server-core","old_version":"3.0.3","new_version":"3.5.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-server-cio","old_version":"3.0.3","new_version":"3.5.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-server-html-builder","old_version":"3.0.3","new_version":"3.5.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-server-content-negotiation","old_version":"3.0.3","new_version":"3.5.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-serialization-kotlinx-json","old_version":"3.0.3","new_version":"3.5.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.ktor:ktor-server-test-host","old_version":"3.0.3","new_version":"3.5.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"org.jsoup:jsoup","old_version":"1.18.3","new_version":"1.22.2","repository_url":"https://github.com/jhy/jsoup"},{"name":"androidx.test.ext:junit","old_version":"1.2.1","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.6.1","new_version":"3.7.0"},{"name":"androidx.datastore:datastore","old_version":"1.1.1","new_version":"1.2.1"},{"name":"androidx.datastore:datastore-preferences","old_version":"1.1.1","new_version":"1.2.1"},{"name":"androidx.room:room-runtime","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-ktx","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-compiler","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-testing","old_version":"2.6.1","new_version":"2.8.4"},{"name":"net.zetetic:sqlcipher-android","old_version":"4.6.1","new_version":"4.16.0","repository_url":"https://github.com/sqlcipher/sqlcipher-android"},{"name":"androidx.sqlite:sqlite","old_version":"2.4.0","new_version":"2.6.2"},{"name":"com.lambdapioneer.argon2kt:argon2kt","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/lambdapioneer/argon2kt"},{"name":"org.robolectric:robolectric","old_version":"4.13","new_version":"4.16.1","repository_url":"https://github.com/robolectric/robolectric"},{"name":"androidx.test:core","old_version":"1.6.1","new_version":"1.7.0"},{"name":"com.android.application","old_version":"8.7.3","new_version":"8.13.2"},{"name":"org.jetbrains.kotlin.android","old_version":"2.0.21","new_version":"2.3.21","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.0.21","new_version":"2.3.21","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.0.21","new_version":"2.3.21","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jlleitschuh.gradle.ktlint","old_version":"12.1.1","new_version":"12.3.0"},{"name":"com.google.devtools.ksp","old_version":"2.0.21-1.0.28","new_version":"2.3.9","repository_url":"https://github.com/google/ksp"}],"path":null,"ecosystem":"maven"},"body":"Bumps the gradle-minor-patch group with 35 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `8.11.1` | `8.14.5` |\n| androidx.core:core-ktx | `1.15.0` | `1.18.0` |\n| androidx.lifecycle:lifecycle-runtime-ktx | `2.8.7` | `2.10.0` |\n| androidx.activity:activity-compose | `1.9.3` | `1.13.0` |\n| androidx.navigation:navigation-compose | `2.8.5` | `2.9.8` |\n| androidx.lifecycle:lifecycle-viewmodel-compose | `2.8.7` | `2.10.0` |\n| androidx.lifecycle:lifecycle-runtime-compose | `2.8.7` | `2.10.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-android](https://github.com/Kotlin/kotlinx.coroutines) | `1.9.0` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-test](https://github.com/Kotlin/kotlinx.coroutines) | `1.9.0` | `1.11.0` |\n| [io.ktor:ktor-server-core](https://github.com/ktorio/ktor) | `3.0.3` | `3.5.0` |\n| [io.ktor:ktor-server-cio](https://github.com/ktorio/ktor) | `3.0.3` | `3.5.0` |\n| [io.ktor:ktor-server-html-builder](https://github.com/ktorio/ktor) | `3.0.3` | `3.5.0` |\n| [io.ktor:ktor-server-content-negotiation](https://github.com/ktorio/ktor) | `3.0.3` | `3.5.0` |\n| [io.ktor:ktor-serialization-kotlinx-json](https://github.com/ktorio/ktor) | `3.0.3` | `3.5.0` |\n| [io.ktor:ktor-server-test-host](https://github.com/ktorio/ktor) | `3.0.3` | `3.5.0` |\n| [org.jsoup:jsoup](https://github.com/jhy/jsoup) | `1.18.3` | `1.22.2` |\n| androidx.test.ext:junit | `1.2.1` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.6.1` | `3.7.0` |\n| androidx.datastore:datastore | `1.1.1` | `1.2.1` |\n| androidx.datastore:datastore-preferences | `1.1.1` | `1.2.1` |\n| androidx.room:room-runtime | `2.6.1` | `2.8.4` |\n| androidx.room:room-ktx | `2.6.1` | `2.8.4` |\n| androidx.room:room-compiler | `2.6.1` | `2.8.4` |\n| androidx.room:room-testing | `2.6.1` | `2.8.4` |\n| [net.zetetic:sqlcipher-android](https://github.com/sqlcipher/sqlcipher-android) | `4.6.1` | `4.16.0` |\n| androidx.sqlite:sqlite | `2.4.0` | `2.6.2` |\n| [com.lambdapioneer.argon2kt:argon2kt](https://github.com/lambdapioneer/argon2kt) | `1.5.0` | `1.6.0` |\n| [org.robolectric:robolectric](https://github.com/robolectric/robolectric) | `4.13` | `4.16.1` |\n| androidx.test:core | `1.6.1` | `1.7.0` |\n| com.android.application | `8.7.3` | `8.13.2` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.0.21` | `2.3.21` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.0.21` | `2.3.21` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.0.21` | `2.3.21` |\n| org.jlleitschuh.gradle.ktlint | `12.1.1` | `12.3.0` |\n| [com.google.devtools.ksp](https://github.com/google/ksp) | `2.0.21-1.0.28` | `2.3.9` |\n\n\nUpdates `gradle-wrapper` from 8.11.1 to 8.14.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gradle/gradle/releases\"\u003egradle-wrapper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.14.5\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 8.14.5.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eJava 24 support\u003c/li\u003e\n\u003cli\u003eGraalVM Native Image toolchain selection\u003c/li\u003e\n\u003cli\u003eEnhancements to test reporting\u003c/li\u003e\n\u003cli\u003eBuild Authoring improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gradle.org/8.14.5/release-notes.html\"\u003eRead the Release Notes\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe would like to thank the following community members for their contributions to this release of Gradle:\n\u003ca href=\"https://github.com/liutikas\"\u003eAurimas\u003c/a\u003e,\n\u003ca href=\"https://github.com/benjamin-bader\"\u003eBen Bader\u003c/a\u003e,\n\u003ca href=\"https://github.com/Vampire\"\u003eBjörn Kautler\u003c/a\u003e,\n\u003ca href=\"https://github.com/chandre92\"\u003echandre92\u003c/a\u003e,\n\u003ca href=\"https://github.com/dlehammer\"\u003eDaniel Hammer\u003c/a\u003e,\n\u003ca href=\"https://github.com/danishnawab\"\u003eDanish Nawab\u003c/a\u003e,\n\u003ca href=\"https://github.com/DreierF\"\u003eFlorian Dreier\u003c/a\u003e,\n\u003ca href=\"https://github.com/Mengmeiivy\"\u003eIvy Chen\u003c/a\u003e,\n\u003ca href=\"https://github.com/jjohannes\"\u003eJendrik Johannes\u003c/a\u003e,\n\u003ca href=\"https://github.com/jimmy1995-gu\"\u003ejimmy1995-gu\u003c/a\u003e,\n\u003ca href=\"https://github.com/vmadalin\"\u003eMadalin Valceleanu\u003c/a\u003e,\n\u003ca href=\"https://github.com/NaMinhyeok\"\u003eNa Minhyeok\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eUpgrade instructions\u003c/h2\u003e\n\u003cp\u003eSwitch your build to use Gradle 8.14.5 by updating your wrapper:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./gradlew wrapper --gradle-version=8.14.5 \u0026amp;\u0026amp; ./gradlew wrapper\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the Gradle \u003ca href=\"https://docs.gradle.org/8.14.5/userguide/upgrading_version_8.html\"\u003e8.x upgrade guide\u003c/a\u003e to learn about deprecations, breaking changes and other considerations when upgrading.\u003c/p\u003e\n\u003cp\u003eFor Java, Groovy, Kotlin and Android compatibility, see the \u003ca href=\"https://docs.gradle.org/8.14.5/userguide/compatibility.html\"\u003efull compatibility notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReporting problems\u003c/h2\u003e\n\u003cp\u003eIf you find a problem with this release, please file a bug on \u003ca href=\"https://github.com/gradle/gradle/issues\"\u003eGitHub Issues\u003c/a\u003e adhering to our issue guidelines.\nIf you're not sure you're encountering a bug, please use the \u003ca href=\"https://discuss.gradle.org/c/help-discuss\"\u003eforum\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe hope you will build happiness with Gradle, and we look forward to your feedback via \u003ca href=\"https://twitter.com/gradle\"\u003eTwitter\u003c/a\u003e or on \u003ca href=\"https://github.com/gradle\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e8.14.4\u003c/h2\u003e\n\u003cp\u003eThis is a patch release for 8.14. We recommend using 8.14.4 instead of 8.14.\u003c/p\u003e\n\u003cp\u003eThis release addresses two security vulnerabilities:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/security/advisories/GHSA-mqwm-5m85-gmcv\"\u003eFailure to disable repositories failing to answer can expose builds to malicious artifacts\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/security/advisories/GHSA-w78c-w6vf-rw82\"\u003eFailure to disable repositories with unknown host can expose builds to malicious artifacts\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/62345becae08b13e793521816d585102fea66398\"\u003e\u003ccode\u003e62345be\u003c/code\u003e\u003c/a\u003e Finalize release notes for 8.14.5 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37829\"\u003e#37829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/38049c286691bf85cee542f8b2f8dc1cc54dd25d\"\u003e\u003ccode\u003e38049c2\u003c/code\u003e\u003c/a\u003e Finalize release notes for 8.14.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/f3781397d4ad84fcc034f239efe7dc350f564741\"\u003e\u003ccode\u003ef378139\u003c/code\u003e\u003c/a\u003e Update jdks.yaml (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37780\"\u003e#37780\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/4e739b5959a5b0f1c5962cd387143c91b27343d3\"\u003e\u003ccode\u003e4e739b5\u003c/code\u003e\u003c/a\u003e Update jdks.yaml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/d94136aadaa292280b860e5032e7dddc6e116112\"\u003e\u003ccode\u003ed94136a\u003c/code\u003e\u003c/a\u003e Update jdks.yaml (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37704\"\u003e#37704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/a2f6942e453c80634fca32ba0e11a9ce8b7baf48\"\u003e\u003ccode\u003ea2f6942\u003c/code\u003e\u003c/a\u003e Update jdks.yaml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/28df2639ea8752218176288ef6a9e678c779f73b\"\u003e\u003ccode\u003e28df263\u003c/code\u003e\u003c/a\u003e Backport exclude bugfix (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37559\"\u003e#37559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/e03dca12e7b77f5f6ec00f7d81eb8734f7596d52\"\u003e\u003ccode\u003ee03dca1\u003c/code\u003e\u003c/a\u003e Upgrade BouncyCastle to 1.84 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37656\"\u003e#37656\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/987d1a32e4f3d97b14413e9ee2742df820ec6beb\"\u003e\u003ccode\u003e987d1a3\u003c/code\u003e\u003c/a\u003e Bump the Jackson version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/56e392c0f0b9f16bcba1c03f7bd0bae08a82556a\"\u003e\u003ccode\u003e56e392c\u003c/code\u003e\u003c/a\u003e Bump Bouncycastle to 1.84\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gradle/gradle/compare/v8.11.1...v8.14.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.core:core-ktx` from 1.15.0 to 1.18.0\n\nUpdates `androidx.lifecycle:lifecycle-runtime-ktx` from 2.8.7 to 2.10.0\n\nUpdates `androidx.activity:activity-compose` from 1.9.3 to 1.13.0\n\nUpdates `androidx.navigation:navigation-compose` from 2.8.5 to 2.9.8\n\nUpdates `androidx.lifecycle:lifecycle-viewmodel-compose` from 2.8.7 to 2.10.0\n\nUpdates `androidx.lifecycle:lifecycle-runtime-compose` from 2.8.7 to 2.10.0\n\nUpdates `androidx.lifecycle:lifecycle-runtime-compose` from 2.8.7 to 2.10.0\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-android` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874\"\u003e\u003ccode\u003e8564f65\u003c/code\u003e\u003c/a\u003e Version 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c\"\u003e\u003ccode\u003ea4c6af9\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9\"\u003e\u003ccode\u003eef917b4\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd\"\u003e\u003ccode\u003e5ebc421\u003c/code\u003e\u003c/a\u003e Update the release procedure description (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80\"\u003e\u003ccode\u003e95f46a0\u003c/code\u003e\u003c/a\u003e Remove old maven repository settings (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672\"\u003e#4672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc\"\u003e\u003ccode\u003eb4f4f0a\u003c/code\u003e\u003c/a\u003e Fix package name of \u003ccode\u003eToMapCollectionSamplesTest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674\"\u003e#4674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/86738dca7dc9ac82249abc8206263fa0065ee631\"\u003e\u003ccode\u003e86738dc\u003c/code\u003e\u003c/a\u003e Added templates to the issue creation wizard (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/330fcc221fb583f0b119f34191f735a73b827378\"\u003e\u003ccode\u003e330fcc2\u003c/code\u003e\u003c/a\u003e Version 1.11.0-rc02\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/e31cef6e9f2d26794be7d75ecbf3033b6432d582\"\u003e\u003ccode\u003ee31cef6\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/dc6e9f61eaf3a67f4bf474a7987aedc3f16cef37\"\u003e\u003ccode\u003edc6e9f6\u003c/code\u003e\u003c/a\u003e Restore Promise-related functions on Wasm/JS as HIDDEN (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/compare/1.9.0...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-test` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-test's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-test's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874\"\u003e\u003ccode\u003e8564f65\u003c/code\u003e\u003c/a\u003e Version 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c\"\u003e\u003ccode\u003ea4c6af9\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9\"\u003e\u003ccode\u003eef917b4\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd\"\u003e\u003ccode\u003e5ebc421\u003c/code\u003e\u003c/a\u003e Update the release procedure description (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80\"\u003e\u003ccode\u003e95f46a0\u003c/code\u003e\u003c/a\u003e Remove old maven repository settings (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672\"\u003e#4672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc\"\u003e\u003ccode\u003eb4f4f0a\u003c/code\u003e\u003c/a\u003e Fix package name of \u003ccode\u003eToMapCollectionSamplesTest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674\"\u003e#4674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/86738dca7dc9ac82249abc8206263fa0065ee631\"\u003e\u003ccode\u003e86738dc\u003c/code\u003e\u003c/a\u003e Added templates to the issue creation wizard (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/330fcc221fb583f0b119f34191f735a73b827378\"\u003e\u003ccode\u003e330fcc2\u003c/code\u003e\u003c/a\u003e Version 1.11.0-rc02\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/e31cef6e9f2d26794be7d75ecbf3033b6432d582\"\u003e\u003ccode\u003ee31cef6\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/dc6e9f61eaf3a67f4bf474a7987aedc3f16cef37\"\u003e\u003ccode\u003edc6e9f6\u003c/code\u003e\u003c/a\u003e Restore Promise-related functions on Wasm/JS as HIDDEN (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/compare/1.9.0...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-test` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-test's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-test's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874\"\u003e\u003ccode\u003e8564f65\u003c/code\u003e\u003c/a\u003e Version 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c\"\u003e\u003ccode\u003ea4c6af9\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9\"\u003e\u003ccode\u003eef917b4\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd\"\u003e\u003ccode\u003e5ebc421\u003c/code\u003e\u003c/a\u003e Update the release procedure description (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80\"\u003e\u003ccode\u003e95f46a0\u003c/code\u003e\u003c/a\u003e Remove old maven repository settings (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672\"\u003e#4672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc\"\u003e\u003ccode\u003eb4f4f0a\u003c/code\u003e\u003c/a\u003e Fix package name of \u003ccode\u003eToMapCollectionSamplesTest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674\"\u003e#4674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/86738dca7dc9ac82249abc8206263fa0065ee631\"\u003e\u003ccode\u003e86738dc\u003c/code\u003e\u003c/a\u003e Added templates to the issue creation wizard (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/330fcc221fb583f0b119f34191f735a73b827378\"\u003e\u003ccode\u003e330fcc2\u003c/code\u003e\u003c/a\u003e Version 1.11.0-rc02\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/e31cef6e9f2d26794be7d75ecbf3033b6432d582\"\u003e\u003ccode\u003ee31cef6\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/dc6e9f61eaf3a67f4bf474a7987aedc3f16cef37\"\u003e\u003ccode\u003edc6e9f6\u003c/code\u003e\u003c/a\u003e Restore Promise-related functions on Wasm/JS as HIDDEN (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/compare/1.9.0...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `io.ktor:ktor-server-core` from 3.0.3 to 3.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ktorio/ktor/releases\"\u003eio.ktor:ktor-server-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.5.0\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003ePublished 14 May 2026\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-8421\"\u003eKTOR-8421\u003c/a\u003e Route.contentType should support multiple ContentType\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-7961\"\u003eKTOR-7961\u003c/a\u003e Add known TDM headers to the HttpHeaders object\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9418\"\u003eKTOR-9418\u003c/a\u003e Support getAs from the root ApplicationConfig\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9559\"\u003eKTOR-9559\u003c/a\u003e DNS configuration for the Apache5 client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9554\"\u003eKTOR-9554\u003c/a\u003e DNS configuration for OkHttp client engine\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9555\"\u003eKTOR-9555\u003c/a\u003e Custom SSE heartbeat function\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-8914\"\u003eKTOR-8914\u003c/a\u003e Dependency injection: read annotations in function references\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-8300\"\u003eKTOR-8300\u003c/a\u003e Sessions: Add a way to create a user session shared for all user devices or look up sessions of the same user\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9521\"\u003eKTOR-9521\u003c/a\u003e Upgrade to Kotlin 2.3.21\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9276\"\u003eKTOR-9276\u003c/a\u003e Make DynamicProviderConfig.authenticateFunction suspend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9491\"\u003eKTOR-9491\u003c/a\u003e Provide parameter validation convenience functions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9506\"\u003eKTOR-9506\u003c/a\u003e OpenAPI: Support prefixItems in JsonSchema for tuple type definitions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-470\"\u003eKTOR-470\u003c/a\u003e Add an option to not resend the session cookie if the session data wasn't changed.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9355\"\u003eKTOR-9355\u003c/a\u003e Deprecate HttpHeaders.AcceptCharset\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-7659\"\u003eKTOR-7659\u003c/a\u003e Make ktor-network compatible with ES modules for nodejs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9350\"\u003eKTOR-9350\u003c/a\u003e JS: Make ES2015 the default target for tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-7578\"\u003eKTOR-7578\u003c/a\u003e Update Digest authentication implementation according to RFC 7616\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9503\"\u003eKTOR-9503\u003c/a\u003e The JacksonConverter.streamRequestBody property name is confusing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9552\"\u003eKTOR-9552\u003c/a\u003e Deprecation notice for io.ktor.server.auth.Principal does not explain what to use instead\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-7458\"\u003eKTOR-7458\u003c/a\u003e Jetty Jakarta: Provide an easy way to disable SNI hostname validation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9354\"\u003eKTOR-9354\u003c/a\u003e Websockets: webSocket builder function should return a Route to be describable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9488\"\u003eKTOR-9488\u003c/a\u003e Nonce and hex function performance optimizations\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugfixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9524\"\u003eKTOR-9524\u003c/a\u003e Netty response hangs after connection lost\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9542\"\u003eKTOR-9542\u003c/a\u003e Netty: The request handler runs on worker event loop instead of call event loop since 3.4.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9531\"\u003eKTOR-9531\u003c/a\u003e Netty server intermittently drops requests after upgrading to 3.4.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-8151\"\u003eKTOR-8151\u003c/a\u003e MicrometerMetrics: \u0026quot;MeterFilters configured after a Meter has been registered\u0026quot; warning when a metric is registered before installing the plugin\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9411\"\u003eKTOR-9411\u003c/a\u003e Darwin throws DarwinHttpRequestException instead of FrameTooBigException\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-8320\"\u003eKTOR-8320\u003c/a\u003e CallLogging: plugin usage in testApplication breaks console standard output\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-8906\"\u003eKTOR-8906\u003c/a\u003e Jackson, with request body streaming on, exhausts Dispatchers.IO\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-8709\"\u003eKTOR-8709\u003c/a\u003e Websockets: Unable to close session with a custom CloseReason\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9567\"\u003eKTOR-9567\u003c/a\u003e Flaky UnixSockets on Windows: WSAEOPNOTSUPP from bind()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9183\"\u003eKTOR-9183\u003c/a\u003e A client call wrapped with \u003ccode\u003ewithTimeout\u003c/code\u003e throws a generic CancellationException instead of TimeoutCancellationException\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-8199\"\u003eKTOR-8199\u003c/a\u003e Autoreloading: default watch patterns don't match anything when project path contain spaces\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9549\"\u003eKTOR-9549\u003c/a\u003e Kotlin/JS: ktor-ktor-client-core.mjs is incompatible with Vite: toRaw naming conflict\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9544\"\u003eKTOR-9544\u003c/a\u003e Apache: body channel not cancelled when caller scope is cancelled\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9546\"\u003eKTOR-9546\u003c/a\u003e HttpClient: cancelling ByteReadChannel body does not propagate to engine\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-455\"\u003eKTOR-455\u003c/a\u003e Content-Disposition additional parameters should be inside quotes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9500\"\u003eKTOR-9500\u003c/a\u003e RawSourceChannel returns false positive on awaitContent\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-646\"\u003eKTOR-646\u003c/a\u003e Netty engine still print annoying exceptions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9527\"\u003eKTOR-9527\u003c/a\u003e Curl: Freeze when receiving large responses\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9460\"\u003eKTOR-9460\u003c/a\u003e Curl: Can't build shared library with Ktor 3.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9483\"\u003eKTOR-9483\u003c/a\u003e Curl: backpressure implementation is never used\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ktorio/ktor/blob/main/CHANGELOG.md\"\u003eio.ktor:ktor-server-core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.5.0\u003c/h1\u003e\n\u003cblockquote\u003e\n\u003cp\u003ePublished 14 May 2026\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-8421\"\u003eKTOR-8421\u003c/a\u003e Route.contentType should support multiple ContentType\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-7961\"\u003eKTOR-7961\u003c/a\u003e Add known TDM headers to the HttpHeaders object\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9418\"\u003eKTOR-9418\u003c/a\u003e Support getAs from the root ApplicationConfig\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9559\"\u003eKTOR-9559\u003c/a\u003e DNS configuration for the Apache5 client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9554\"\u003eKTOR-9554\u003c/a\u003e DNS configuration for OkHttp client engine\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9555\"\u003eKTOR-9555\u003c/a\u003e Custom SSE heartbeat function\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-8914\"\u003eKTOR-8914\u003c/a\u003e Dependency injection: read annotations in function references\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-8300\"\u003eKTOR-8300\u003c/a\u003e Sessions: Add a way to create a user session shared for all user devices or look up sessions of the same user\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9521\"\u003eKTOR-9521\u003c/a\u003e Upgrade to Kotlin 2.3.21\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9276\"\u003eKTOR-9276\u003c/a\u003e Make DynamicProviderConfig.authenticateFunction suspend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9491\"\u003eKTOR-9491\u003c/a\u003e Provide parameter validation convenience functions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9506\"\u003eKTOR-9506\u003c/a\u003e OpenAPI: Support prefixItems in JsonSchema for tuple type definitions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-470\"\u003eKTOR-470\u003c/a\u003e Add an option to not resend the session cookie if the session data wasn't changed.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9355\"\u003eKTOR-9355\u003c/a\u003e Deprecate HttpHeaders.AcceptCharset\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-7659\"\u003eKTOR-7659\u003c/a\u003e Make ktor-network compatible with ES modules for nodejs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-9350\"\u003eKTOR-9350\u003c/a\u003e JS: Make ES2015 the default target for tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KTOR-7578\"\u003eKTOR-7578\u003c/a\u003e Update Digest authentication implementation according...\n\n_Description has been truncated_","html_url":"https://github.com/FlintWave/SearchMob/pull/12","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlintWave%2FSearchMob/issues/12","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12/packages"}},{"old_version":"3.6.1","new_version":"3.7.0","update_type":"minor","path":null,"pr_created_at":"2026-05-24T04:44:39.000Z","version_change":"3.6.1 → 3.7.0","issue":{"uuid":"4510516408","node_id":"PR_kwDOSGEGis7eupQt","number":948,"state":"open","title":"build(deps): Bump the minor-and-patch group with 38 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-24T04:44:39.000Z","updated_at":"2026-05-24T04:45:05.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): Bump","group_name":"minor-and-patch","update_count":38,"packages":[{"name":"androidx.core:core-ktx","old_version":"1.15.0","new_version":"1.18.0"},{"name":"androidx.activity:activity-compose","old_version":"1.9.3","new_version":"1.13.0"},{"name":"androidx.core:core-splashscreen","old_version":"1.0.1","new_version":"1.2.0"},{"name":"com.google.android.material:material","old_version":"1.12.0","new_version":"1.14.0","repository_url":"https://github.com/material-components/material-components-android"},{"name":"androidx.credentials:credentials","old_version":"1.3.0","new_version":"1.6.0"},{"name":"androidx.credentials:credentials-play-services-auth","old_version":"1.3.0","new_version":"1.6.0"},{"name":"com.google.android.libraries.identity.googleid:googleid","old_version":"1.1.1","new_version":"1.2.0"},{"name":"androidx.exifinterface:exifinterface","old_version":"1.3.7","new_version":"1.4.2"},{"name":"androidx.navigation:navigation-compose","old_version":"2.8.5","new_version":"2.9.8"},{"name":"androidx.hilt:hilt-navigation-compose","old_version":"1.2.0","new_version":"1.3.0"},{"name":"androidx.hilt:hilt-work","old_version":"1.2.0","new_version":"1.3.0"},{"name":"androidx.hilt:hilt-compiler","old_version":"1.2.0","new_version":"1.3.0"},{"name":"androidx.room:room-runtime","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-ktx","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-compiler","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.datastore:datastore-preferences","old_version":"1.1.1","new_version":"1.2.1"},{"name":"androidx.work:work-runtime-ktx","old_version":"2.10.0","new_version":"2.11.2"},{"name":"org.jetbrains.kotlinx:kotlinx-serialization-json","old_version":"1.7.3","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.serialization"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-android","old_version":"1.9.0","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-test","old_version":"1.9.0","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"io.github.jan-tennert.supabase:bom","old_version":"3.0.3","new_version":"3.6.0","repository_url":"https://github.com/supabase-community/supabase-kt"},{"name":"io.ktor:ktor-client-okhttp","old_version":"3.0.2","new_version":"3.5.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.coil-kt.coil3:coil-compose","old_version":"3.0.4","new_version":"3.4.0","repository_url":"https://github.com/coil-kt/coil"},{"name":"io.coil-kt.coil3:coil-network-okhttp","old_version":"3.0.4","new_version":"3.4.0","repository_url":"https://github.com/coil-kt/coil"},{"name":"androidx.sqlite:sqlite","old_version":"2.4.0","new_version":"2.6.2"},{"name":"com.google.android.play:integrity","old_version":"1.4.0","new_version":"1.6.0"},{"name":"io.mockk:mockk","old_version":"1.13.13","new_version":"1.14.9","repository_url":"https://github.com/mockk/mockk"},{"name":"androidx.test.ext:junit","old_version":"1.2.1","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.6.1","new_version":"3.7.0"},{"name":"org.robolectric:robolectric","old_version":"4.14.1","new_version":"4.16.1","repository_url":"https://github.com/robolectric/robolectric"},{"name":"androidx.test:core","old_version":"1.6.1","new_version":"1.7.0"},{"name":"androidx.test:runner","old_version":"1.6.2","new_version":"1.7.0"},{"name":"org.jetbrains.kotlin.android","old_version":"2.1.0","new_version":"2.1.21","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.1.0","new_version":"2.1.21","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.1.0","new_version":"2.1.21","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.google.devtools.ksp","old_version":"2.1.0-1.0.29","new_version":"2.1.21-2.0.2","repository_url":"https://github.com/google/ksp"},{"name":"com.google.gms.google-services","old_version":"4.4.2","new_version":"4.4.4"},{"name":"com.google.firebase.crashlytics","old_version":"3.0.2","new_version":"3.0.7"}],"path":null,"ecosystem":"maven"},"body":"Bumps the minor-and-patch group with 38 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| androidx.core:core-ktx | `1.15.0` | `1.18.0` |\n| androidx.activity:activity-compose | `1.9.3` | `1.13.0` |\n| androidx.core:core-splashscreen | `1.0.1` | `1.2.0` |\n| [com.google.android.material:material](https://github.com/material-components/material-components-android) | `1.12.0` | `1.14.0` |\n| androidx.credentials:credentials | `1.3.0` | `1.6.0` |\n| androidx.credentials:credentials-play-services-auth | `1.3.0` | `1.6.0` |\n| com.google.android.libraries.identity.googleid:googleid | `1.1.1` | `1.2.0` |\n| androidx.exifinterface:exifinterface | `1.3.7` | `1.4.2` |\n| androidx.navigation:navigation-compose | `2.8.5` | `2.9.8` |\n| androidx.hilt:hilt-navigation-compose | `1.2.0` | `1.3.0` |\n| androidx.hilt:hilt-work | `1.2.0` | `1.3.0` |\n| androidx.hilt:hilt-compiler | `1.2.0` | `1.3.0` |\n| androidx.room:room-runtime | `2.6.1` | `2.8.4` |\n| androidx.room:room-ktx | `2.6.1` | `2.8.4` |\n| androidx.room:room-compiler | `2.6.1` | `2.8.4` |\n| androidx.datastore:datastore-preferences | `1.1.1` | `1.2.1` |\n| androidx.work:work-runtime-ktx | `2.10.0` | `2.11.2` |\n| [org.jetbrains.kotlinx:kotlinx-serialization-json](https://github.com/Kotlin/kotlinx.serialization) | `1.7.3` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-android](https://github.com/Kotlin/kotlinx.coroutines) | `1.9.0` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-test](https://github.com/Kotlin/kotlinx.coroutines) | `1.9.0` | `1.11.0` |\n| [io.github.jan-tennert.supabase:bom](https://github.com/supabase-community/supabase-kt) | `3.0.3` | `3.6.0` |\n| [io.ktor:ktor-client-okhttp](https://github.com/ktorio/ktor) | `3.0.2` | `3.5.0` |\n| [io.coil-kt.coil3:coil-compose](https://github.com/coil-kt/coil) | `3.0.4` | `3.4.0` |\n| [io.coil-kt.coil3:coil-network-okhttp](https://github.com/coil-kt/coil) | `3.0.4` | `3.4.0` |\n| androidx.sqlite:sqlite | `2.4.0` | `2.6.2` |\n| com.google.android.play:integrity | `1.4.0` | `1.6.0` |\n| [io.mockk:mockk](https://github.com/mockk/mockk) | `1.13.13` | `1.14.9` |\n| androidx.test.ext:junit | `1.2.1` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.6.1` | `3.7.0` |\n| [org.robolectric:robolectric](https://github.com/robolectric/robolectric) | `4.14.1` | `4.16.1` |\n| androidx.test:core | `1.6.1` | `1.7.0` |\n| androidx.test:runner | `1.6.2` | `1.7.0` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.1.0` | `2.1.21` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.1.0` | `2.1.21` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.1.0` | `2.1.21` |\n| [com.google.devtools.ksp](https://github.com/google/ksp) | `2.1.0-1.0.29` | `2.1.21-2.0.2` |\n| com.google.gms.google-services | `4.4.2` | `4.4.4` |\n| com.google.firebase.crashlytics | `3.0.2` | `3.0.7` |\n\nUpdates `androidx.core:core-ktx` from 1.15.0 to 1.18.0\n\nUpdates `androidx.activity:activity-compose` from 1.9.3 to 1.13.0\n\nUpdates `androidx.core:core-splashscreen` from 1.0.1 to 1.2.0\n\nUpdates `com.google.android.material:material` from 1.12.0 to 1.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/material-components/material-components-android/releases\"\u003ecom.google.android.material:material's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.14.0\u003c/h2\u003e\n\u003ch1\u003eNew in 1.14.0!\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eExpressive Themes (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/getting-started.md#material3expressive-themes\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Lists (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/List.md\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Button Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/CommonButton.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Icon Button Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/IconButton.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Button Group Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/ButtonGroup.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive FAB Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/FloatingActionButton.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Top App Bar Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/TopAppBar.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Navigation Bar (BottomNavigationView) Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/BottomNavigation.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Navigation Rail Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/NavigationRail.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Search Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/Search.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Progress Indicator Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/ProgressIndicator.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Slider Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/Slider.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEmphasized Typescale (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/theming/Typography.md#emphasized-scale\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImportant\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRequired \u003ccode\u003eminSdkVersion\u003c/code\u003e is now 23 or higher, for Material and \u003ca href=\"https://developer.android.com/jetpack/androidx/versions#version-table\"\u003eAndroidX\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eLibrary is now built with Android Gradle Plugin (AGP) 8.11.1 and Gradle 8.13.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDependency Updates\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eDependency\u003c/th\u003e\n\u003cth\u003ePrevious version\u003c/th\u003e\n\u003cth\u003eNew version\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.constraintlayout:constraintlayout\u003c/td\u003e\n\u003ctd\u003e2.1.0\u003c/td\u003e\n\u003ctd\u003e2.2.1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.core:core\u003c/td\u003e\n\u003ctd\u003e1.6.0\u003c/td\u003e\n\u003ctd\u003e1.16.0\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.customview:customview\u003c/td\u003e\n\u003ctd\u003eN/A\u003c/td\u003e\n\u003ctd\u003e1.2.0\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ecom.android.tools.build:gradle\u003c/td\u003e\n\u003ctd\u003e8.7.3\u003c/td\u003e\n\u003ctd\u003e8.11.1\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eLibrary Updates\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eAppBar\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eFixed the bug that setBackground will reset the internal MaterialShapeDrawable for lift-on-scroll feature. (1adc50110ed6491661f89aa535355b1480fac73a)\u003c/li\u003e\n\u003cli\u003eAdd support for navigation button with circle background (015e0534e1a6205224097f258102f913832f99ed)\u003c/li\u003e\n\u003cli\u003eImprove keyboard navigation in TopAppBar catalog demos (98a73a61d272d3e38ee87dd4b322f7787c374a9c)\u003c/li\u003e\n\u003cli\u003eRemoved special key shortcut and keyboard navigation cluster for top app bar for correct keyboard navigation a11y. (ee52adbf051f744f2345ec5b7f4ab4df3b101d4d)\u003c/li\u003e\n\u003cli\u003eUpdated ripple color on actions in M3 toolbar. (3b971c9fe9d6ae9a175d96a448a2e740fa97996f)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBottomAppBar\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eRemove special key shortcut and keyboard navigation cluster for bottom app bar for correct keyboard navigation a11y. (5c73d7a9284fb8e8409452bb95751bf70912acfd)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBottomNavigationView\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eFix navigation item layout in non-compact windows (78189012dada1fae4516eaccab7b8f75c481aa73)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBottomSheet\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecated enableEdgeToEdge for bottom sheet dialogs on API 35+. (603f1ef9d5223fc06fa432c4175473eda2138330)\u003c/li\u003e\n\u003cli\u003ePrevent ACTION_DOWN events on the BottomSheetHandleDragView from setting touchingScrollChild to true. (af7f254bf660704368d46e630d34a81c479fa1c7)\u003c/li\u003e\n\u003cli\u003eFixed keyboard animation on Android 14 (a0b4dfa8769f98851efe97569c900f75eb0d5ef2)\u003c/li\u003e\n\u003cli\u003eFixed crash when protections are set before setContentView is called (d2119098489f6f6b55d77f2c7966b8ddf16c90ed)\u003c/li\u003e\n\u003cli\u003eAdded half-expanded state description for accessibility (95e7b452088d88005982a3f29ec212ef7ee8696d)\u003c/li\u003e\n\u003cli\u003eAdded support for androidx.core ProtectionLayout API and update dependency to 1.16 (e7f9f639d2f4a3b9f619ce704df82cbb14e49222)\u003c/li\u003e\n\u003cli\u003eMake handle respond to keyboard input (1ee07687af2c4c84f515e45c1b809d65aeecbbf4)\u003c/li\u003e\n\u003cli\u003eDelete duplicate \u0026quot;Handling insets and fullscreen\u0026quot; section (5e7e8238f7be448af6b4db4b2ad6128737c0bc50)\u003c/li\u003e\n\u003cli\u003eAdded support for Nested Scrolling with multiple nested scroll children. (4e4e8f3388beb7e82a87cb67142aa34444a79740)\u003c/li\u003e\n\u003cli\u003eMake behavior_draggableOnNestedScroll public (a67afdff0d207239d0f427a37e44074936db3166)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/66c334b7946dabf33adfe1a2b7cad6bcaa4ea3ad\"\u003e\u003ccode\u003e66c334b\u003c/code\u003e\u003c/a\u003e [Release] Update library version to 1.14.0 stable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/12e57b5143609a96de8516426336bcf3b3e321f7\"\u003e\u003ccode\u003e12e57b5\u003c/code\u003e\u003c/a\u003e [Focus Rings] Add setters and getters for stroke widths and inner inset\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/f4652d6af613395835b17ce329ceb03f43fc4a84\"\u003e\u003ccode\u003ef4652d6\u003c/code\u003e\u003c/a\u003e [NavigationView] Improve focus saving when opening NavigationView\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/14b9ac97b0863fa7fea6f59954441cea9f4e7e14\"\u003e\u003ccode\u003e14b9ac9\u003c/code\u003e\u003c/a\u003e [Focus Rings] Add setters for outer and inner stroke colors and for refreshin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/d6de1da0f5532090d8b7de697e13c180f56e11e1\"\u003e\u003ccode\u003ed6de1da\u003c/code\u003e\u003c/a\u003e [A11y][BottomSheet] Auto-expand when a focused view is off-screen in non-touc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/41cfb65e8393cd7ff0f9dc082b400c852405e9cc\"\u003e\u003ccode\u003e41cfb65\u003c/code\u003e\u003c/a\u003e [A11y][NavigationView] Request and restore focus when opened and closed in Dr...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/8f63e9485bf6da5a9a0aaefa4bbf26c8ec1364a5\"\u003e\u003ccode\u003e8f63e94\u003c/code\u003e\u003c/a\u003e [Catalog] Fix lift on scroll glitchiness in All Components demo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/80aa0cc0233af0e81a846271de0d5218beeceeaf\"\u003e\u003ccode\u003e80aa0cc\u003c/code\u003e\u003c/a\u003e [Release] Update library version to 1.14.0-rc01\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/fd44c9d58699e18de06ca5de8687fe79f390568b\"\u003e\u003ccode\u003efd44c9d\u003c/code\u003e\u003c/a\u003e [Button] [SplitButton] Fix inset and optical centering issue for SplitButton ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/e6ae416e7fc791d733eedde96ffea66d313ef231\"\u003e\u003ccode\u003ee6ae416\u003c/code\u003e\u003c/a\u003e [SearchView] Make sure IME is hidden when EditText loses focus\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/material-components/material-components-android/compare/1.12.0...1.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.credentials:credentials` from 1.3.0 to 1.6.0\n\nUpdates `androidx.credentials:credentials-play-services-auth` from 1.3.0 to 1.6.0\n\nUpdates `androidx.credentials:credentials-play-services-auth` from 1.3.0 to 1.6.0\n\nUpdates `com.google.android.libraries.identity.googleid:googleid` from 1.1.1 to 1.2.0\n\nUpdates `androidx.exifinterface:exifinterface` from 1.3.7 to 1.4.2\n\nUpdates `androidx.navigation:navigation-compose` from 2.8.5 to 2.9.8\n\nUpdates `androidx.hilt:hilt-navigation-compose` from 1.2.0 to 1.3.0\n\nUpdates `androidx.hilt:hilt-work` from 1.2.0 to 1.3.0\n\nUpdates `androidx.hilt:hilt-compiler` from 1.2.0 to 1.3.0\n\nUpdates `androidx.hilt:hilt-compiler` from 1.2.0 to 1.3.0\n\nUpdates `androidx.room:room-runtime` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `androidx.datastore:datastore-preferences` from 1.1.1 to 1.2.1\n\nUpdates `androidx.work:work-runtime-ktx` from 2.10.0 to 2.11.2\n\nUpdates `org.jetbrains.kotlinx:kotlinx-serialization-json` from 1.7.3 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-serialization-json's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.20 and provides a new Json exceptions API and some bugfixes and improvements.\u003c/p\u003e\n\u003ch2\u003eExpose Json exceptions structure\u003c/h2\u003e\n\u003cp\u003eTo make working with exceptions easier and providing proper error codes in e.g., REST APIs,\nclasses \u003ccode\u003eJsonException\u003c/code\u003e, \u003ccode\u003eJsonDecodingException\u003c/code\u003e, and \u003ccode\u003eJsonEncodingException\u003c/code\u003e are now public.\nThey have relevant public properties, such as \u003ccode\u003eshortMessage\u003c/code\u003e, \u003ccode\u003epath\u003c/code\u003e, \u003ccode\u003eoffset\u003c/code\u003e, and others.\nThis API is currently experimental, and we're going to improve it further in the subsequent releases.\nSee the linked issues for the details: \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1930\"\u003e#1930\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1877\"\u003e#1877\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eAbility to hide user input from exception messages for security/privacy reasons.\u003c/h2\u003e\n\u003cp\u003eHistorically, exception messages in kotlinx.serialization often included the input Json itself for debuggability reason.\nSuch behavior may pose additional challenges for logging, analytics, and other systems, since\na system is not always allowed to store user data due to privacy/security reasons, which imposes additional sanitation logic.\nTo address this issue, a new property \u003ccode\u003eexceptionsWithDebugInfo\u003c/code\u003e is added to \u003ccode\u003eJsonConfiguration\u003c/code\u003e.\nDisable it to hide user input from exception messages.\nIMPORTANT: This behavior will be enabled by default when this property becomes stable.\nSee \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2590\"\u003e#2590\u003c/a\u003e for more details.\u003c/p\u003e\n\u003ch2\u003eBugfixes and improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCBOR: Relax value range check when decoding numbers (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse a specialized writeDecimalLong method for IO stream integrations in Json (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3152\"\u003e#3152\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.0\u003c/h2\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.0 and contains all of the changes from 1.10.0-RC.\nThe only additional change is a fix for ProtoBuf packing of Kotlin unsigned types (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3079\"\u003e#3079\u003c/a\u003e).\nBig thanks to \u003ca href=\"https://github.com/KosmX\"\u003eKosmX\u003c/a\u003e for contributing the fix.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eFor your convenience, the changelog for 1.10.0-RC is duplicated below:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eStabilization of APIs\u003c/h2\u003e\n\u003cp\u003ekotlinx-serialization 1.10 and subsequent releases will be focused on stabilization of existing APIs.\nThe following APIs and configuration options are no longer experimental because they're widely used without any known major issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eJson\u003c/code\u003e configuration options: \u003ccode\u003edecodeEnumsCaseInsensitive\u003c/code\u003e, \u003ccode\u003eallowTrailingComma\u003c/code\u003e, \u003ccode\u003eallowComments\u003c/code\u003e, and \u003ccode\u003eprettyPrintIndent\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3100\"\u003e#3100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@EncodeDefault\u003c/code\u003e annotation and its modes. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3106\"\u003e#3106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonUnquotedLiteral\u003c/code\u003e constructor function (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2900\"\u003e#2900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonPrimitive\u003c/code\u003e constructor function overloads that accept unsigned types. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJSON DSL functions on \u003ccode\u003eJsonElement\u003c/code\u003e with \u003ccode\u003eNothing?\u003c/code\u003e overloads. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eReadiness for return value checker\u003c/h2\u003e\n\u003cp\u003eKotlin 2.3.0 \u003ca href=\"https://kotlinlang.org/docs/whatsnew23.html#unused-return-value-checker\"\u003eintroduces a new feature\u003c/a\u003e aimed at helping you to catch bugs related to the accidentally ignored return value of the function.\nkotlinx-serialization 1.10.0-RC code is fully marked for this feature, meaning that you can get warnings for unused function calls like \u003ccode\u003eJson.encodeToString(...)\u003c/code\u003e. To get the warnings, the feature has to be enabled in your project as \u003ca href=\"https://kotlinlang.org/docs/unused-return-value-checker.html#configure-the-unused-return-value-checker\"\u003edescribed here\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ePolymorphism improvements\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md\"\u003eorg.jetbrains.kotlinx:kotlinx-serialization-json's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.11.0 / 2026-04-10\u003c/h1\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.20 and provides new Json exceptions API and some bugfixes and improvements.\u003c/p\u003e\n\u003ch2\u003eExpose Json exceptions structure\u003c/h2\u003e\n\u003cp\u003eTo make working with exceptions easier and providing proper error codes in e.g., REST APIs,\nclasses \u003ccode\u003eJsonException\u003c/code\u003e, \u003ccode\u003eJsonDecodingException\u003c/code\u003e, and \u003ccode\u003eJsonEncodingException\u003c/code\u003e are now public.\nThey have relevant public properties, such as \u003ccode\u003eshortMessage\u003c/code\u003e, \u003ccode\u003epath\u003c/code\u003e, \u003ccode\u003eoffset\u003c/code\u003e, and others.\nThis API is currently experimental, and we're going to improve it further in the subsequent releases.\nSee the linked issues for the details: \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1930\"\u003e#1930\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1877\"\u003e#1877\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eAbility to hide user input from exception messages for security/privacy reasons.\u003c/h2\u003e\n\u003cp\u003eHistorically, exception messages in kotlinx.serialization often included the input Json itself for debuggability reason.\nSuch behavior may pose additional challenges for logging, analytics, and other systems, since\na system is not always allowed to store user data due to privacy/security reasons, which imposes additional sanitation logic.\nTo address this issue, a new property \u003ccode\u003eexceptionsWithDebugInfo\u003c/code\u003e is added to \u003ccode\u003eJsonConfiguration\u003c/code\u003e.\nDisable it to hide user input from exception messages.\nIMPORTANT: This behavior will be enabled by default when this property becomes stable.\nSee \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2590\"\u003e#2590\u003c/a\u003e for more details.\u003c/p\u003e\n\u003ch2\u003eBugfixes and improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCBOR: Relax value range check when decoding numbers (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse a specialized writeDecimalLong method for IO stream integrations in Json (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3152\"\u003e#3152\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.10.0 / 2026-01-21\u003c/h1\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.0 and contains all of the changes from 1.10.0-RC.\nThe only additional change is a fix for ProtoBuf packing of Kotlin unsigned types (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3079\"\u003e#3079\u003c/a\u003e).\nBig thanks to \u003ca href=\"https://github.com/KosmX\"\u003eKosmX\u003c/a\u003e for contributing the fix.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eFor your convenience, the changelog for 1.10.0-RC is duplicated below:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eStabilization of APIs\u003c/h2\u003e\n\u003cp\u003ekotlinx-serialization 1.10 and subsequent releases will be focused on stabilization of existing APIs.\nThe following APIs and configuration options are no longer experimental because they're widely used without any known major issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eJson\u003c/code\u003e configuration options: \u003ccode\u003edecodeEnumsCaseInsensitive\u003c/code\u003e, \u003ccode\u003eallowTrailingComma\u003c/code\u003e, \u003ccode\u003eallowComments\u003c/code\u003e, and \u003ccode\u003eprettyPrintIndent\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3100\"\u003e#3100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@EncodeDefault\u003c/code\u003e annotation and its modes. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3106\"\u003e#3106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonUnquotedLiteral\u003c/code\u003e constructor function (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2900\"\u003e#2900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonPrimitive\u003c/code\u003e constructor function overloads that accept unsigned types. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJSON DSL functions on \u003ccode\u003eJsonElement\u003c/code\u003e with \u003ccode\u003eNothing?\u003c/code\u003e overloads. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eReadiness for return value checker\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/6956af2e6073347c7832c3c5b374fa3b5a345956\"\u003e\u003ccode\u003e6956af2\u003c/code\u003e\u003c/a\u003e Prepare 1.11 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/390d84c68a19cbf7fa453dec22a333648bde49b4\"\u003e\u003ccode\u003e390d84c\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/431fe2dc0a144300b33038820d24fc30302c8abc\"\u003e\u003ccode\u003e431fe2d\u003c/code\u003e\u003c/a\u003e Use local repo for publishing (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3171\"\u003e#3171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/05c12b60a6717b99053fb82e1f94d2f859727374\"\u003e\u003ccode\u003e05c12b6\u003c/code\u003e\u003c/a\u003e Add usage attribute to \u0026quot;testRepositories\u0026quot; configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/a4e1f082ef2e72caa139b474c05657de6015da20\"\u003e\u003ccode\u003ea4e1f08\u003c/code\u003e\u003c/a\u003e Bump Kover version to 0.9.8 release (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3174\"\u003e#3174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/304e858ccc7066854637d86ab80056f5f2bcc094\"\u003e\u003ccode\u003e304e858\u003c/code\u003e\u003c/a\u003e Expose Json exceptions structure (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/4a0338ef5093d765138151bc30282e909ca459e4\"\u003e\u003ccode\u003e4a0338e\u003c/code\u003e\u003c/a\u003e Included G Play SDK verification file for core-jvm (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3169\"\u003e#3169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/421f64c74f0ea6d4a3cdc8dd483505366e3f6c8f\"\u003e\u003ccode\u003e421f64c\u003c/code\u003e\u003c/a\u003e CBOR: Relax value range check when decoding numbers (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/85a4f126ec491c77e2b3686cc22c1bae27a20783\"\u003e\u003ccode\u003e85a4f12\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/bd38b0e49bce38d1a55576e89856bc63990167ed\"\u003e\u003ccode\u003ebd38b0e\u003c/code\u003e\u003c/a\u003e Remove dead code\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/compare/v1.7.3...v1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-android` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874\"\u003e\u003ccode\u003e8564f65\u003c/code\u003e\u003c/a\u003e Version 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c\"\u003e\u003ccode\u003ea4c6af9\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9\"\u003e\u003ccode\u003eef917b4\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd\"\u003e\u003ccode\u003e5ebc421\u003c/code\u003e\u003c/a\u003e Update the release procedure description (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80\"\u003e\u003ccode\u003e95f46a0\u003c/code\u003e\u003c/a\u003e Remove old maven repository settings (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672\"\u003e#4672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc\"\u003e\u003ccode\u003eb4f4f0a\u003c/code\u003e\u003c/a\u003e Fix package name of \u003ccode\u003eToMapCollectionSamplesTest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674\"\u003e#4674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/86738dca7dc9ac82249abc8206263fa0065ee631\"\u003e\u003ccode\u003e86738dc\u003c/code\u003e\u003c/a\u003e Added templates to the issue creation wizard (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/330fcc221fb583f0b119f34191f735a73b827378\"\u003e\u003ccode\u003e330fcc2\u003c/code\u003e\u003c/a\u003e Version 1.11.0-rc02\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/e31cef6e9f2d26794be7d75ecbf3033b6432d582\"\u003e\u003ccode\u003ee31cef6\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/dc6e9f61eaf3a67f4bf474a7987aedc3f16cef37\"\u003e\u003ccode\u003edc6e9f6\u003c/code\u003e\u003c/a\u003e Restore Promise-related functions on Wasm/JS as HIDDEN (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/compare/1.9.0...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-test` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-test's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-test's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eVersion 1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874\"\u003e\u003ccode\u003e8564f65\u003c/code\u003e\u003c/a\u003e Version 1.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c\"\u003e\u003ccode\u003ea4c6af9\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9\"\u003e\u003ccode\u003eef917b4\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645\"\u003e#4645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd\"\u003e\u003ccode\u003e5ebc421\u003c/code\u003e\u003c/a\u003e Update the release procedure description (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670\"\u003e#4670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80\"\u003e\u003ccode\u003e95f46a0\u003c/code\u003e\u003c/a\u003e Remove old maven repository settings (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672\"\u003e#4672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc\"\u003e\u003ccode\u003eb4f4f0a\u003c/code\u003e\u003c/a\u003e Fix package name of \u003ccode\u003eToMapCollectionSamplesTest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674\"\u003e#4674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/86738dca7dc9ac82249abc8206263fa0065ee631\"\u003e\u003ccode\u003e86738dc\u003c/code\u003e\u003c/a\u003e Added templates to the issue creation wizard (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/330fcc221fb583f0b119f34191f735a73b827378\"\u003e\u003ccode\u003e330fcc2\u003c/code\u003e\u003c/a\u003e Version 1.11.0-rc02\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/e31cef6e9f2d26794be7d75ecbf3033b6432d582\"\u003e\u003ccode\u003ee31cef6\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/commit/dc6e9f61eaf3a67f4bf474a7987aedc3f16cef37\"\u003e\u003ccode\u003edc6e9f6\u003c/code\u003e\u003c/a\u003e Restore Promise-related functions on Wasm/JS as HIDDEN (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/compare/1.9.0...1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-test` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-test's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eflowOn\u003c/code\u003e incorrectly handling \u003ccode\u003eThreadContextElement\u003c/code\u003e updates (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403\"\u003e#4403\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed exceptions in user-supplied \u003ccode\u003eThread.UncaughtExceptionHandler\u003c/code\u003e instances causing the internal coroutines machinery to fail (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516\"\u003e#4516\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCoroutineDispatcher.asScheduler\u003c/code\u003e in the RxJava integration not cancelling outstanding work when a \u003ccode\u003eWorker\u003c/code\u003e gets cancelled, which led to memory leaks in some scenarios (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615\"\u003e#4615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSharedFlow\u003c/code\u003e entering an invalid state when a subscriber and an emitter are cancelled simultaneously (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583\"\u003e#4583\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed an R8 optimization leading to \u003ccode\u003eshareIn\u003c/code\u003e/\u003ccode\u003estateIn\u003c/code\u003e coroutines getting garbage-collected (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646\"\u003e#4646\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/solevic\"\u003e\u003ccode\u003e@​solevic\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSmall additions\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eCompletableDeferred.asDeferred\u003c/code\u003e for obtaining a read-only \u003ccode\u003eDeferred\u003c/code\u003e view (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408\"\u003e#4408\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eSharedFlow.asFlow\u003c/code\u003e for obtaining a \u003ccode\u003eFlow\u003c/code\u003e view with hidden hot flow semantics (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530\"\u003e#4530\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/g000sha256\"\u003e\u003ccode\u003e@​g000sha256\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow.collectLatest\u003c/code\u003e overload returning \u003ccode\u003eNothing\u003c/code\u003e to assist with finding unreachable code (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454\"\u003e#4454\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eReceiveChannel.consumeTo\u003c/code\u003e for consuming a \u003ccode\u003eReceiveChannel\u003c/code\u003e into a \u003ccode\u003eMutableCollection\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520\"\u003e#4520\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e overload returning a \u003ccode\u003eStateFlow\u0026lt;T\u0026gt;\u003c/code\u003e, similar to \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;.onSubscription\u003c/code\u003e returning \u003ccode\u003eSharedFlow\u0026lt;T\u0026gt;\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275\"\u003e#4275\u003c/a\u003e). Thanks, \u003ca href=\"https://github.com/xit0c\"\u003e\u003ccode\u003e@​xit0c\u003c/code\u003e\u003c/a\u003e!\u003c/li\u003e\n\u003cli\u003eAdded terminal \u003ccode\u003eFlow\u003c/code\u003e operators for collecting a \u003ccode\u003eFlow\u003c/code\u003e to a \u003ccode\u003eMap\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541\"\u003e#1541\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChangelog relative to version 1.11.0\u003c/h3\u003e\n\u003cp\u003eNo changes, only the version is increased.\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc02\u003c/h2\u003e\n\u003cp\u003eRestored binary compatibility with 1.10.2 and older versions on Wasm/JS for usages of \u003ccode\u003ePromise\u003c/code\u003e-related functions (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661\"\u003e#4661\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003e1.11.0-rc01\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-test's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003esuspendCancellableCoroutine\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574\"\u003e#4574\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003c...\n\n_Description has been truncated_","html_url":"https://github.com/ganeshnaik166/equipseva-android/pull/948","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ganeshnaik166%2Fequipseva-android/issues/948","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/948/packages"}},{"old_version":"3.6.1","new_version":"3.7.0","update_type":"minor","path":null,"pr_created_at":"2026-05-23T16:06:46.000Z","version_change":"3.6.1 → 3.7.0","issue":{"uuid":"4508823602","node_id":"PR_kwDOSGEGis7eptsH","number":938,"state":"closed","title":"build(deps): Bump the minor-and-patch group with 46 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":"2026-05-23T16:09:20.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-23T16:06:46.000Z","updated_at":"2026-05-23T16:09:28.000Z","time_to_close":154,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): Bump","group_name":"minor-and-patch","update_count":46,"packages":[{"name":"androidx.core:core-ktx","old_version":"1.15.0","new_version":"1.18.0"},{"name":"androidx.lifecycle:lifecycle-runtime-ktx","old_version":"2.8.7","new_version":"2.10.0"},{"name":"androidx.lifecycle:lifecycle-runtime-compose","old_version":"2.8.7","new_version":"2.10.0"},{"name":"androidx.activity:activity-compose","old_version":"1.9.3","new_version":"1.13.0"},{"name":"androidx.core:core-splashscreen","old_version":"1.0.1","new_version":"1.2.0"},{"name":"com.google.android.material:material","old_version":"1.12.0","new_version":"1.14.0","repository_url":"https://github.com/material-components/material-components-android"},{"name":"androidx.lifecycle:lifecycle-viewmodel-compose","old_version":"2.8.7","new_version":"2.10.0"},{"name":"androidx.credentials:credentials","old_version":"1.3.0","new_version":"1.6.0"},{"name":"androidx.credentials:credentials-play-services-auth","old_version":"1.3.0","new_version":"1.6.0"},{"name":"com.google.android.libraries.identity.googleid:googleid","old_version":"1.1.1","new_version":"1.2.0"},{"name":"androidx.exifinterface:exifinterface","old_version":"1.3.7","new_version":"1.4.2"},{"name":"androidx.navigation:navigation-compose","old_version":"2.8.5","new_version":"2.9.8"},{"name":"com.google.dagger:hilt-android","old_version":"2.53.1","new_version":"2.59.2","repository_url":"https://github.com/google/dagger"},{"name":"com.google.dagger:hilt-android-compiler","old_version":"2.53.1","new_version":"2.59.2","repository_url":"https://github.com/google/dagger"},{"name":"com.google.dagger:hilt-android-testing","old_version":"2.53.1","new_version":"2.59.2","repository_url":"https://github.com/google/dagger"},{"name":"com.google.dagger.hilt.android","old_version":"2.53.1","new_version":"2.59.2","repository_url":"https://github.com/google/dagger"},{"name":"androidx.hilt:hilt-navigation-compose","old_version":"1.2.0","new_version":"1.3.0"},{"name":"androidx.hilt:hilt-work","old_version":"1.2.0","new_version":"1.3.0"},{"name":"androidx.hilt:hilt-compiler","old_version":"1.2.0","new_version":"1.3.0"},{"name":"androidx.room:room-runtime","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-ktx","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.room:room-compiler","old_version":"2.6.1","new_version":"2.8.4"},{"name":"androidx.datastore:datastore-preferences","old_version":"1.1.1","new_version":"1.2.1"},{"name":"androidx.work:work-runtime-ktx","old_version":"2.10.0","new_version":"2.11.2"},{"name":"org.jetbrains.kotlinx:kotlinx-serialization-json","old_version":"1.7.3","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.serialization"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-android","old_version":"1.9.0","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"org.jetbrains.kotlinx:kotlinx-coroutines-test","old_version":"1.9.0","new_version":"1.11.0","repository_url":"https://github.com/Kotlin/kotlinx.coroutines"},{"name":"io.github.jan-tennert.supabase:bom","old_version":"3.0.3","new_version":"3.6.0","repository_url":"https://github.com/supabase-community/supabase-kt"},{"name":"io.ktor:ktor-client-okhttp","old_version":"3.0.2","new_version":"3.5.0","repository_url":"https://github.com/ktorio/ktor"},{"name":"io.coil-kt.coil3:coil-compose","old_version":"3.0.4","new_version":"3.4.0","repository_url":"https://github.com/coil-kt/coil"},{"name":"io.coil-kt.coil3:coil-network-okhttp","old_version":"3.0.4","new_version":"3.4.0","repository_url":"https://github.com/coil-kt/coil"},{"name":"androidx.sqlite:sqlite","old_version":"2.4.0","new_version":"2.6.2"},{"name":"com.google.android.play:integrity","old_version":"1.4.0","new_version":"1.6.0"},{"name":"io.mockk:mockk","old_version":"1.13.13","new_version":"1.14.9","repository_url":"https://github.com/mockk/mockk"},{"name":"androidx.test.ext:junit","old_version":"1.2.1","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.6.1","new_version":"3.7.0"},{"name":"org.robolectric:robolectric","old_version":"4.14.1","new_version":"4.16.1","repository_url":"https://github.com/robolectric/robolectric"},{"name":"androidx.test:core","old_version":"1.6.1","new_version":"1.7.0"},{"name":"androidx.test:runner","old_version":"1.6.2","new_version":"1.7.0"},{"name":"com.android.application","old_version":"8.7.3","new_version":"8.13.2"},{"name":"org.jetbrains.kotlin.android","old_version":"2.1.0","new_version":"2.3.21","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.1.0","new_version":"2.3.21","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.serialization","old_version":"2.1.0","new_version":"2.3.21","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"com.google.devtools.ksp","old_version":"2.1.0-1.0.29","new_version":"2.3.8","repository_url":"https://github.com/google/ksp"},{"name":"com.google.gms.google-services","old_version":"4.4.2","new_version":"4.4.4"},{"name":"com.google.firebase.crashlytics","old_version":"3.0.2","new_version":"3.0.7"}],"path":null,"ecosystem":"maven"},"body":"Bumps the minor-and-patch group with 46 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| androidx.core:core-ktx | `1.15.0` | `1.18.0` |\n| androidx.lifecycle:lifecycle-runtime-ktx | `2.8.7` | `2.10.0` |\n| androidx.lifecycle:lifecycle-runtime-compose | `2.8.7` | `2.10.0` |\n| androidx.activity:activity-compose | `1.9.3` | `1.13.0` |\n| androidx.core:core-splashscreen | `1.0.1` | `1.2.0` |\n| [com.google.android.material:material](https://github.com/material-components/material-components-android) | `1.12.0` | `1.14.0` |\n| androidx.lifecycle:lifecycle-viewmodel-compose | `2.8.7` | `2.10.0` |\n| androidx.credentials:credentials | `1.3.0` | `1.6.0` |\n| androidx.credentials:credentials-play-services-auth | `1.3.0` | `1.6.0` |\n| com.google.android.libraries.identity.googleid:googleid | `1.1.1` | `1.2.0` |\n| androidx.exifinterface:exifinterface | `1.3.7` | `1.4.2` |\n| androidx.navigation:navigation-compose | `2.8.5` | `2.9.8` |\n| [com.google.dagger:hilt-android](https://github.com/google/dagger) | `2.53.1` | `2.59.2` |\n| [com.google.dagger:hilt-android-compiler](https://github.com/google/dagger) | `2.53.1` | `2.59.2` |\n| [com.google.dagger:hilt-android-testing](https://github.com/google/dagger) | `2.53.1` | `2.59.2` |\n| [com.google.dagger.hilt.android](https://github.com/google/dagger) | `2.53.1` | `2.59.2` |\n| androidx.hilt:hilt-navigation-compose | `1.2.0` | `1.3.0` |\n| androidx.hilt:hilt-work | `1.2.0` | `1.3.0` |\n| androidx.hilt:hilt-compiler | `1.2.0` | `1.3.0` |\n| androidx.room:room-runtime | `2.6.1` | `2.8.4` |\n| androidx.room:room-ktx | `2.6.1` | `2.8.4` |\n| androidx.room:room-compiler | `2.6.1` | `2.8.4` |\n| androidx.datastore:datastore-preferences | `1.1.1` | `1.2.1` |\n| androidx.work:work-runtime-ktx | `2.10.0` | `2.11.2` |\n| [org.jetbrains.kotlinx:kotlinx-serialization-json](https://github.com/Kotlin/kotlinx.serialization) | `1.7.3` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-android](https://github.com/Kotlin/kotlinx.coroutines) | `1.9.0` | `1.11.0` |\n| [org.jetbrains.kotlinx:kotlinx-coroutines-test](https://github.com/Kotlin/kotlinx.coroutines) | `1.9.0` | `1.11.0` |\n| [io.github.jan-tennert.supabase:bom](https://github.com/supabase-community/supabase-kt) | `3.0.3` | `3.6.0` |\n| [io.ktor:ktor-client-okhttp](https://github.com/ktorio/ktor) | `3.0.2` | `3.5.0` |\n| [io.coil-kt.coil3:coil-compose](https://github.com/coil-kt/coil) | `3.0.4` | `3.4.0` |\n| [io.coil-kt.coil3:coil-network-okhttp](https://github.com/coil-kt/coil) | `3.0.4` | `3.4.0` |\n| androidx.sqlite:sqlite | `2.4.0` | `2.6.2` |\n| com.google.android.play:integrity | `1.4.0` | `1.6.0` |\n| [io.mockk:mockk](https://github.com/mockk/mockk) | `1.13.13` | `1.14.9` |\n| androidx.test.ext:junit | `1.2.1` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.6.1` | `3.7.0` |\n| [org.robolectric:robolectric](https://github.com/robolectric/robolectric) | `4.14.1` | `4.16.1` |\n| androidx.test:core | `1.6.1` | `1.7.0` |\n| androidx.test:runner | `1.6.2` | `1.7.0` |\n| com.android.application | `8.7.3` | `8.13.2` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.1.0` | `2.3.21` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.1.0` | `2.3.21` |\n| [org.jetbrains.kotlin.plugin.serialization](https://github.com/JetBrains/kotlin) | `2.1.0` | `2.3.21` |\n| [com.google.devtools.ksp](https://github.com/google/ksp) | `2.1.0-1.0.29` | `2.3.8` |\n| com.google.gms.google-services | `4.4.2` | `4.4.4` |\n| com.google.firebase.crashlytics | `3.0.2` | `3.0.7` |\n\nUpdates `androidx.core:core-ktx` from 1.15.0 to 1.18.0\n\nUpdates `androidx.lifecycle:lifecycle-runtime-ktx` from 2.8.7 to 2.10.0\n\nUpdates `androidx.lifecycle:lifecycle-runtime-compose` from 2.8.7 to 2.10.0\n\nUpdates `androidx.lifecycle:lifecycle-runtime-compose` from 2.8.7 to 2.10.0\n\nUpdates `androidx.activity:activity-compose` from 1.9.3 to 1.13.0\n\nUpdates `androidx.core:core-splashscreen` from 1.0.1 to 1.2.0\n\nUpdates `com.google.android.material:material` from 1.12.0 to 1.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/material-components/material-components-android/releases\"\u003ecom.google.android.material:material's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.14.0\u003c/h2\u003e\n\u003ch1\u003eNew in 1.14.0!\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eExpressive Themes (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/getting-started.md#material3expressive-themes\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Lists (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/List.md\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Button Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/CommonButton.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Icon Button Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/IconButton.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Button Group Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/ButtonGroup.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive FAB Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/FloatingActionButton.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Top App Bar Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/TopAppBar.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Navigation Bar (BottomNavigationView) Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/BottomNavigation.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Navigation Rail Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/NavigationRail.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Search Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/Search.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Progress Indicator Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/ProgressIndicator.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpressive Slider Styles (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/Slider.md#m3-expressive\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEmphasized Typescale (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/theming/Typography.md#emphasized-scale\"\u003edoc\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImportant\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRequired \u003ccode\u003eminSdkVersion\u003c/code\u003e is now 23 or higher, for Material and \u003ca href=\"https://developer.android.com/jetpack/androidx/versions#version-table\"\u003eAndroidX\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eLibrary is now built with Android Gradle Plugin (AGP) 8.11.1 and Gradle 8.13.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDependency Updates\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eDependency\u003c/th\u003e\n\u003cth\u003ePrevious version\u003c/th\u003e\n\u003cth\u003eNew version\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.constraintlayout:constraintlayout\u003c/td\u003e\n\u003ctd\u003e2.1.0\u003c/td\u003e\n\u003ctd\u003e2.2.1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.core:core\u003c/td\u003e\n\u003ctd\u003e1.6.0\u003c/td\u003e\n\u003ctd\u003e1.16.0\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.customview:customview\u003c/td\u003e\n\u003ctd\u003eN/A\u003c/td\u003e\n\u003ctd\u003e1.2.0\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ecom.android.tools.build:gradle\u003c/td\u003e\n\u003ctd\u003e8.7.3\u003c/td\u003e\n\u003ctd\u003e8.11.1\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eLibrary Updates\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eAppBar\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eFixed the bug that setBackground will reset the internal MaterialShapeDrawable for lift-on-scroll feature. (1adc50110ed6491661f89aa535355b1480fac73a)\u003c/li\u003e\n\u003cli\u003eAdd support for navigation button with circle background (015e0534e1a6205224097f258102f913832f99ed)\u003c/li\u003e\n\u003cli\u003eImprove keyboard navigation in TopAppBar catalog demos (98a73a61d272d3e38ee87dd4b322f7787c374a9c)\u003c/li\u003e\n\u003cli\u003eRemoved special key shortcut and keyboard navigation cluster for top app bar for correct keyboard navigation a11y. (ee52adbf051f744f2345ec5b7f4ab4df3b101d4d)\u003c/li\u003e\n\u003cli\u003eUpdated ripple color on actions in M3 toolbar. (3b971c9fe9d6ae9a175d96a448a2e740fa97996f)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBottomAppBar\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eRemove special key shortcut and keyboard navigation cluster for bottom app bar for correct keyboard navigation a11y. (5c73d7a9284fb8e8409452bb95751bf70912acfd)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBottomNavigationView\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eFix navigation item layout in non-compact windows (78189012dada1fae4516eaccab7b8f75c481aa73)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBottomSheet\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecated enableEdgeToEdge for bottom sheet dialogs on API 35+. (603f1ef9d5223fc06fa432c4175473eda2138330)\u003c/li\u003e\n\u003cli\u003ePrevent ACTION_DOWN events on the BottomSheetHandleDragView from setting touchingScrollChild to true. (af7f254bf660704368d46e630d34a81c479fa1c7)\u003c/li\u003e\n\u003cli\u003eFixed keyboard animation on Android 14 (a0b4dfa8769f98851efe97569c900f75eb0d5ef2)\u003c/li\u003e\n\u003cli\u003eFixed crash when protections are set before setContentView is called (d2119098489f6f6b55d77f2c7966b8ddf16c90ed)\u003c/li\u003e\n\u003cli\u003eAdded half-expanded state description for accessibility (95e7b452088d88005982a3f29ec212ef7ee8696d)\u003c/li\u003e\n\u003cli\u003eAdded support for androidx.core ProtectionLayout API and update dependency to 1.16 (e7f9f639d2f4a3b9f619ce704df82cbb14e49222)\u003c/li\u003e\n\u003cli\u003eMake handle respond to keyboard input (1ee07687af2c4c84f515e45c1b809d65aeecbbf4)\u003c/li\u003e\n\u003cli\u003eDelete duplicate \u0026quot;Handling insets and fullscreen\u0026quot; section (5e7e8238f7be448af6b4db4b2ad6128737c0bc50)\u003c/li\u003e\n\u003cli\u003eAdded support for Nested Scrolling with multiple nested scroll children. (4e4e8f3388beb7e82a87cb67142aa34444a79740)\u003c/li\u003e\n\u003cli\u003eMake behavior_draggableOnNestedScroll public (a67afdff0d207239d0f427a37e44074936db3166)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/66c334b7946dabf33adfe1a2b7cad6bcaa4ea3ad\"\u003e\u003ccode\u003e66c334b\u003c/code\u003e\u003c/a\u003e [Release] Update library version to 1.14.0 stable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/12e57b5143609a96de8516426336bcf3b3e321f7\"\u003e\u003ccode\u003e12e57b5\u003c/code\u003e\u003c/a\u003e [Focus Rings] Add setters and getters for stroke widths and inner inset\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/f4652d6af613395835b17ce329ceb03f43fc4a84\"\u003e\u003ccode\u003ef4652d6\u003c/code\u003e\u003c/a\u003e [NavigationView] Improve focus saving when opening NavigationView\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/14b9ac97b0863fa7fea6f59954441cea9f4e7e14\"\u003e\u003ccode\u003e14b9ac9\u003c/code\u003e\u003c/a\u003e [Focus Rings] Add setters for outer and inner stroke colors and for refreshin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/d6de1da0f5532090d8b7de697e13c180f56e11e1\"\u003e\u003ccode\u003ed6de1da\u003c/code\u003e\u003c/a\u003e [A11y][BottomSheet] Auto-expand when a focused view is off-screen in non-touc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/41cfb65e8393cd7ff0f9dc082b400c852405e9cc\"\u003e\u003ccode\u003e41cfb65\u003c/code\u003e\u003c/a\u003e [A11y][NavigationView] Request and restore focus when opened and closed in Dr...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/8f63e9485bf6da5a9a0aaefa4bbf26c8ec1364a5\"\u003e\u003ccode\u003e8f63e94\u003c/code\u003e\u003c/a\u003e [Catalog] Fix lift on scroll glitchiness in All Components demo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/80aa0cc0233af0e81a846271de0d5218beeceeaf\"\u003e\u003ccode\u003e80aa0cc\u003c/code\u003e\u003c/a\u003e [Release] Update library version to 1.14.0-rc01\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/fd44c9d58699e18de06ca5de8687fe79f390568b\"\u003e\u003ccode\u003efd44c9d\u003c/code\u003e\u003c/a\u003e [Button] [SplitButton] Fix inset and optical centering issue for SplitButton ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/e6ae416e7fc791d733eedde96ffea66d313ef231\"\u003e\u003ccode\u003ee6ae416\u003c/code\u003e\u003c/a\u003e [SearchView] Make sure IME is hidden when EditText loses focus\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/material-components/material-components-android/compare/1.12.0...1.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.lifecycle:lifecycle-viewmodel-compose` from 2.8.7 to 2.10.0\n\nUpdates `androidx.credentials:credentials` from 1.3.0 to 1.6.0\n\nUpdates `androidx.credentials:credentials-play-services-auth` from 1.3.0 to 1.6.0\n\nUpdates `androidx.credentials:credentials-play-services-auth` from 1.3.0 to 1.6.0\n\nUpdates `com.google.android.libraries.identity.googleid:googleid` from 1.1.1 to 1.2.0\n\nUpdates `androidx.exifinterface:exifinterface` from 1.3.7 to 1.4.2\n\nUpdates `androidx.navigation:navigation-compose` from 2.8.5 to 2.9.8\n\nUpdates `com.google.dagger:hilt-android` from 2.53.1 to 2.59.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003ch3\u003eBug fixes/features:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/4944\"\u003e#4944\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/4979\"\u003e#4979\u003c/a\u003e: Support AGP 9 in HiltGradlePlugin (6afd7ea5a0fb84a38f2d23c990ddbd95e728a39d)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.58\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 support was held back from this release (\u003ca href=\"https://redirect.github.com/google/dagger/pull/5061/commits/0a5b42cf910be11752c4b958c4735715bf57c564\"\u003egoogle/dagger#5061\u003c/a\u003e) because it forces users onto AGP 9. It will be available in the next Dagger release (e92e3f392).\u003c/p\u003e\n\u003ch3\u003ePotential breaking changes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlipped default for \u003ccode\u003edagger.useBindingGraphFix\u003c/code\u003e to \u003ccode\u003eenabled\u003c/code\u003e (d41e8362b).\nSee \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#useBindingGraphFix\"\u003ehttps://dagger.dev/dev-guide/compiler-options#useBindingGraphFix\u003c/a\u003e.\n\u003cstrong\u003eFix:\u003c/strong\u003e If this change breaks you it’s likely due to providing a binding in an incorrect module, (e.g. the binding requests an Activity but is installed in the SingletonComponent). The fix is to move the \u003ccode\u003e@Provides\u003c/code\u003e so that it is installed into the correct component (e.g. the ActivityComponent instead of SingletonComponent). You can also set \u003ccode\u003edagger.useBindingGraphFix=disabled\u003c/code\u003e but note that this flag is only temporary and will eventually be removed.\u003c/li\u003e\n\u003cli\u003eThe use of \u003ccode\u003eabstract var\u003c/code\u003e in components is now banned in super types.\nThe reason for this change is that an \u003ccode\u003eabstract var\u003c/code\u003e property creates both a getter and a setter on the component which is almost always unintentional.\n\u003cstrong\u003eFix:\u003c/strong\u003e If this change breaks you, use either an \u003ccode\u003eabstract val foo: Foo\u003c/code\u003e if you need a getter or \u003ccode\u003eabstract fun inject(foo: Foo)\u003c/code\u003e if you need an inject method. Note that \u003ccode\u003eabstract var\u003c/code\u003e is already banned if it is declared directly on the \u003ccode\u003e@Component\u003c/code\u003e class/interface, but this change fixes the check so that it’s banned even if it’s inherited from a super type.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes/features:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1116\"\u003e#1116\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/1630\"\u003e#1630\u003c/a\u003e, Supported \u003ccode\u003eMap\u0026lt;K, Lazy\u0026lt;V\u0026gt;\u0026gt;\u003c/code\u003e as a multibinding request type. (7f981a4c3)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/3601\"\u003e#3601\u003c/a\u003e. No longer adds a deprecation warning for unused dependencies on setters on the component builder. (1cf9dfc96)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4982\"\u003e#4982\u003c/a\u003e:\n\u003cul\u003e\n\u003cli\u003eAdded validation to prevent using Java keywords in Dagger-generated code (72e21a828)\u003c/li\u003e\n\u003cli\u003eAdded error for binding elements names that are Java keywords. (38071c5ae)\u003c/li\u003e\n\u003cli\u003eJava keyword validation is now performed earlier during the superficial validation stage. (7f6f7bda7)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.57.2\u003c/h2\u003e\n\u003ch1\u003eBug fixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/4847\"\u003e#4847\u003c/a\u003e: Fixed an issue with the Hilt Gradle Plugin registered transforms on projects using Gradle 9.0.0 (ea570e7)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4898\"\u003e#4898\u003c/a\u003e: Fixed an issue with backwards compatibility handling for libraries that export Hilt roots. (85c470ca4)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4937\"\u003e#4937\u003c/a\u003e: Fixed the incorrectly declared version of the Kotlin stdlib dependency in the Hilt Gradle Plugin. (deefd9a2d)\u003c/li\u003e\n\u003cli\u003eUpdated ASM dependency to 9.8 (365bc499d)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/118f2e5fc876a8ff080978753a7a73b2a5d642cd\"\u003e\u003ccode\u003e118f2e5\u003c/code\u003e\u003c/a\u003e 2.59.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1be57655bf07880d630154f941b433cec7072c80\"\u003e\u003ccode\u003e1be5765\u003c/code\u003e\u003c/a\u003e Change HiltSyncTask to extend DefaultTask instead of Sync.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7e31b8572df4d791816dfb30a875231176e41d5\"\u003e\u003ccode\u003ef7e31b8\u003c/code\u003e\u003c/a\u003e Replace Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/59090059e8e002e034a10e280a426553c086ec71\"\u003e\u003ccode\u003e5909005\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3507b0d7128a211f4a78634aba8e01a61bbdffc2\"\u003e\u003ccode\u003e3507b0d\u003c/code\u003e\u003c/a\u003e Support nullability in Switching Providers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1900560c6f317d873a3049f73c061211b62e7c95\"\u003e\u003ccode\u003e1900560\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/8c69595320a7661b465bea1aa10465bb7b2db888\"\u003e\u003ccode\u003e8c69595\u003c/code\u003e\u003c/a\u003e Update Dagger yml and README with new latest version number.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1dbb1dd1712b8d9f17fec7bbd7f18e32783bfc11\"\u003e\u003ccode\u003e1dbb1dd\u003c/code\u003e\u003c/a\u003e Internal refactoring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/62b54235eabe799b72e0f62465b671bc97f30cb5\"\u003e\u003ccode\u003e62b5423\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/8dcce87903e678ef78154180568619e26c4e03bc\"\u003e\u003ccode\u003e8dcce87\u003c/code\u003e\u003c/a\u003e Add AggregatedPackagesTransform for \u0026quot;android-classes\u0026quot; artifact type.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.53.1...dagger-2.59.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger:hilt-android-compiler` from 2.53.1 to 2.59.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-android-compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003ch3\u003eBug fixes/features:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/4944\"\u003e#4944\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/4979\"\u003e#4979\u003c/a\u003e: Support AGP 9 in HiltGradlePlugin (6afd7ea5a0fb84a38f2d23c990ddbd95e728a39d)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.58\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 support was held back from this release (\u003ca href=\"https://redirect.github.com/google/dagger/pull/5061/commits/0a5b42cf910be11752c4b958c4735715bf57c564\"\u003egoogle/dagger#5061\u003c/a\u003e) because it forces users onto AGP 9. It will be available in the next Dagger release (e92e3f392).\u003c/p\u003e\n\u003ch3\u003ePotential breaking changes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlipped default for \u003ccode\u003edagger.useBindingGraphFix\u003c/code\u003e to \u003ccode\u003eenabled\u003c/code\u003e (d41e8362b).\nSee \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#useBindingGraphFix\"\u003ehttps://dagger.dev/dev-guide/compiler-options#useBindingGraphFix\u003c/a\u003e.\n\u003cstrong\u003eFix:\u003c/strong\u003e If this change breaks you it’s likely due to providing a binding in an incorrect module, (e.g. the binding requests an Activity but is installed in the SingletonComponent). The fix is to move the \u003ccode\u003e@Provides\u003c/code\u003e so that it is installed into the correct component (e.g. the ActivityComponent instead of SingletonComponent). You can also set \u003ccode\u003edagger.useBindingGraphFix=disabled\u003c/code\u003e but note that this flag is only temporary and will eventually be removed.\u003c/li\u003e\n\u003cli\u003eThe use of \u003ccode\u003eabstract var\u003c/code\u003e in components is now banned in super types.\nThe reason for this change is that an \u003ccode\u003eabstract var\u003c/code\u003e property creates both a getter and a setter on the component which is almost always unintentional.\n\u003cstrong\u003eFix:\u003c/strong\u003e If this change breaks you, use either an \u003ccode\u003eabstract val foo: Foo\u003c/code\u003e if you need a getter or \u003ccode\u003eabstract fun inject(foo: Foo)\u003c/code\u003e if you need an inject method. Note that \u003ccode\u003eabstract var\u003c/code\u003e is already banned if it is declared directly on the \u003ccode\u003e@Component\u003c/code\u003e class/interface, but this change fixes the check so that it’s banned even if it’s inherited from a super type.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes/features:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1116\"\u003e#1116\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/1630\"\u003e#1630\u003c/a\u003e, Supported \u003ccode\u003eMap\u0026lt;K, Lazy\u0026lt;V\u0026gt;\u0026gt;\u003c/code\u003e as a multibinding request type. (7f981a4c3)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/3601\"\u003e#3601\u003c/a\u003e. No longer adds a deprecation warning for unused dependencies on setters on the component builder. (1cf9dfc96)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4982\"\u003e#4982\u003c/a\u003e:\n\u003cul\u003e\n\u003cli\u003eAdded validation to prevent using Java keywords in Dagger-generated code (72e21a828)\u003c/li\u003e\n\u003cli\u003eAdded error for binding elements names that are Java keywords. (38071c5ae)\u003c/li\u003e\n\u003cli\u003eJava keyword validation is now performed earlier during the superficial validation stage. (7f6f7bda7)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.57.2\u003c/h2\u003e\n\u003ch1\u003eBug fixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/4847\"\u003e#4847\u003c/a\u003e: Fixed an issue with the Hilt Gradle Plugin registered transforms on projects using Gradle 9.0.0 (ea570e7)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4898\"\u003e#4898\u003c/a\u003e: Fixed an issue with backwards compatibility handling for libraries that export Hilt roots. (85c470ca4)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4937\"\u003e#4937\u003c/a\u003e: Fixed the incorrectly declared version of the Kotlin stdlib dependency in the Hilt Gradle Plugin. (deefd9a2d)\u003c/li\u003e\n\u003cli\u003eUpdated ASM dependency to 9.8 (365bc499d)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/118f2e5fc876a8ff080978753a7a73b2a5d642cd\"\u003e\u003ccode\u003e118f2e5\u003c/code\u003e\u003c/a\u003e 2.59.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1be57655bf07880d630154f941b433cec7072c80\"\u003e\u003ccode\u003e1be5765\u003c/code\u003e\u003c/a\u003e Change HiltSyncTask to extend DefaultTask instead of Sync.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7e31b8572df4d791816dfb30a875231176e41d5\"\u003e\u003ccode\u003ef7e31b8\u003c/code\u003e\u003c/a\u003e Replace Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/59090059e8e002e034a10e280a426553c086ec71\"\u003e\u003ccode\u003e5909005\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3507b0d7128a211f4a78634aba8e01a61bbdffc2\"\u003e\u003ccode\u003e3507b0d\u003c/code\u003e\u003c/a\u003e Support nullability in Switching Providers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1900560c6f317d873a3049f73c061211b62e7c95\"\u003e\u003ccode\u003e1900560\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/8c69595320a7661b465bea1aa10465bb7b2db888\"\u003e\u003ccode\u003e8c69595\u003c/code\u003e\u003c/a\u003e Update Dagger yml and README with new latest version number.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1dbb1dd1712b8d9f17fec7bbd7f18e32783bfc11\"\u003e\u003ccode\u003e1dbb1dd\u003c/code\u003e\u003c/a\u003e Internal refactoring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/62b54235eabe799b72e0f62465b671bc97f30cb5\"\u003e\u003ccode\u003e62b5423\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/8dcce87903e678ef78154180568619e26c4e03bc\"\u003e\u003ccode\u003e8dcce87\u003c/code\u003e\u003c/a\u003e Add AggregatedPackagesTransform for \u0026quot;android-classes\u0026quot; artifact type.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.53.1...dagger-2.59.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger:hilt-android-testing` from 2.53.1 to 2.59.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-android-testing's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003ch3\u003eBug fixes/features:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/4944\"\u003e#4944\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/4979\"\u003e#4979\u003c/a\u003e: Support AGP 9 in HiltGradlePlugin (6afd7ea5a0fb84a38f2d23c990ddbd95e728a39d)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.58\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 support was held back from this release (\u003ca href=\"https://redirect.github.com/google/dagger/pull/5061/commits/0a5b42cf910be11752c4b958c4735715bf57c564\"\u003egoogle/dagger#5061\u003c/a\u003e) because it forces users onto AGP 9. It will be available in the next Dagger release (e92e3f392).\u003c/p\u003e\n\u003ch3\u003ePotential breaking changes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlipped default for \u003ccode\u003edagger.useBindingGraphFix\u003c/code\u003e to \u003ccode\u003eenabled\u003c/code\u003e (d41e8362b).\nSee \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#useBindingGraphFix\"\u003ehttps://dagger.dev/dev-guide/compiler-options#useBindingGraphFix\u003c/a\u003e.\n\u003cstrong\u003eFix:\u003c/strong\u003e If this change breaks you it’s likely due to providing a binding in an incorrect module, (e.g. the binding requests an Activity but is installed in the SingletonComponent). The fix is to move the \u003ccode\u003e@Provides\u003c/code\u003e so that it is installed into the correct component (e.g. the ActivityComponent instead of SingletonComponent). You can also set \u003ccode\u003edagger.useBindingGraphFix=disabled\u003c/code\u003e but note that this flag is only temporary and will eventually be removed.\u003c/li\u003e\n\u003cli\u003eThe use of \u003ccode\u003eabstract var\u003c/code\u003e in components is now banned in super types.\nThe reason for this change is that an \u003ccode\u003eabstract var\u003c/code\u003e property creates both a getter and a setter on the component which is almost always unintentional.\n\u003cstrong\u003eFix:\u003c/strong\u003e If this change breaks you, use either an \u003ccode\u003eabstract val foo: Foo\u003c/code\u003e if you need a getter or \u003ccode\u003eabstract fun inject(foo: Foo)\u003c/code\u003e if you need an inject method. Note that \u003ccode\u003eabstract var\u003c/code\u003e is already banned if it is declared directly on the \u003ccode\u003e@Component\u003c/code\u003e class/interface, but this change fixes the check so that it’s banned even if it’s inherited from a super type.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes/features:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1116\"\u003e#1116\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/1630\"\u003e#1630\u003c/a\u003e, Supported \u003ccode\u003eMap\u0026lt;K, Lazy\u0026lt;V\u0026gt;\u0026gt;\u003c/code\u003e as a multibinding request type. (7f981a4c3)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/3601\"\u003e#3601\u003c/a\u003e. No longer adds a deprecation warning for unused dependencies on setters on the component builder. (1cf9dfc96)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4982\"\u003e#4982\u003c/a\u003e:\n\u003cul\u003e\n\u003cli\u003eAdded validation to prevent using Java keywords in Dagger-generated code (72e21a828)\u003c/li\u003e\n\u003cli\u003eAdded error for binding elements names that are Java keywords. (38071c5ae)\u003c/li\u003e\n\u003cli\u003eJava keyword validation is now performed earlier during the superficial validation stage. (7f6f7bda7)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.57.2\u003c/h2\u003e\n\u003ch1\u003eBug fixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/4847\"\u003e#4847\u003c/a\u003e: Fixed an issue with the Hilt Gradle Plugin registered transforms on projects using Gradle 9.0.0 (ea570e7)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4898\"\u003e#4898\u003c/a\u003e: Fixed an issue with backwards compatibility handling for libraries that export Hilt roots. (85c470ca4)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4937\"\u003e#4937\u003c/a\u003e: Fixed the incorrectly declared version of the Kotlin stdlib dependency in the Hilt Gradle Plugin. (deefd9a2d)\u003c/li\u003e\n\u003cli\u003eUpdated ASM dependency to 9.8 (365bc499d)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/118f2e5fc876a8ff080978753a7a73b2a5d642cd\"\u003e\u003ccode\u003e118f2e5\u003c/code\u003e\u003c/a\u003e 2.59.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1be57655bf07880d630154f941b433cec7072c80\"\u003e\u003ccode\u003e1be5765\u003c/code\u003e\u003c/a\u003e Change HiltSyncTask to extend DefaultTask instead of Sync.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7e31b8572df4d791816dfb30a875231176e41d5\"\u003e\u003ccode\u003ef7e31b8\u003c/code\u003e\u003c/a\u003e Replace Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/59090059e8e002e034a10e280a426553c086ec71\"\u003e\u003ccode\u003e5909005\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3507b0d7128a211f4a78634aba8e01a61bbdffc2\"\u003e\u003ccode\u003e3507b0d\u003c/code\u003e\u003c/a\u003e Support nullability in Switching Providers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1900560c6f317d873a3049f73c061211b62e7c95\"\u003e\u003ccode\u003e1900560\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/8c69595320a7661b465bea1aa10465bb7b2db888\"\u003e\u003ccode\u003e8c69595\u003c/code\u003e\u003c/a\u003e Update Dagger yml and README with new latest version number.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1dbb1dd1712b8d9f17fec7bbd7f18e32783bfc11\"\u003e\u003ccode\u003e1dbb1dd\u003c/code\u003e\u003c/a\u003e Internal refactoring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/62b54235eabe799b72e0f62465b671bc97f30cb5\"\u003e\u003ccode\u003e62b5423\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/8dcce87903e678ef78154180568619e26c4e03bc\"\u003e\u003ccode\u003e8dcce87\u003c/code\u003e\u003c/a\u003e Add AggregatedPackagesTransform for \u0026quot;android-classes\u0026quot; artifact type.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.53.1...dagger-2.59.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger.hilt.android` from 2.53.1 to 2.59.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger.hilt.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003ch3\u003eBug fixes/features:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/4944\"\u003e#4944\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/4979\"\u003e#4979\u003c/a\u003e: Support AGP 9 in HiltGradlePlugin (6afd7ea5a0fb84a38f2d23c990ddbd95e728a39d)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.58\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 support was held back from this release (\u003ca href=\"https://redirect.github.com/google/dagger/pull/5061/commits/0a5b42cf910be11752c4b958c4735715bf57c564\"\u003egoogle/dagger#5061\u003c/a\u003e) because it forces users onto AGP 9. It will be available in the next Dagger release (e92e3f392).\u003c/p\u003e\n\u003ch3\u003ePotential breaking changes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlipped default for \u003ccode\u003edagger.useBindingGraphFix\u003c/code\u003e to \u003ccode\u003eenabled\u003c/code\u003e (d41e8362b).\nSee \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#useBindingGraphFix\"\u003ehttps://dagger.dev/dev-guide/compiler-options#useBindingGraphFix\u003c/a\u003e.\n\u003cstrong\u003eFix:\u003c/strong\u003e If this change breaks you it’s likely due to providing a binding in an incorrect module, (e.g. the binding requests an Activity but is installed in the SingletonComponent). The fix is to move the \u003ccode\u003e@Provides\u003c/code\u003e so that it is installed into the correct component (e.g. the ActivityComponent instead of SingletonComponent). You can also set \u003ccode\u003edagger.useBindingGraphFix=disabled\u003c/code\u003e but note that this flag is only temporary and will eventually be removed.\u003c/li\u003e\n\u003cli\u003eThe use of \u003ccode\u003eabstract var\u003c/code\u003e in components is now banned in super types.\nThe reason for this change is that an \u003ccode\u003eabstract var\u003c/code\u003e property creates both a getter and a setter on the component which is almost always unintentional.\n\u003cstrong\u003eFix:\u003c/strong\u003e If this change breaks you, use either an \u003ccode\u003eabstract val foo: Foo\u003c/code\u003e if you need a getter or \u003ccode\u003eabstract fun inject(foo: Foo)\u003c/code\u003e if you need an inject method. Note that \u003ccode\u003eabstract var\u003c/code\u003e is already banned if it is declared directly on the \u003ccode\u003e@Component\u003c/code\u003e class/interface, but this change fixes the check so that it’s banned even if it’s inherited from a super type.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes/features:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1116\"\u003e#1116\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/1630\"\u003e#1630\u003c/a\u003e, Supported \u003ccode\u003eMap\u0026lt;K, Lazy\u0026lt;V\u0026gt;\u0026gt;\u003c/code\u003e as a multibinding request type. (7f981a4c3)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/3601\"\u003e#3601\u003c/a\u003e. No longer adds a deprecation warning for unused dependencies on setters on the component builder. (1cf9dfc96)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4982\"\u003e#4982\u003c/a\u003e:\n\u003cul\u003e\n\u003cli\u003eAdded validation to prevent using Java keywords in Dagger-generated code (72e21a828)\u003c/li\u003e\n\u003cli\u003eAdded error for binding elements names that are Java keywords. (38071c5ae)\u003c/li\u003e\n\u003cli\u003eJava keyword validation is now performed earlier during the superficial validation stage. (7f6f7bda7)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.57.2\u003c/h2\u003e\n\u003ch1\u003eBug fixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/4847\"\u003e#4847\u003c/a\u003e: Fixed an issue with the Hilt Gradle Plugin registered transforms on projects using Gradle 9.0.0 (ea570e7)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4898\"\u003e#4898\u003c/a\u003e: Fixed an issue with backwards compatibility handling for libraries that export Hilt roots. (85c470ca4)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4937\"\u003e#4937\u003c/a\u003e: Fixed the incorrectly declared version of the Kotlin stdlib dependency in the Hilt Gradle Plugin. (deefd9a2d)\u003c/li\u003e\n\u003cli\u003eUpdated ASM dependency to 9.8 (365bc499d)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/118f2e5fc876a8ff080978753a7a73b2a5d642cd\"\u003e\u003ccode\u003e118f2e5\u003c/code\u003e\u003c/a\u003e 2.59.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1be57655bf07880d630154f941b433cec7072c80\"\u003e\u003ccode\u003e1be5765\u003c/code\u003e\u003c/a\u003e Change HiltSyncTask to extend DefaultTask instead of Sync.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7e31b8572df4d791816dfb30a875231176e41d5\"\u003e\u003ccode\u003ef7e31b8\u003c/code\u003e\u003c/a\u003e Replace Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/59090059e8e002e034a10e280a426553c086ec71\"\u003e\u003ccode\u003e5909005\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3507b0d7128a211f4a78634aba8e01a61bbdffc2\"\u003e\u003ccode\u003e3507b0d\u003c/code\u003e\u003c/a\u003e Support nullability in Switching Providers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1900560c6f317d873a3049f73c061211b62e7c95\"\u003e\u003ccode\u003e1900560\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/8c69595320a7661b465bea1aa10465bb7b2db888\"\u003e\u003ccode\u003e8c69595\u003c/code\u003e\u003c/a\u003e Update Dagger yml and README with new latest version number.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1dbb1dd1712b8d9f17fec7bbd7f18e32783bfc11\"\u003e\u003ccode\u003e1dbb1dd\u003c/code\u003e\u003c/a\u003e Internal refactoring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/62b54235eabe799b72e0f62465b671bc97f30cb5\"\u003e\u003ccode\u003e62b5423\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/8dcce87903e678ef78154180568619e26c4e03bc\"\u003e\u003ccode\u003e8dcce87\u003c/code\u003e\u003c/a\u003e Add AggregatedPackagesTransform for \u0026quot;android-classes\u0026quot; artifact type.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.53.1...dagger-2.59.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.dagger:hilt-android-compiler` from 2.53.1 to 2.59.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/dagger/releases\"\u003ecom.google.dagger:hilt-android-compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eDagger 2.59.2\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5116\"\u003e#5116\u003c/a\u003e,\u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Replaced Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules (f7e31b857)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5122\"\u003e#5122\u003c/a\u003e: Fixed issue with slow incremental builds introduced by HiltSyncTask in AGP 9 support (1be57655b)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59.1\u003c/h2\u003e\n\u003ch3\u003eBug fixes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e: Fixes compilation error with \u003ccode\u003ejetifierEnabled=true\u003c/code\u003e in AGP 9 (8dcce8790)\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/5098\"\u003e#5098\u003c/a\u003e: Updated minimum required AGP version to 9.0.0 to make it clearer this is a requirement when using the Hilt Gradle plugin. (141e5941a)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.59\u003c/h2\u003e\n\u003ch3\u003eBreaking changes:\u003c/h3\u003e\n\u003cp\u003e(If you do not use Hilt or the Hilt Gradle plugin, this change does not affect you.)\u003c/p\u003e\n\u003cp\u003eThis release adds AGP 9 support for the \u003ca href=\"https://dagger.dev/hilt/gradle-setup#hilt-gradle-plugin\"\u003eHilt Gradle plugin\u003c/a\u003e. This means that if you use the Hilt Gradle Plugin, AGP 9 is now a requirement along with AGP 9’s own requirements like Gradle 9.1+ (\u003ca href=\"https://developer.android.com/build/releases/agp-9-0-0-release-notes\"\u003ehttps://developer.android.com/build/releases/agp-9-0-0-release-notes\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 also seems to cause issues with \u003ccode\u003eenableJetifier=true\u003c/code\u003e (see \u003ca href=\"https://redirect.github.com/google/dagger/issues/5099\"\u003e#5099\u003c/a\u003e). This will be fixed in a follow-up release.\u003c/p\u003e\n\u003ch3\u003eBug fixes/features:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/4944\"\u003e#4944\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/4979\"\u003e#4979\u003c/a\u003e: Support AGP 9 in HiltGradlePlugin (6afd7ea5a0fb84a38f2d23c990ddbd95e728a39d)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.58\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNote:\u003c/strong\u003e AGP 9 support was held back from this release (\u003ca href=\"https://redirect.github.com/google/dagger/pull/5061/commits/0a5b42cf910be11752c4b958c4735715bf57c564\"\u003egoogle/dagger#5061\u003c/a\u003e) because it forces users onto AGP 9. It will be available in the next Dagger release (e92e3f392).\u003c/p\u003e\n\u003ch3\u003ePotential breaking changes:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlipped default for \u003ccode\u003edagger.useBindingGraphFix\u003c/code\u003e to \u003ccode\u003eenabled\u003c/code\u003e (d41e8362b).\nSee \u003ca href=\"https://dagger.dev/dev-guide/compiler-options#useBindingGraphFix\"\u003ehttps://dagger.dev/dev-guide/compiler-options#useBindingGraphFix\u003c/a\u003e.\n\u003cstrong\u003eFix:\u003c/strong\u003e If this change breaks you it’s likely due to providing a binding in an incorrect module, (e.g. the binding requests an Activity but is installed in the SingletonComponent). The fix is to move the \u003ccode\u003e@Provides\u003c/code\u003e so that it is installed into the correct component (e.g. the ActivityComponent instead of SingletonComponent). You can also set \u003ccode\u003edagger.useBindingGraphFix=disabled\u003c/code\u003e but note that this flag is only temporary and will eventually be removed.\u003c/li\u003e\n\u003cli\u003eThe use of \u003ccode\u003eabstract var\u003c/code\u003e in components is now banned in super types.\nThe reason for this change is that an \u003ccode\u003eabstract var\u003c/code\u003e property creates both a getter and a setter on the component which is almost always unintentional.\n\u003cstrong\u003eFix:\u003c/strong\u003e If this change breaks you, use either an \u003ccode\u003eabstract val foo: Foo\u003c/code\u003e if you need a getter or \u003ccode\u003eabstract fun inject(foo: Foo)\u003c/code\u003e if you need an inject method. Note that \u003ccode\u003eabstract var\u003c/code\u003e is already banned if it is declared directly on the \u003ccode\u003e@Component\u003c/code\u003e class/interface, but this change fixes the check so that it’s banned even if it’s inherited from a super type.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes/features:\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/1116\"\u003e#1116\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/google/dagger/issues/1630\"\u003e#1630\u003c/a\u003e, Supported \u003ccode\u003eMap\u0026lt;K, Lazy\u0026lt;V\u0026gt;\u0026gt;\u003c/code\u003e as a multibinding request type. (7f981a4c3)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/3601\"\u003e#3601\u003c/a\u003e. No longer adds a deprecation warning for unused dependencies on setters on the component builder. (1cf9dfc96)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4982\"\u003e#4982\u003c/a\u003e:\n\u003cul\u003e\n\u003cli\u003eAdded validation to prevent using Java keywords in Dagger-generated code (72e21a828)\u003c/li\u003e\n\u003cli\u003eAdded error for binding elements names that are Java keywords. (38071c5ae)\u003c/li\u003e\n\u003cli\u003eJava keyword validation is now performed earlier during the superficial validation stage. (7f6f7bda7)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDagger 2.57.2\u003c/h2\u003e\n\u003ch1\u003eBug fixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/google/dagger/issues/4847\"\u003e#4847\u003c/a\u003e: Fixed an issue with the Hilt Gradle Plugin registered transforms on projects using Gradle 9.0.0 (ea570e7)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4898\"\u003e#4898\u003c/a\u003e: Fixed an issue with backwards compatibility handling for libraries that export Hilt roots. (85c470ca4)\u003c/li\u003e\n\u003cli\u003eFixes \u003ca href=\"https://redirect.github.com/google/dagger/issues/4937\"\u003e#4937\u003c/a\u003e: Fixed the incorrectly declared version of the Kotlin stdlib dependency in the Hilt Gradle Plugin. (deefd9a2d)\u003c/li\u003e\n\u003cli\u003eUpdated ASM dependency to 9.8 (365bc499d)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/118f2e5fc876a8ff080978753a7a73b2a5d642cd\"\u003e\u003ccode\u003e118f2e5\u003c/code\u003e\u003c/a\u003e 2.59.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1be57655bf07880d630154f941b433cec7072c80\"\u003e\u003ccode\u003e1be5765\u003c/code\u003e\u003c/a\u003e Change HiltSyncTask to extend DefaultTask instead of Sync.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/f7e31b8572df4d791816dfb30a875231176e41d5\"\u003e\u003ccode\u003ef7e31b8\u003c/code\u003e\u003c/a\u003e Replace Hilt's \u0026quot;android-classes\u0026quot; transform with attribute rules.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/59090059e8e002e034a10e280a426553c086ec71\"\u003e\u003ccode\u003e5909005\u003c/code\u003e\u003c/a\u003e Automated Code Change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/3507b0d7128a211f4a78634aba8e01a61bbdffc2\"\u003e\u003ccode\u003e3507b0d\u003c/code\u003e\u003c/a\u003e Support nullability in Switching Providers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1900560c6f317d873a3049f73c061211b62e7c95\"\u003e\u003ccode\u003e1900560\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/8c69595320a7661b465bea1aa10465bb7b2db888\"\u003e\u003ccode\u003e8c69595\u003c/code\u003e\u003c/a\u003e Update Dagger yml and README with new latest version number.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/1dbb1dd1712b8d9f17fec7bbd7f18e32783bfc11\"\u003e\u003ccode\u003e1dbb1dd\u003c/code\u003e\u003c/a\u003e Internal refactoring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/62b54235eabe799b72e0f62465b671bc97f30cb5\"\u003e\u003ccode\u003e62b5423\u003c/code\u003e\u003c/a\u003e Internal changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/dagger/commit/8dcce87903e678ef78154180568619e26c4e03bc\"\u003e\u003ccode\u003e8dcce87\u003c/code\u003e\u003c/a\u003e Add AggregatedPackagesTransform for \u0026quot;android-classes\u0026quot; artifact type.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/dagger/compare/dagger-2.53.1...dagger-2.59.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.hilt:hilt-navigation-compose` from 1.2.0 to 1.3.0\n\nUpdates `androidx.hilt:hilt-work` from 1.2.0 to 1.3.0\n\nUpdates `androidx.hilt:hilt-compiler` from 1.2.0 to 1.3.0\n\nUpdates `androidx.hilt:hilt-compiler` from 1.2.0 to 1.3.0\n\nUpdates `androidx.room:room-runtime` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-ktx` from 2.6.1 to 2.8.4\n\nUpdates `androidx.room:room-compiler` from 2.6.1 to 2.8.4\n\nUpdates `androidx.datastore:datastore-preferences` from 1.1.1 to 1.2.1\n\nUpdates `androidx.work:work-runtime-ktx` from 2.10.0 to 2.11.2\n\nUpdates `org.jetbrains.kotlinx:kotlinx-serialization-json` from 1.7.3 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-serialization-json's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.20 and provides a new Json exceptions API and some bugfixes and improvements.\u003c/p\u003e\n\u003ch2\u003eExpose Json exceptions structure\u003c/h2\u003e\n\u003cp\u003eTo make working with exceptions easier and providing proper error codes in e.g., REST APIs,\nclasses \u003ccode\u003eJsonException\u003c/code\u003e, \u003ccode\u003eJsonDecodingException\u003c/code\u003e, and \u003ccode\u003eJsonEncodingException\u003c/code\u003e are now public.\nThey have relevant public properties, such as \u003ccode\u003eshortMessage\u003c/code\u003e, \u003ccode\u003epath\u003c/code\u003e, \u003ccode\u003eoffset\u003c/code\u003e, and others.\nThis API is currently experimental, and we're going to improve it further in the subsequent releases.\nSee the linked issues for the details: \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1930\"\u003e#1930\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1877\"\u003e#1877\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eAbility to hide user input from exception messages for security/privacy reasons.\u003c/h2\u003e\n\u003cp\u003eHistorically, exception messages in kotlinx.serialization often included the input Json itself for debuggability reason.\nSuch behavior may pose additional challenges for logging, analytics, and other systems, since\na system is not always allowed to store user data due to privacy/security reasons, which imposes additional sanitation logic.\nTo address this issue, a new property \u003ccode\u003eexceptionsWithDebugInfo\u003c/code\u003e is added to \u003ccode\u003eJsonConfiguration\u003c/code\u003e.\nDisable it to hide user input from exception messages.\nIMPORTANT: This behavior will be enabled by default when this property becomes stable.\nSee \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2590\"\u003e#2590\u003c/a\u003e for more details.\u003c/p\u003e\n\u003ch2\u003eBugfixes and improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCBOR: Relax value range check when decoding numbers (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse a specialized writeDecimalLong method for IO stream integrations in Json (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3152\"\u003e#3152\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.10.0\u003c/h2\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.0 and contains all of the changes from 1.10.0-RC.\nThe only additional change is a fix for ProtoBuf packing of Kotlin unsigned types (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3079\"\u003e#3079\u003c/a\u003e).\nBig thanks to \u003ca href=\"https://github.com/KosmX\"\u003eKosmX\u003c/a\u003e for contributing the fix.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eFor your convenience, the changelog for 1.10.0-RC is duplicated below:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eStabilization of APIs\u003c/h2\u003e\n\u003cp\u003ekotlinx-serialization 1.10 and subsequent releases will be focused on stabilization of existing APIs.\nThe following APIs and configuration options are no longer experimental because they're widely used without any known major issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eJson\u003c/code\u003e configuration options: \u003ccode\u003edecodeEnumsCaseInsensitive\u003c/code\u003e, \u003ccode\u003eallowTrailingComma\u003c/code\u003e, \u003ccode\u003eallowComments\u003c/code\u003e, and \u003ccode\u003eprettyPrintIndent\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3100\"\u003e#3100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@EncodeDefault\u003c/code\u003e annotation and its modes. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3106\"\u003e#3106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonUnquotedLiteral\u003c/code\u003e constructor function (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2900\"\u003e#2900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonPrimitive\u003c/code\u003e constructor function overloads that accept unsigned types. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJSON DSL functions on \u003ccode\u003eJsonElement\u003c/code\u003e with \u003ccode\u003eNothing?\u003c/code\u003e overloads. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eReadiness for return value checker\u003c/h2\u003e\n\u003cp\u003eKotlin 2.3.0 \u003ca href=\"https://kotlinlang.org/docs/whatsnew23.html#unused-return-value-checker\"\u003eintroduces a new feature\u003c/a\u003e aimed at helping you to catch bugs related to the accidentally ignored return value of the function.\nkotlinx-serialization 1.10.0-RC code is fully marked for this feature, meaning that you can get warnings for unused function calls like \u003ccode\u003eJson.encodeToString(...)\u003c/code\u003e. To get the warnings, the feature has to be enabled in your project as \u003ca href=\"https://kotlinlang.org/docs/unused-return-value-checker.html#configure-the-unused-return-value-checker\"\u003edescribed here\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003ePolymorphism improvements\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md\"\u003eorg.jetbrains.kotlinx:kotlinx-serialization-json's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.11.0 / 2026-04-10\u003c/h1\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.20 and provides new Json exceptions API and some bugfixes and improvements.\u003c/p\u003e\n\u003ch2\u003eExpose Json exceptions structure\u003c/h2\u003e\n\u003cp\u003eTo make working with exceptions easier and providing proper error codes in e.g., REST APIs,\nclasses \u003ccode\u003eJsonException\u003c/code\u003e, \u003ccode\u003eJsonDecodingException\u003c/code\u003e, and \u003ccode\u003eJsonEncodingException\u003c/code\u003e are now public.\nThey have relevant public properties, such as \u003ccode\u003eshortMessage\u003c/code\u003e, \u003ccode\u003epath\u003c/code\u003e, \u003ccode\u003eoffset\u003c/code\u003e, and others.\nThis API is currently experimental, and we're going to improve it further in the subsequent releases.\nSee the linked issues for the details: \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1930\"\u003e#1930\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/1877\"\u003e#1877\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eAbility to hide user input from exception messages for security/privacy reasons.\u003c/h2\u003e\n\u003cp\u003eHistorically, exception messages in kotlinx.serialization often included the input Json itself for debuggability reason.\nSuch behavior may pose additional challenges for logging, analytics, and other systems, since\na system is not always allowed to store user data due to privacy/security reasons, which imposes additional sanitation logic.\nTo address this issue, a new property \u003ccode\u003eexceptionsWithDebugInfo\u003c/code\u003e is added to \u003ccode\u003eJsonConfiguration\u003c/code\u003e.\nDisable it to hide user input from exception messages.\nIMPORTANT: This behavior will be enabled by default when this property becomes stable.\nSee \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2590\"\u003e#2590\u003c/a\u003e for more details.\u003c/p\u003e\n\u003ch2\u003eBugfixes and improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCBOR: Relax value range check when decoding numbers (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse a specialized writeDecimalLong method for IO stream integrations in Json (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3152\"\u003e#3152\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.10.0 / 2026-01-21\u003c/h1\u003e\n\u003cp\u003eThis release is based on Kotlin 2.3.0 and contains all of the changes from 1.10.0-RC.\nThe only additional change is a fix for ProtoBuf packing of Kotlin unsigned types (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3079\"\u003e#3079\u003c/a\u003e).\nBig thanks to \u003ca href=\"https://github.com/KosmX\"\u003eKosmX\u003c/a\u003e for contributing the fix.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eFor your convenience, the changelog for 1.10.0-RC is duplicated below:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eStabilization of APIs\u003c/h2\u003e\n\u003cp\u003ekotlinx-serialization 1.10 and subsequent releases will be focused on stabilization of existing APIs.\nThe following APIs and configuration options are no longer experimental because they're widely used without any known major issues:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eJson\u003c/code\u003e configuration options: \u003ccode\u003edecodeEnumsCaseInsensitive\u003c/code\u003e, \u003ccode\u003eallowTrailingComma\u003c/code\u003e, \u003ccode\u003eallowComments\u003c/code\u003e, and \u003ccode\u003eprettyPrintIndent\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3100\"\u003e#3100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@EncodeDefault\u003c/code\u003e annotation and its modes. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3106\"\u003e#3106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonUnquotedLiteral\u003c/code\u003e constructor function (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/2900\"\u003e#2900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eJsonPrimitive\u003c/code\u003e constructor function overloads that accept unsigned types. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJSON DSL functions on \u003ccode\u003eJsonElement\u003c/code\u003e with \u003ccode\u003eNothing?\u003c/code\u003e overloads. (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3117\"\u003e#3117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eReadiness for return value checker\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/6956af2e6073347c7832c3c5b374fa3b5a345956\"\u003e\u003ccode\u003e6956af2\u003c/code\u003e\u003c/a\u003e Prepare 1.11 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/390d84c68a19cbf7fa453dec22a333648bde49b4\"\u003e\u003ccode\u003e390d84c\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/431fe2dc0a144300b33038820d24fc30302c8abc\"\u003e\u003ccode\u003e431fe2d\u003c/code\u003e\u003c/a\u003e Use local repo for publishing (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3171\"\u003e#3171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/05c12b60a6717b99053fb82e1f94d2f859727374\"\u003e\u003ccode\u003e05c12b6\u003c/code\u003e\u003c/a\u003e Add usage attribute to \u0026quot;testRepositories\u0026quot; configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/a4e1f082ef2e72caa139b474c05657de6015da20\"\u003e\u003ccode\u003ea4e1f08\u003c/code\u003e\u003c/a\u003e Bump Kover version to 0.9.8 release (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3174\"\u003e#3174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/304e858ccc7066854637d86ab80056f5f2bcc094\"\u003e\u003ccode\u003e304e858\u003c/code\u003e\u003c/a\u003e Expose Json exceptions structure (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/4a0338ef5093d765138151bc30282e909ca459e4\"\u003e\u003ccode\u003e4a0338e\u003c/code\u003e\u003c/a\u003e Included G Play SDK verification file for core-jvm (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3169\"\u003e#3169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/421f64c74f0ea6d4a3cdc8dd483505366e3f6c8f\"\u003e\u003ccode\u003e421f64c\u003c/code\u003e\u003c/a\u003e CBOR: Relax value range check when decoding numbers (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.serialization/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/85a4f126ec491c77e2b3686cc22c1bae27a20783\"\u003e\u003ccode\u003e85a4f12\u003c/code\u003e\u003c/a\u003e KT-84955: mark apple x64 tagets as deprecated error\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/commit/bd38b0e49bce38d1a55576e89856bc63990167ed\"\u003e\u003ccode\u003ebd38b0e\u003c/code\u003e\u003c/a\u003e Remove dead code\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kotlin/kotlinx.serialization/compare/v1.7.3...v1.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlinx:kotlinx-coroutines-android` from 1.9.0 to 1.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kotlin/kotlinx.coroutines/releases\"\u003eorg.jetbrains.kotlinx:kotlinx-coroutines-android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.11.0\u003c/h2\u003e\n\u003ch3\u003eVarious\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKotlin was updated to 2.2.20 (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545\"\u003e#4545\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved the published jar files (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842\"\u003e#3842\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599\"\u003e#4599\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eVarious documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433\"\u003e#4433\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596\"\u003e#4596\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking changes and deprecations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003ePromise\u003c/code\u003e-related functions from JS and Wasm/JS to the new \u003ccode\u003eweb\u003c/code\u003e target. On Wasm/JS, this is a breaking change. Before the change, \u003ccode\u003ePromise\u003c/code\u003e on Wasm/JS could work with arbitrary Kotlin types, but now, only \u003ccode\u003eJsAny\u003c/code\u003e subtypes are accepted (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563\"\u003e#4563\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eChanged handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. B\nefore, exceptions were logged, but now, they are reported to the JS runtime (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451\"\u003e#4451\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631\"\u003e#4631\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeprecated using \u003ccode\u003eCoroutineDispatcher\u003c/code\u003e as the coroutine context key; now, \u003ccode\u003eContinuationInterceptor\u003c/code\u003e has to be used instead (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333\"\u003e#4333\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdvanced the deprecation levels on \u003ccode\u003ekotlinx-coroutines-test\u003c/code\u003e APIs (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604\"\u003e#4604\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded lint functions that mark passing a \u003ccode\u003eJob\u003c/code\u003e to coroutine builders as deprecated (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435\"\u003e#4435\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes and improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003ecallsInPlace(EXACTLY_ONCE)\u003c/code\u003e contract to \u003ccode\u003erunBlocking\u003c/code\u003e in code shared between JVM and Native (\u003ca href=\"https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368\"\u003e#4368\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ec...\n\n_Description has been truncated_","html_url":"https://github.com/ganeshnaik166/equipseva-android/pull/938","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ganeshnaik166%2Fequipseva-android/issues/938","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/938/packages"}},{"old_version":"3.6.1","new_version":"3.7.0","update_type":"minor","path":"/ElaroMobil","pr_created_at":"2026-05-11T18:42:39.000Z","version_change":"3.6.1 → 3.7.0","issue":{"uuid":"4423376220","node_id":"PR_kwDOSW0jps7aYNjc","number":16,"state":"closed","title":"chore(deps): bump the android-dependencies group in /ElaroMobil with 19 updates","user":"dependabot[bot]","labels":["dependencies","java"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-05-11T19:02:46.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-11T18:42:39.000Z","updated_at":"2026-05-11T19:02:51.000Z","time_to_close":1207,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"android-dependencies","update_count":19,"packages":[{"name":"com.github.bumptech.glide:compiler","old_version":"4.15.1","new_version":"5.0.7","repository_url":"https://github.com/bumptech/glide"},{"name":"com.squareup.okhttp3:okhttp","old_version":"4.12.0","new_version":"5.3.2","repository_url":"https://github.com/square/okhttp"},{"name":"com.google.code.gson:gson","old_version":"2.10.1","new_version":"2.14.0","repository_url":"https://github.com/google/gson"},{"name":"com.squareup.retrofit2:retrofit","old_version":"2.9.0","new_version":"3.0.0","repository_url":"https://github.com/square/retrofit"},{"name":"com.squareup.retrofit2:converter-gson","old_version":"2.9.0","new_version":"3.0.0","repository_url":"https://github.com/square/retrofit"},{"name":"gradle-wrapper","old_version":"8.11.1","new_version":"9.5.0","repository_url":"https://github.com/gradle/gradle"},{"name":"androidx.core:core-ktx","old_version":"1.16.0","new_version":"1.18.0"},{"name":"androidx.test.ext:junit","old_version":"1.2.1","new_version":"1.3.0"},{"name":"androidx.test.espresso:espresso-core","old_version":"3.6.1","new_version":"3.7.0"},{"name":"androidx.lifecycle:lifecycle-runtime-ktx","old_version":"2.8.7","new_version":"2.10.0"},{"name":"androidx.activity:activity-compose","old_version":"1.10.1","new_version":"1.13.0"},{"name":"androidx.compose:compose-bom","old_version":"2024.09.00","new_version":"2026.05.00"},{"name":"androidx.appcompat:appcompat","old_version":"1.7.0","new_version":"1.7.1"},{"name":"com.google.android.material:material","old_version":"1.12.0","new_version":"1.13.0","repository_url":"https://github.com/material-components/material-components-android"},{"name":"androidx.constraintlayout:constraintlayout","old_version":"2.1.4","new_version":"2.2.1"},{"name":"com.github.bumptech.glide:glide","old_version":"4.15.1","new_version":"5.0.7","repository_url":"https://github.com/bumptech/glide"},{"name":"com.android.application","old_version":"8.9.1","new_version":"9.2.1"},{"name":"org.jetbrains.kotlin.android","old_version":"2.0.21","new_version":"2.3.21","repository_url":"https://github.com/JetBrains/kotlin"},{"name":"org.jetbrains.kotlin.plugin.compose","old_version":"2.0.21","new_version":"2.3.21","repository_url":"https://github.com/JetBrains/kotlin"}],"path":"/ElaroMobil","ecosystem":"maven"},"body":"[//]: # (dependabot-start)\n⚠️  **Dependabot is rebasing this PR** ⚠️ \n\nRebasing might not happen immediately, so don't worry if this takes some time.\n\nNote: if you make any changes to this PR yourself, they will take precedence over the rebase.\n\n---\n\n[//]: # (dependabot-end)\n\nBumps the android-dependencies group in /ElaroMobil with 19 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [com.github.bumptech.glide:compiler](https://github.com/bumptech/glide) | `4.15.1` | `5.0.7` |\n| [com.squareup.okhttp3:okhttp](https://github.com/square/okhttp) | `4.12.0` | `5.3.2` |\n| [com.google.code.gson:gson](https://github.com/google/gson) | `2.10.1` | `2.14.0` |\n| [com.squareup.retrofit2:retrofit](https://github.com/square/retrofit) | `2.9.0` | `3.0.0` |\n| [com.squareup.retrofit2:converter-gson](https://github.com/square/retrofit) | `2.9.0` | `3.0.0` |\n| [gradle-wrapper](https://github.com/gradle/gradle) | `8.11.1` | `9.5.0` |\n| androidx.core:core-ktx | `1.16.0` | `1.18.0` |\n| androidx.test.ext:junit | `1.2.1` | `1.3.0` |\n| androidx.test.espresso:espresso-core | `3.6.1` | `3.7.0` |\n| androidx.lifecycle:lifecycle-runtime-ktx | `2.8.7` | `2.10.0` |\n| androidx.activity:activity-compose | `1.10.1` | `1.13.0` |\n| androidx.compose:compose-bom | `2024.09.00` | `2026.05.00` |\n| androidx.appcompat:appcompat | `1.7.0` | `1.7.1` |\n| [com.google.android.material:material](https://github.com/material-components/material-components-android) | `1.12.0` | `1.13.0` |\n| androidx.constraintlayout:constraintlayout | `2.1.4` | `2.2.1` |\n| [com.github.bumptech.glide:glide](https://github.com/bumptech/glide) | `4.15.1` | `5.0.7` |\n| com.android.application | `8.9.1` | `9.2.1` |\n| [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) | `2.0.21` | `2.3.21` |\n| [org.jetbrains.kotlin.plugin.compose](https://github.com/JetBrains/kotlin) | `2.0.21` | `2.3.21` |\n\nUpdates `com.github.bumptech.glide:compiler` from 4.15.1 to 5.0.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/bumptech/glide/releases\"\u003ecom.github.bumptech.glide:compiler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eGlide v5.0.7\u003c/h2\u003e\n\u003ch2\u003eCompose\u003c/h2\u003e\n\u003cp\u003eN/A\u003c/p\u003e\n\u003ch2\u003eKTX\u003c/h2\u003e\n\u003cp\u003eN/A\u003c/p\u003e\n\u003ch2\u003eBuild Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd missing version bump\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cp\u003eN/A\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/bumptech/glide/compare/v5.0.6...v5.0.7\"\u003ehttps://github.com/bumptech/glide/compare/v5.0.6...v5.0.7\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eGlide v5.0.6\u003c/h2\u003e\n\u003ch2\u003eCompose\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVersion bump to 1.0.0-beta09\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eKTX\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVersion bump to 1.0.0-beta09\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBuild Changes\u003c/h2\u003e\n\u003cp\u003eN/A\u003c/p\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSet the background memory category only when trim level is higher than TRIM_MEMORY_UI_HIDDEN. See \u003ca href=\"https://redirect.github.com/bumptech/glide/pull/5669\"\u003ebumptech/glide#5669\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop appending requireOriginal to URIs loaded by Glide on Android R+. See \u003ca href=\"https://redirect.github.com/bumptech/glide/pull/5668\"\u003ebumptech/glide#5668\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eConverting a second set of Groovy Gradle files to Kotlin DSL. See \u003ca href=\"https://redirect.github.com/bumptech/glide/pull/5639\"\u003ebumptech/glide#5639\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigrate from Robolectric's Util.readBytes to Guava ByteStreams. See \u003ca href=\"https://redirect.github.com/bumptech/glide/pull/5636\"\u003ebumptech/glide#5636\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/bumptech/glide/compare/v5.0.5...v5.0.6\"\u003ehttps://github.com/bumptech/glide/compare/v5.0.5...v5.0.6\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eGlide v5.0.5\u003c/h2\u003e\n\u003ch2\u003eCompose\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVersion bump to 1.0.0-beta08\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eKTX\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVersion bump to 1.0.0-beta08\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBuild Changes\u003c/h2\u003e\n\u003cp\u003eN/A\u003c/p\u003e\n\u003ch2\u003eBugs\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestores GlideUrl fix for urls with IPV6 addresses fix that was accidentally reverted in 5.0.4. See \u003ca href=\"https://redirect.github.com/bumptech/glide/pull/5444\"\u003ebumptech/glide#5444\u003c/a\u003e for details\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/bumptech/glide/compare/v5.0.4...v5.0.5\"\u003ehttps://github.com/bumptech/glide/compare/v5.0.4...v5.0.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eGlide v5.0.4\u003c/h2\u003e\n\u003ch2\u003eCompose\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/c751c283ed852f73b7fd6f0ed8ba5b8b7e452b38\"\u003e\u003ccode\u003ec751c28\u003c/code\u003e\u003c/a\u003e Bump to 5.0.7 (\u003ca href=\"https://redirect.github.com/bumptech/glide/issues/5673\"\u003e#5673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/91f33f02ce5317075066a14e16038dd573d492fb\"\u003e\u003ccode\u003e91f33f0\u003c/code\u003e\u003c/a\u003e Bump ktx and compose versions to 1.0.0-beta09 (\u003ca href=\"https://redirect.github.com/bumptech/glide/issues/5672\"\u003e#5672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/c17a83cf5691671e13df259dd251f65a47007281\"\u003e\u003ccode\u003ec17a83c\u003c/code\u003e\u003c/a\u003e Update isAndroidPickerUri to support new picker URI variations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/c0a2dd4b1f7fa1f4d06474e660f921d80b6a9f2d\"\u003e\u003ccode\u003ec0a2dd4\u003c/code\u003e\u003c/a\u003e Stop appending requireOriginal to URIs loaded by Glide on Android R+\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/03ab8ba0168110d53d41267096663b5c8751a5b4\"\u003e\u003ccode\u003e03ab8ba\u003c/code\u003e\u003c/a\u003e A trim level of TRIM_MEMORY_UI_HIDDEN is applicable to a process with a state...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/d4278e03c08216c49f0cf6147447693eaadb30fb\"\u003e\u003ccode\u003ed4278e0\u003c/code\u003e\u003c/a\u003e Bump Gradle to 8.14.4.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/b12f574fd6ea20430c55c5a2eb29d624d843bf3e\"\u003e\u003ccode\u003eb12f574\u003c/code\u003e\u003c/a\u003e Allow limiting the size of LruBitmapPool/MemoryCache when in background\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/82657e94c17267743b866ce475d98f33dd551955\"\u003e\u003ccode\u003e82657e9\u003c/code\u003e\u003c/a\u003e No public description\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/d5915398eb200c6795aa3bfbcc4c6c2db1cf8b06\"\u003e\u003ccode\u003ed591539\u003c/code\u003e\u003c/a\u003e Allow limiting the size of LruBitmapPool/MemoryCache when in background\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/5e158121a6cac01503f1e0f6c312aa241f045552\"\u003e\u003ccode\u003e5e15812\u003c/code\u003e\u003c/a\u003e Converting a second set of Groovy Gradle files to Kotlin DSL.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/bumptech/glide/compare/v4.15.1...v5.0.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.squareup.okhttp3:okhttp` from 4.12.0 to 5.3.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/square/okhttp/blob/master/CHANGELOG.md\"\u003ecom.squareup.okhttp3:okhttp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 5.3.2\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-11-18\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: Don't delay triggering timeouts. In Okio 3.16.0 we introduced a regression that caused\ntimeouts to fire later than they were supposed to.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade: [Okio 3.16.4][okio_3_16_4].\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 5.3.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-11-16\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eThis release is the same as 5.3.0. Okio 3.16.3 didn't have a necessary fix!\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade: [Okio 3.16.3][okio_3_16_3].\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 5.3.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-10-30\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNew: Add tags to \u003ccode\u003eCall\u003c/code\u003e, including computable tags. Use this to attach application-specific\nmetadata to a \u003ccode\u003eCall\u003c/code\u003e in an \u003ccode\u003eEventListener\u003c/code\u003e or \u003ccode\u003eInterceptor\u003c/code\u003e. The tag can be read in any other\n\u003ccode\u003eEventListener\u003c/code\u003e or \u003ccode\u003eInterceptor\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"kotlin\"\u003e\u003ccode\u003e  override fun intercept(chain: Interceptor.Chain): Response {\n    chain.call().tag(MyAnalyticsTag::class) {\n      MyAnalyticsTag(...)\n    }\n\u003cpre\u003e\u003ccode\u003ereturn chain.proceed(chain.request())\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e}\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eNew: Support request bodies on HTTP/1.1 connection upgrades.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eNew: \u003ccode\u003eEventListener.plus()\u003c/code\u003e makes it easier to observe events in multiple listeners.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: Don't spam logs with \u003cem\u003e‘Method isLoggable in android.util.Log not mocked.’\u003c/em\u003e when using\nOkHttp in Robolectric and Paparazzi tests.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade: [Kotlin 2.2.21][kotlin_2_2_21].\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade: [Okio 3.16.2][okio_3_16_2].\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade: [ZSTD-KMP 0.4.0][zstd_kmp_0_4_0]. This update fixes a bug that caused APKs to fail\n[16 KB ELF alignment checks][elf_alignment].\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 5.2.3\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2025-11-18\u003c/em\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/okhttp/commit/75b9c267744cdd2e8b222d247052748ff0954304\"\u003e\u003ccode\u003e75b9c26\u003c/code\u003e\u003c/a\u003e Prepare for release 5.3.2.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/okhttp/commit/ab48e5d86d0c0b16b3679b9b9522acf65db73da4\"\u003e\u003ccode\u003eab48e5d\u003c/code\u003e\u003c/a\u003e Okio 3.16.4 (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9200\"\u003e#9200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/okhttp/commit/a9a4638b3d38b83782a959514b4183ddea0f071f\"\u003e\u003ccode\u003ea9a4638\u003c/code\u003e\u003c/a\u003e Prepare next development version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/okhttp/commit/ef72228d270c21962ab632b4c5a0dfd7ab4fd661\"\u003e\u003ccode\u003eef72228\u003c/code\u003e\u003c/a\u003e Prepare for release 5.3.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/okhttp/commit/674716746bb4efce30501b711ea3ec188c0d670d\"\u003e\u003ccode\u003e6747167\u003c/code\u003e\u003c/a\u003e Update com.squareup.okio to v3.16.3 (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9197\"\u003e#9197\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/okhttp/commit/0960b47ec28a02e893499d2a7e53bf462a62875e\"\u003e\u003ccode\u003e0960b47\u003c/code\u003e\u003c/a\u003e Prepare for release 5.3.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/okhttp/commit/bfb24eb90b3be7fb73541ea02ce8d5dfc4021709\"\u003e\u003ccode\u003ebfb24eb\u003c/code\u003e\u003c/a\u003e Support Request Bodies on HTTP1.1 Connection Upgrades (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9159\"\u003e#9159\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/okhttp/commit/cf4a86439568e640c39da5e4e73af6565a5510b1\"\u003e\u003ccode\u003ecf4a864\u003c/code\u003e\u003c/a\u003e Update Gradle to v9.2.0 (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9171\"\u003e#9171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/okhttp/commit/4e7dbec1ea6c9cf8d80422ac9d44b9b185c749a3\"\u003e\u003ccode\u003e4e7dbec\u003c/code\u003e\u003c/a\u003e Update dependency com.puppycrawl.tools:checkstyle to v12.1.1 (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9169\"\u003e#9169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/okhttp/commit/0470853d724ec9e3c68a6ef83a4d1a60a73ef289\"\u003e\u003ccode\u003e0470853\u003c/code\u003e\u003c/a\u003e Add tags to calls, including computable tags (\u003ca href=\"https://redirect.github.com/square/okhttp/issues/9168\"\u003e#9168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/square/okhttp/compare/parent-4.12.0...parent-5.3.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.google.code.gson:gson` from 2.10.1 to 2.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/google/gson/releases\"\u003ecom.google.code.gson:gson's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eGson 2.14.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type adapters for \u003ccode\u003ejava.time\u003c/code\u003e classes by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2948\"\u003egoogle/gson#2948\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWhen the \u003ccode\u003ejava.time\u003c/code\u003e API is available, Gson automatically can read and write instances of classes like \u003ccode\u003eInstant\u003c/code\u003e and \u003ccode\u003eDuration\u003c/code\u003e. The format it uses essentially freezes the JSON representation that \u003ccode\u003eReflectiveTypeAdapterFactory\u003c/code\u003e established by default, based on the private fields of \u003ccode\u003ejava.time\u003c/code\u003e classes. That's not a great representation, but it is understandable. Changing it to anything else would break compatibility with systems that are expecting the current format.\u003c/p\u003e\n\u003cp\u003eWith this change, Gson no longer tries to access private fields of these classes using reflection. So it is no longer necessary to run with \u003ccode\u003e--add-opens\u003c/code\u003e for these classes on recent JDKs.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003ecom.google.gson.graph\u003c/code\u003e by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2990\"\u003egoogle/gson#2990\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis package was not part of any released artifact and depended on Gson internals in potentially problematic ways.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eValidate that strings being parsed as integers consist of ASCII characters by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2995\"\u003egoogle/gson#2995\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003ePreviously, strings could contain non-ASCII Unicode digits and still be parsed as integers. That's inconsistent with how JSON numbers are treated.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix duplicate key detection when first value is null by \u003ca href=\"https://github.com/andrewstellman\"\u003e\u003ccode\u003e@​andrewstellman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/3006\"\u003egoogle/gson#3006\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis could potentially break code that was relying on the incorrect behaviour. For example, this JSON string was previously accepted but will no longer be: \u003ccode\u003e{\u0026quot;foo\u0026quot;: null, \u0026quot;foo\u0026quot;: bar}\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemove \u003ccode\u003eSerializable\u003c/code\u003e from internal \u003ccode\u003eType\u003c/code\u003e implementation classes. by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/3011\"\u003egoogle/gson#3011\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe nested classes \u003ccode\u003eParameterizedTypeImpl\u003c/code\u003e, \u003ccode\u003eGenericArrayTypeImpl\u003c/code\u003e, and \u003ccode\u003eWildcardTypeImpl\u003c/code\u003e in \u003ccode\u003eGsonTypes\u003c/code\u003e are implementations of the corresponding types (without \u003ccode\u003eImpl\u003c/code\u003e) in \u003ccode\u003ejava.lang.reflect\u003c/code\u003e. For some reason, they were serializable, even though the \u003ccode\u003ejava.lang.reflect\u003c/code\u003e implementations are not. Having unnecessarily serializable classes could \u003cem\u003econceivably\u003c/em\u003e have been a security problem if they were part of a larger exploit using serialization. (We do not consider this a likely scenario and do not suggest that you need to update Gson just to get this change.)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eLegacyProtoTypeAdapterFactory\u003c/code\u003e. by \u003ca href=\"https://github.com/eamonnmcmanus\"\u003e\u003ccode\u003e@​eamonnmcmanus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/3014\"\u003egoogle/gson#3014\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is not part of any released artifact, but may be of use when trying to fix code that is currently accessing the internals of protobuf classes via reflection.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake AppendableWriter do flush and close if delegation object supports by \u003ca href=\"https://github.com/MukjepScarlet\"\u003e\u003ccode\u003e@​MukjepScarlet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2925\"\u003egoogle/gson#2925\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther less visible changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd default capacity to EnumTypeAdapter maps by \u003ca href=\"https://github.com/MukjepScarlet\"\u003e\u003ccode\u003e@​MukjepScarlet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2959\"\u003egoogle/gson#2959\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erefactor: move derived adapters from Gson to TypeAdapters by \u003ca href=\"https://github.com/MukjepScarlet\"\u003e\u003ccode\u003e@​MukjepScarlet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2951\"\u003egoogle/gson#2951\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOptimize \u003ccode\u003enew Gson()\u003c/code\u003e by \u003ca href=\"https://github.com/MukjepScarlet\"\u003e\u003ccode\u003e@​MukjepScarlet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/google/gson/pull/2864\"\u003egoogle/gson#2864\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ThirdGoddess\"\u003e\u003ccode\u003e@​ThirdGoddess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/google/gson/pull/2944\"\u003egoogle/gson#2944\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lmj798\"\u003e\u003ccode\u003e@​lmj798\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/google/gson/pull/2988\"\u003egoogle/gson#2988\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Eng-YasminKotb\"\u003e\u003ccode\u003e@​Eng-YasminKotb\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/google/gson/pull/3005\"\u003egoogle/gson#3005\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/andrewstellman\"\u003e\u003ccode\u003e@​andrewstellman\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/google/gson/pull/3006\"\u003egoogle/gson#3006\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/google/gson/compare/gson-parent-2.13.2...gson-parent-2.14.0\"\u003ehttps://github.com/google/gson/compare/gson-parent-2.13.2...gson-parent-2.14.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eGson 2.13.2\u003c/h2\u003e\n\u003cp\u003eThe main changes in this release are just newer dependencies.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/3ff35d6269894901ab8006258395aafc4b9765cd\"\u003e\u003ccode\u003e3ff35d6\u003c/code\u003e\u003c/a\u003e [maven-release-plugin] prepare release gson-parent-2.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/a3024fde2a5c12b9a9a0b6b914ae4899aa574d81\"\u003e\u003ccode\u003ea3024fd\u003c/code\u003e\u003c/a\u003e Bump the maven group with 13 updates (\u003ca href=\"https://redirect.github.com/google/gson/issues/3002\"\u003e#3002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/5689ffe44952ca6ed44c595886b9043286311b23\"\u003e\u003ccode\u003e5689ffe\u003c/code\u003e\u003c/a\u003e Bump the github-actions group across 1 directory with 3 updates (\u003ca href=\"https://redirect.github.com/google/gson/issues/3018\"\u003e#3018\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/48db33cbf93af6b2f5b117dfdfd826de47f7229c\"\u003e\u003ccode\u003e48db33c\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eLegacyProtoTypeAdapterFactory\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/google/gson/issues/3014\"\u003e#3014\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/53d703ee76ca3e951fa4a727307c1f28dbcaf3aa\"\u003e\u003ccode\u003e53d703e\u003c/code\u003e\u003c/a\u003e Update outdated comment regarding serializable types (\u003ca href=\"https://redirect.github.com/google/gson/issues/3012\"\u003e#3012\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/0189b727761f31596d1a27b7c60b42478dc9f331\"\u003e\u003ccode\u003e0189b72\u003c/code\u003e\u003c/a\u003e Remove \u003ccode\u003eSerializable\u003c/code\u003e from internal \u003ccode\u003eType\u003c/code\u003e implementation classes. (\u003ca href=\"https://redirect.github.com/google/gson/issues/3011\"\u003e#3011\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/f4d371d29c04066dbe7fdb31f642831f9c7f40cd\"\u003e\u003ccode\u003ef4d371d\u003c/code\u003e\u003c/a\u003e Fix duplicate key detection when first value is null (\u003ca href=\"https://redirect.github.com/google/gson/issues/3006\"\u003e#3006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/27d9ba1eeeeb156540cf5397504a4f9f256e911f\"\u003e\u003ccode\u003e27d9ba1\u003c/code\u003e\u003c/a\u003e Fix typo in README (JPMS dependencies section) (\u003ca href=\"https://redirect.github.com/google/gson/issues/3005\"\u003e#3005\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/1fa9b7a0a994b006b3be00e2df9de778e71e6807\"\u003e\u003ccode\u003e1fa9b7a\u003c/code\u003e\u003c/a\u003e Validate that strings being parsed as integers consist of ASCII characters (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gson/commit/b7d59549188867deb42e46073fb38735a5beda1c\"\u003e\u003ccode\u003eb7d5954\u003c/code\u003e\u003c/a\u003e Add iterator fail-fast tests for LinkedTreeMap.clear() (\u003ca href=\"https://redirect.github.com/google/gson/issues/2992\"\u003e#2992\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/google/gson/compare/gson-parent-2.10.1...gson-parent-2.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.squareup.retrofit2:retrofit` from 2.9.0 to 3.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/square/retrofit/releases\"\u003ecom.squareup.retrofit2:retrofit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eChanged\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to OkHttp 4.12 (from 3.14).\u003c/p\u003e\n\u003cp\u003eThis is the version of OkHttp that is written in Kotlin, and as a result Retrofit now has a transitive Kotlin dependency. However, this is also the \u003cem\u003esupported\u003c/em\u003e version of OkHttp whereas the previous version was out of support for nearly 4 years.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNote: The 3.x versions of Retrofit maintain forward binary-compatibility with the 2.x versions.\nThis means libraries compiled against 2.x can still be used with the 3.x versions.\u003c/p\u003e\n\u003ch2\u003e2.12.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFirst-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using \u003ccode\u003eCall.enqueue\u003c/code\u003e directly.\u003c/p\u003e\n\u003cp\u003eThe following converters support this feature through a new \u003ccode\u003ewithStreaming()\u003c/code\u003e factory method:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGson\u003c/li\u003e\n\u003cli\u003eJackson\u003c/li\u003e\n\u003cli\u003eMoshi\u003c/li\u003e\n\u003cli\u003eProtobuf\u003c/li\u003e\n\u003cli\u003eWire\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrimitive types used with \u003ccode\u003e@Tag\u003c/code\u003e now work by storing the value boxed with the boxed class as the key.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.11.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe built-in \u003ccode\u003eOptionalConverterFactory\u003c/code\u003e is now public to allow installing it before other converters which consume all types (e.g., Moshi, Gson, Jackson, etc.).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure that exceptions thrown from failure to parse method annotations can be observed by multiple threads/callers. Previously only the first caller would see the actual parsing exception and other callers would get a cryptic \u003ccode\u003eClassCastException\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.10.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport using \u003ccode\u003eUnit\u003c/code\u003e as a response type. This can be used for non-body HTTP methods like \u003ccode\u003eHEAD\u003c/code\u003e or body-containing HTTP methods like \u003ccode\u003eGET\u003c/code\u003e where the body will be discarded without deserialization.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ekotlinx.serialization converter!\u003c/p\u003e\n\u003cp\u003eThis was imported from \u003ca href=\"https://github.com/JakeWharton/retrofit2-kotlinx-serialization-converter/\"\u003egithub.com/JakeWharton/retrofit2-kotlinx-serialization-converter/\u003c/a\u003e and remains unchanged from its 1.0.0 release.\u003c/p\u003e\n\u003cp\u003eThe Maven coordinates are \u003ccode\u003ecom.squareup.retrofit2:converter-kotlinx-serialization\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eJAXB 3 converter!\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/square/retrofit/blob/trunk/CHANGELOG.md\"\u003ecom.squareup.retrofit2:retrofit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/square/retrofit/releases/tag/3.0.0\"\u003e3.0.0\u003c/a\u003e - 2025-05-15\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eChanged\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to OkHttp 4.12 (from 3.14).\u003c/p\u003e\n\u003cp\u003eThis is the version of OkHttp that is written in Kotlin, and as a result Retrofit now has a transitive Kotlin dependency. However, this is also the \u003cem\u003esupported\u003c/em\u003e version of OkHttp whereas the previous version was out of support for nearly 4 years.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNote: The 3.x versions of Retrofit maintain forward binary-compatibility with the 2.x versions.\nThis means libraries compiled against 2.x can still be used with the 3.x versions.\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/square/retrofit/releases/tag/2.12.0\"\u003e2.12.0\u003c/a\u003e - 2025-05-15\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFirst-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using \u003ccode\u003eCall.enqueue\u003c/code\u003e directly.\u003c/p\u003e\n\u003cp\u003eThe following converters support this feature through a new \u003ccode\u003ewithStreaming()\u003c/code\u003e factory method:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGson\u003c/li\u003e\n\u003cli\u003eJackson\u003c/li\u003e\n\u003cli\u003eMoshi\u003c/li\u003e\n\u003cli\u003eProtobuf\u003c/li\u003e\n\u003cli\u003eWire\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrimitive types used with \u003ccode\u003e@Tag\u003c/code\u003e now work by storing the value boxed with the boxed class as the key.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[2.11.0] - 2024-03-28\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe built-in \u003ccode\u003eOptionalConverterFactory\u003c/code\u003e is now public to allow installing it before other converters which consume all types (e.g., Moshi, Gson, Jackson, etc.).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure that exceptions thrown from failure to parse method annotations can be observed by multiple threads/callers. Previously only the first caller would see the actual parsing exception and other callers would get a cryptic \u003ccode\u003eClassCastException\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[2.10.0] - 2024-03-18\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport using \u003ccode\u003eUnit\u003c/code\u003e as a response type. This can be used for non-body HTTP methods like \u003ccode\u003eHEAD\u003c/code\u003e or body-containing HTTP methods like \u003ccode\u003eGET\u003c/code\u003e where the body will be discarded without deserialization.\u003c/li\u003e\n\u003cli\u003ekotlinx.serialization converter!\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/3ab0f1a2c18666adb79ebf4eacef6fbc40d3e801\"\u003e\u003ccode\u003e3ab0f1a\u003c/code\u003e\u003c/a\u003e Prepare version 3.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/e5c02d08f3777ce00a31fb37d77f15eecdf4e383\"\u003e\u003ccode\u003ee5c02d0\u003c/code\u003e\u003c/a\u003e Commit 2.x docs (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4378\"\u003e#4378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/5bc3f183cfa24ab1f382c2029dc82ee292caef1b\"\u003e\u003ccode\u003e5bc3f18\u003c/code\u003e\u003c/a\u003e Fix links on the proudction site (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4377\"\u003e#4377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/7c3b2290bd6cd985ebaa93bfc183abd1bf04b977\"\u003e\u003ccode\u003e7c3b229\u003c/code\u003e\u003c/a\u003e Remove compileOnly stdlib dependency (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4376\"\u003e#4376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/84185470adc33a0f1b3d8766f2d722c770e2e89a\"\u003e\u003ccode\u003e8418547\u003c/code\u003e\u003c/a\u003e Update okhttp monorepo to v4 (major) (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4375\"\u003e#4375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/06216a3b24ad828e511fd25b4858a1ed104c8719\"\u003e\u003ccode\u003e06216a3\u003c/code\u003e\u003c/a\u003e Try to fix removal of latest dir during release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/1697bdc4913a34871125c96c7be16b688c6e82bc\"\u003e\u003ccode\u003e1697bdc\u003c/code\u003e\u003c/a\u003e Prepare next development version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/5a6ce364ad5208999a8e0847de760f97d39ecffe\"\u003e\u003ccode\u003e5a6ce36\u003c/code\u003e\u003c/a\u003e Prepare version 2.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/4fb8aed0cc6ebcc581d128922768867ae14e85c1\"\u003e\u003ccode\u003e4fb8aed\u003c/code\u003e\u003c/a\u003e Fix artifact name (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4372\"\u003e#4372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/bf11ef4cfaa3c50967f79e87b3e27f33670b42bc\"\u003e\u003ccode\u003ebf11ef4\u003c/code\u003e\u003c/a\u003e Dedicated website build, final status job (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/square/retrofit/compare/2.9.0...3.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.squareup.retrofit2:converter-gson` from 2.9.0 to 3.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/square/retrofit/releases\"\u003ecom.squareup.retrofit2:converter-gson's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.0.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eChanged\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to OkHttp 4.12 (from 3.14).\u003c/p\u003e\n\u003cp\u003eThis is the version of OkHttp that is written in Kotlin, and as a result Retrofit now has a transitive Kotlin dependency. However, this is also the \u003cem\u003esupported\u003c/em\u003e version of OkHttp whereas the previous version was out of support for nearly 4 years.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNote: The 3.x versions of Retrofit maintain forward binary-compatibility with the 2.x versions.\nThis means libraries compiled against 2.x can still be used with the 3.x versions.\u003c/p\u003e\n\u003ch2\u003e2.12.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFirst-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using \u003ccode\u003eCall.enqueue\u003c/code\u003e directly.\u003c/p\u003e\n\u003cp\u003eThe following converters support this feature through a new \u003ccode\u003ewithStreaming()\u003c/code\u003e factory method:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGson\u003c/li\u003e\n\u003cli\u003eJackson\u003c/li\u003e\n\u003cli\u003eMoshi\u003c/li\u003e\n\u003cli\u003eProtobuf\u003c/li\u003e\n\u003cli\u003eWire\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrimitive types used with \u003ccode\u003e@Tag\u003c/code\u003e now work by storing the value boxed with the boxed class as the key.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.11.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe built-in \u003ccode\u003eOptionalConverterFactory\u003c/code\u003e is now public to allow installing it before other converters which consume all types (e.g., Moshi, Gson, Jackson, etc.).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure that exceptions thrown from failure to parse method annotations can be observed by multiple threads/callers. Previously only the first caller would see the actual parsing exception and other callers would get a cryptic \u003ccode\u003eClassCastException\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.10.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport using \u003ccode\u003eUnit\u003c/code\u003e as a response type. This can be used for non-body HTTP methods like \u003ccode\u003eHEAD\u003c/code\u003e or body-containing HTTP methods like \u003ccode\u003eGET\u003c/code\u003e where the body will be discarded without deserialization.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ekotlinx.serialization converter!\u003c/p\u003e\n\u003cp\u003eThis was imported from \u003ca href=\"https://github.com/JakeWharton/retrofit2-kotlinx-serialization-converter/\"\u003egithub.com/JakeWharton/retrofit2-kotlinx-serialization-converter/\u003c/a\u003e and remains unchanged from its 1.0.0 release.\u003c/p\u003e\n\u003cp\u003eThe Maven coordinates are \u003ccode\u003ecom.squareup.retrofit2:converter-kotlinx-serialization\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eJAXB 3 converter!\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/square/retrofit/blob/trunk/CHANGELOG.md\"\u003ecom.squareup.retrofit2:converter-gson's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/square/retrofit/releases/tag/3.0.0\"\u003e3.0.0\u003c/a\u003e - 2025-05-15\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eChanged\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpgrade to OkHttp 4.12 (from 3.14).\u003c/p\u003e\n\u003cp\u003eThis is the version of OkHttp that is written in Kotlin, and as a result Retrofit now has a transitive Kotlin dependency. However, this is also the \u003cem\u003esupported\u003c/em\u003e version of OkHttp whereas the previous version was out of support for nearly 4 years.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNote: The 3.x versions of Retrofit maintain forward binary-compatibility with the 2.x versions.\nThis means libraries compiled against 2.x can still be used with the 3.x versions.\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/square/retrofit/releases/tag/2.12.0\"\u003e2.12.0\u003c/a\u003e - 2025-05-15\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFirst-party converters now support deferring serialization to happen when the request body is written (i.e., during HTTP execution) rather than when the HTTP request is created. In some cases this moves conversion from a calling thread to a background thread, such as in the case when using \u003ccode\u003eCall.enqueue\u003c/code\u003e directly.\u003c/p\u003e\n\u003cp\u003eThe following converters support this feature through a new \u003ccode\u003ewithStreaming()\u003c/code\u003e factory method:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGson\u003c/li\u003e\n\u003cli\u003eJackson\u003c/li\u003e\n\u003cli\u003eMoshi\u003c/li\u003e\n\u003cli\u003eProtobuf\u003c/li\u003e\n\u003cli\u003eWire\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrimitive types used with \u003ccode\u003e@Tag\u003c/code\u003e now work by storing the value boxed with the boxed class as the key.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[2.11.0] - 2024-03-28\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe built-in \u003ccode\u003eOptionalConverterFactory\u003c/code\u003e is now public to allow installing it before other converters which consume all types (e.g., Moshi, Gson, Jackson, etc.).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure that exceptions thrown from failure to parse method annotations can be observed by multiple threads/callers. Previously only the first caller would see the actual parsing exception and other callers would get a cryptic \u003ccode\u003eClassCastException\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[2.10.0] - 2024-03-18\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport using \u003ccode\u003eUnit\u003c/code\u003e as a response type. This can be used for non-body HTTP methods like \u003ccode\u003eHEAD\u003c/code\u003e or body-containing HTTP methods like \u003ccode\u003eGET\u003c/code\u003e where the body will be discarded without deserialization.\u003c/li\u003e\n\u003cli\u003ekotlinx.serialization converter!\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/3ab0f1a2c18666adb79ebf4eacef6fbc40d3e801\"\u003e\u003ccode\u003e3ab0f1a\u003c/code\u003e\u003c/a\u003e Prepare version 3.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/e5c02d08f3777ce00a31fb37d77f15eecdf4e383\"\u003e\u003ccode\u003ee5c02d0\u003c/code\u003e\u003c/a\u003e Commit 2.x docs (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4378\"\u003e#4378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/5bc3f183cfa24ab1f382c2029dc82ee292caef1b\"\u003e\u003ccode\u003e5bc3f18\u003c/code\u003e\u003c/a\u003e Fix links on the proudction site (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4377\"\u003e#4377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/7c3b2290bd6cd985ebaa93bfc183abd1bf04b977\"\u003e\u003ccode\u003e7c3b229\u003c/code\u003e\u003c/a\u003e Remove compileOnly stdlib dependency (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4376\"\u003e#4376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/84185470adc33a0f1b3d8766f2d722c770e2e89a\"\u003e\u003ccode\u003e8418547\u003c/code\u003e\u003c/a\u003e Update okhttp monorepo to v4 (major) (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4375\"\u003e#4375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/06216a3b24ad828e511fd25b4858a1ed104c8719\"\u003e\u003ccode\u003e06216a3\u003c/code\u003e\u003c/a\u003e Try to fix removal of latest dir during release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/1697bdc4913a34871125c96c7be16b688c6e82bc\"\u003e\u003ccode\u003e1697bdc\u003c/code\u003e\u003c/a\u003e Prepare next development version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/5a6ce364ad5208999a8e0847de760f97d39ecffe\"\u003e\u003ccode\u003e5a6ce36\u003c/code\u003e\u003c/a\u003e Prepare version 2.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/4fb8aed0cc6ebcc581d128922768867ae14e85c1\"\u003e\u003ccode\u003e4fb8aed\u003c/code\u003e\u003c/a\u003e Fix artifact name (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4372\"\u003e#4372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/square/retrofit/commit/bf11ef4cfaa3c50967f79e87b3e27f33670b42bc\"\u003e\u003ccode\u003ebf11ef4\u003c/code\u003e\u003c/a\u003e Dedicated website build, final status job (\u003ca href=\"https://redirect.github.com/square/retrofit/issues/4371\"\u003e#4371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/square/retrofit/compare/2.9.0...3.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gradle-wrapper` from 8.11.1 to 9.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/gradle/gradle/releases\"\u003egradle-wrapper's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.5.0\u003c/h2\u003e\n\u003cp\u003eThe Gradle team is excited to announce Gradle 9.5.0.\u003c/p\u003e\n\u003cp\u003eHere are the highlights of this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTask provenance in reports and failure messages\u003c/li\u003e\n\u003cli\u003eType-safe accessors for precompiled Kotlin Settings plugins\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.gradle.org/9.5.0/release-notes.html\"\u003eRead the Release Notes\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWe would like to thank the following community members for their contributions to this release of Gradle:\n\u003ca href=\"https://github.com/atm1020\"\u003eatm1020\u003c/a\u003e,\n\u003ca href=\"https://github.com/mataha\"\u003emataha\u003c/a\u003e,\n\u003ca href=\"https://github.com/aSemy\"\u003eAdam\u003c/a\u003e,\n\u003ca href=\"https://github.com/kelemen\"\u003eAttila Kelemen\u003c/a\u003e,\n\u003ca href=\"https://github.com/britter\"\u003eBenedikt Ritter\u003c/a\u003e,\n\u003ca href=\"https://github.com/Vampire\"\u003eBjörn Kautler\u003c/a\u003e,\n\u003ca href=\"https://github.com/budindepunk\"\u003eCaro Silva Rode\u003c/a\u003e,\n\u003ca href=\"https://github.com/chanani\"\u003eCHANHAN\u003c/a\u003e,\n\u003ca href=\"https://github.com/DmitryNez\"\u003eDmitry Nezavitin\u003c/a\u003e,\n\u003ca href=\"https://github.com/Juneezee\"\u003eEng Zer Jun\u003c/a\u003e,\n\u003ca href=\"https://github.com/KugelLibelle\"\u003eKugelLibelle\u003c/a\u003e,\n\u003ca href=\"https://github.com/vmadalin\"\u003eMadalin Valceleanu\u003c/a\u003e,\n\u003ca href=\"https://github.com/quijote\"\u003eMarkus Gaisbauer\u003c/a\u003e,\n\u003ca href=\"https://github.com/koppor\"\u003eOliver Kopp\u003c/a\u003e,\n\u003ca href=\"https://github.com/hfhbd\"\u003ePhilip Wedemann\u003c/a\u003e,\n\u003ca href=\"https://github.com/ploober\"\u003eploober\u003c/a\u003e,\n\u003ca href=\"https://github.com/rpalcolea\"\u003eRoberto Perez Alcolea\u003c/a\u003e,\n\u003ca href=\"https://github.com/R0h1tAnand\"\u003eRohit Anand\u003c/a\u003e,\n\u003ca href=\"https://github.com/Suvrat1629\"\u003eSuvrat Acharya\u003c/a\u003e,\n\u003ca href=\"https://github.com/usv240\"\u003eUjwal Suresh Vanjare\u003c/a\u003e,\n\u003ca href=\"https://github.com/urdak\"\u003eVictor Merkulov\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eUpgrade instructions\u003c/h2\u003e\n\u003cp\u003eSwitch your build to use Gradle 9.5.0 by updating your wrapper:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e./gradlew wrapper --gradle-version=9.5.0 \u0026amp;\u0026amp; ./gradlew wrapper\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the Gradle \u003ca href=\"https://docs.gradle.org/9.5.0/userguide/upgrading_version_9.html\"\u003e9.x upgrade guide\u003c/a\u003e to learn about deprecations, breaking changes and other considerations when upgrading.\u003c/p\u003e\n\u003cp\u003eFor Java, Groovy, Kotlin and Android compatibility, see the \u003ca href=\"https://docs.gradle.org/9.5.0/userguide/compatibility.html\"\u003efull compatibility notes\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReporting problems\u003c/h2\u003e\n\u003cp\u003eIf you find a problem with this release, please file a bug on \u003ca href=\"https://github.com/gradle/gradle/issues\"\u003eGitHub Issues\u003c/a\u003e adhering to our issue guidelines.\nIf you're not sure you're encountering a bug, please use the \u003ca href=\"https://discuss.gradle.org/c/help-discuss\"\u003eforum\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe hope you will build happiness with Gradle, and we look forward to your feedback via \u003ca href=\"https://twitter.com/gradle\"\u003eTwitter\u003c/a\u003e or on \u003ca href=\"https://github.com/gradle\"\u003eGitHub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003e9.5.0 RC4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/3fe117d68f3907790f3809f121aa36303a9151f8\"\u003e\u003ccode\u003e3fe117d\u003c/code\u003e\u003c/a\u003e Update jdks.yaml (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37703\"\u003e#37703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/33d145af6fbe7cf7c9d84646b6d7f32fea91d5e2\"\u003e\u003ccode\u003e33d145a\u003c/code\u003e\u003c/a\u003e Update jdks.yaml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/f7a05d1ed48442eb5da4d6e2b6593da55cdec1da\"\u003e\u003ccode\u003ef7a05d1\u003c/code\u003e\u003c/a\u003e Update Gradle wrapper to version 9.5.0-rc-4 (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37654\"\u003e#37654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/266facdcbcb0b4c60120cc118eaf0f652bfcdfe5\"\u003e\u003ccode\u003e266facd\u003c/code\u003e\u003c/a\u003e Update Gradle wrapper to version 9.5.0-rc-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/0ad6dd8e143455707e444aa7e3d38327a3366513\"\u003e\u003ccode\u003e0ad6dd8\u003c/code\u003e\u003c/a\u003e Suppress OSC taskbar reset on plain/piped stdout (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37646\"\u003e#37646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/966025d5850d46c9158a2f25e4096222277ecf57\"\u003e\u003ccode\u003e966025d\u003c/code\u003e\u003c/a\u003e Suppress OSC taskbar reset on plain/piped stdout\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/e7455734449e422accebf44cf7b31bf93e3a770c\"\u003e\u003ccode\u003ee745573\u003c/code\u003e\u003c/a\u003e Polish IP docs (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37642\"\u003e#37642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/d5cfd079acd2c8f1182edd6ec23dbab571132d0a\"\u003e\u003ccode\u003ed5cfd07\u003c/code\u003e\u003c/a\u003e Ensure BuildOperationQueue will progress without extra leases (\u003ca href=\"https://redirect.github.com/gradle/gradle/issues/37629\"\u003e#37629\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/acdf0c36fa13ba09a7ff5b51f79b9af4b1a097ee\"\u003e\u003ccode\u003eacdf0c3\u003c/code\u003e\u003c/a\u003e Ensure BuildOperationQueue will progress without extra leases\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gradle/gradle/commit/f7d0e4f6f7896426a8b24091388e4c252b62faef\"\u003e\u003ccode\u003ef7d0e4f\u003c/code\u003e\u003c/a\u003e Rename anchor\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gradle/gradle/compare/v8.11.1...v9.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.core:core-ktx` from 1.16.0 to 1.18.0\n\nUpdates `androidx.test.ext:junit` from 1.2.1 to 1.3.0\n\nUpdates `androidx.test.espresso:espresso-core` from 3.6.1 to 3.7.0\n\nUpdates `androidx.lifecycle:lifecycle-runtime-ktx` from 2.8.7 to 2.10.0\n\nUpdates `androidx.activity:activity-compose` from 1.10.1 to 1.13.0\n\nUpdates `androidx.compose:compose-bom` from 2024.09.00 to 2026.05.00\n\nUpdates `androidx.appcompat:appcompat` from 1.7.0 to 1.7.1\n\nUpdates `com.google.android.material:material` from 1.12.0 to 1.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/material-components/material-components-android/releases\"\u003ecom.google.android.material:material's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.13.0\u003c/h2\u003e\n\u003ch1\u003eNew in 1.13.0!\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eDockedToolbarLayout\u003c/code\u003e (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/lib/java/com/google/android/material/dockedtoolbar/DockedToolbarLayout.java\"\u003esource\u003c/a\u003e, \u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/DockedToolbar.md\"\u003edoc\u003c/a\u003e, \u003ca href=\"https://m3.material.io/components/toolbars/overview\"\u003espec\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eFloatingToolbarLayout\u003c/code\u003e (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/lib/java/com/google/android/material/floatingtoolbar/FloatingToolbarLayout.java\"\u003esource\u003c/a\u003e, \u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/FloatingToolbar.md\"\u003edoc\u003c/a\u003e, \u003ca href=\"https://m3.material.io/components/toolbars/overview\"\u003espec\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eLoadingIndicator\u003c/code\u003e (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/lib/java/com/google/android/material/loadingindicator/LoadingIndicator.java\"\u003esource\u003c/a\u003e, \u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/LoadingIndicator.md\"\u003edoc\u003c/a\u003e, \u003ca href=\"https://m3.material.io/components/loading-indicator/overview\"\u003espec\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMaterialSplitButton\u003c/code\u003e (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/lib/java/com/google/android/material/button/MaterialSplitButton.java\"\u003esource\u003c/a\u003e, \u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/SplitButton.md\"\u003edoc\u003c/a\u003e, \u003ca href=\"https://m3.material.io/components/split-button/overview\"\u003espec\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMaterialButtonGroup\u003c/code\u003e (\u003ca href=\"https://github.com/material-components/material-components-android/blob/master/lib/java/com/google/android/material/button/MaterialButtonGroup.java\"\u003esource\u003c/a\u003e, \u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/components/ButtonGroup.md\"\u003edoc\u003c/a\u003e, \u003ca href=\"https://m3.material.io/components/button-groups/overview\"\u003espec\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImportant\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRequired \u003ccode\u003eminSdkVersion\u003c/code\u003e is now 21 or higher, for Material and \u003ca href=\"https://developer.android.com/jetpack/androidx/versions#version-table\"\u003eAndroidX\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eNow built with \u003ccode\u003ecompileSdkVersion\u003c/code\u003e 35, Android Gradle Plugin (AGP) 8.7.3, Gradle 8.9, and \u003ccode\u003eandroid.nonTransitiveRClass=true\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003eThis means that \u003ca href=\"https://developer.android.com/build/optimize-your-build#use-non-transitive-r-classes\"\u003eR classes are no longer transitive\u003c/a\u003e and resources must be fully qualified with their library path when used programmatically (see the \u003ca href=\"https://github.com/material-components/material-components-android/blob/master/docs/getting-started.md#non-transitive-r-classes-referencing-library-resources-programmatically\"\u003eGetting Started guide\u003c/a\u003e for more info).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eMaterial 3 Expressive has moved to the 1.14.0 versions of the library. To get a sneak peak, update to version \u003ca href=\"https://github.com/material-components/material-components-android/releases/tag/1.14.0-alpha04\"\u003e1.14.0-alpha04\u003c/a\u003e and use the \u003ccode\u003eMaterial3Expressive\u003c/code\u003e themes/styles in conjunction with new components mentioned above.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDependency Updates\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eDependency\u003c/th\u003e\n\u003cth\u003ePrevious version\u003c/th\u003e\n\u003cth\u003eNew version\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.appcompat:appcompat\u003c/td\u003e\n\u003ctd\u003e1.6.1\u003c/td\u003e\n\u003ctd\u003e1.7.0\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.constraintlayout:constraintlayout\u003c/td\u003e\n\u003ctd\u003e2.0.1\u003c/td\u003e\n\u003ctd\u003e2.1.0\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.dynamicanimation:dynamicanimation\u003c/td\u003e\n\u003ctd\u003e1.0.0\u003c/td\u003e\n\u003ctd\u003e1.1.0\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eandroidx.graphics:graphics-shapes\u003c/td\u003e\n\u003ctd\u003eN/A\u003c/td\u003e\n\u003ctd\u003e1.0.1\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ecom.android.tools.build:gradle\u003c/td\u003e\n\u003ctd\u003e7.4.2\u003c/td\u003e\n\u003ctd\u003e8.7.3\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eLibrary Updates\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eA11y\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eInclude \u0026quot;hour\u0026quot; and \u0026quot;minute\u0026quot; in announcements. For example: \u0026quot;Not checked, Hour - 11'0 clock. double tap to select Hour\u0026quot;. (960bb4cb825c607c244d51ed4f302752912e37cc)\u003c/li\u003e\n\u003cli\u003eMove responsibility of disabling hide on scroll to HideViewOnScrollBehavior and BottomAppBar (9c33476db68ffc15151b742516da2f7e8c4a98f7)\u003c/li\u003e\n\u003cli\u003ePrevent hide on scroll when Talkback is on (d56070586102b66486f7f8697de077c3d7689922)\u003c/li\u003e\n\u003cli\u003eAdd missing 'button' mention to Talkback output for close icon. (79bd7d7b1ba46b0593c7758a81b02bdb5a1dbf67)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBottomNavigationView\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate catalog demo to demonstrate adaptive bottom navigation bar (76936c42c43164b9930f616266f215bf7045003a)\u003c/li\u003e\n\u003cli\u003eFix early return in setItemGravity() (8a4d3c695117c46cf1c7235744d81196fb97110f)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eBottomSheet\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent ACTION_DOWN events on the BottomSheetHandleDragView from setting touchingScrollChild to true. (af7f254bf660704368d46e630d34a81c479fa1c7)\u003c/li\u003e\n\u003cli\u003eFix keyboard animation on Android 14 (a0b4dfa8769f98851efe97569c900f75eb0d5ef2)\u003c/li\u003e\n\u003cli\u003eFixed main catalog demo cutting off content when screen size is too small. (005687d1b64ea5542168183511861f7d023682da)\u003c/li\u003e\n\u003cli\u003eRemove disruptive announcement \u0026quot;Drag handle double tapped\u0026quot;for BottomSheetDragHandleView. (95025c6728e49946c55d4b2688f97fa1d321cd02)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCarousel\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eRecyclerview children do not inherit layout direction (ca0b870a344ef6e8f5fadc1ec417ef11f5b23340)\u003c/li\u003e\n\u003cli\u003eUpdate keyline state if necessary if item size changes (52228c1b3bd50dd1a81bdaae40aeb93ef4d9ea9b)\u003c/li\u003e\n\u003cli\u003eUpdate multi-browse strategy to always have at least 1 medium item (916e9085f9ca66704f907fd6af14d7e55df5d411)\u003c/li\u003e\n\u003cli\u003eRecalculate keyline state if it doesn't match the current container size (d0f5d721a1f83b3b115d7f20bf865fb1df9063a3)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCheckbox\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate translations. (771119111e58d101f2540f0bbbb572073ff9c053)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eChip\u003c/code\u003e\n\u003cul\u003e\n\u003cli\u003eGet default minTouchTargetSize from material attributes (436437a6fbf2d28658fea46320a350db33c7a455)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003eshow all\u003c/code\u003e Chip for a11y (8e334213fc806b399ec014bdf68a3778064de308)\u003c/li\u003e\n\u003cli\u003eUpdated flow layout to correctly layout padding when in RTL. (1eaf483fc94f522546d349e6984e24c15d226d18)\u003c/li\u003e\n\u003cli\u003eFix close icon focus ripple (a7ff8c9006b69cbfcc346f74ed8a9ebad6661346)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/84c0e6d6d493fcf176d2099683245b78afbeb78d\"\u003e\u003ccode\u003e84c0e6d\u003c/code\u003e\u003c/a\u003e Update library version to 1.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/46fde74a93f1a1e88eeeff91266086853365e437\"\u003e\u003ccode\u003e46fde74\u003c/code\u003e\u003c/a\u003e [Theme] Added missing Shape Attributes to Dialog themes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/8f58fcc6fcd5af77a249db19f94501c5a7a06a20\"\u003e\u003ccode\u003e8f58fcc\u003c/code\u003e\u003c/a\u003e Update library version to 1.13.0-rc01\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/64867cf0242dcbd358decdc21f6210614ea9bbd8\"\u003e\u003ccode\u003e64867cf\u003c/code\u003e\u003c/a\u003e [ProgressIndicator] Updated to not throw exceptions for calling `setIndetermi...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/f89b8afeb7fcf48201a44d62f6663523eadc2963\"\u003e\u003ccode\u003ef89b8af\u003c/code\u003e\u003c/a\u003e [LoadingIndicator] Added a default static drawable, which is displayed when t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/d56330d6a14db489bf9453da739c2ed4c029f384\"\u003e\u003ccode\u003ed56330d\u003c/code\u003e\u003c/a\u003e Update library version to 1.13.0-beta01\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/1886cf0485a7a9297fa847c7bec6ac6055025548\"\u003e\u003ccode\u003e1886cf0\u003c/code\u003e\u003c/a\u003e [LoadingIndicator] Fixed the animation no constant rotation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/61c5a6d042111cb90bdf2ad4fc626925f397700c\"\u003e\u003ccode\u003e61c5a6d\u003c/code\u003e\u003c/a\u003e [Internal] Restore binary compatibility (ViewOverlay)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/e722464dbc039cfb3282b2d58df93b4f538bbe6e\"\u003e\u003ccode\u003ee722464\u003c/code\u003e\u003c/a\u003e [MaterialButton] Updated the shapes of buttons when the orientation is changed.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/material-components/material-components-android/commit/df9074c4f5cbb79fcd78ba1002b1131fd57db1f0\"\u003e\u003ccode\u003edf9074c\u003c/code\u003e\u003c/a\u003e [ButtonGroup] Fixed connected button groups to not morph button size.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/material-components/material-components-android/compare/1.12.0...1.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `androidx.constraintlayout:constraintlayout` from 2.1.4 to 2.2.1\n\nUpdates `com.github.bumptech.glide:glide` from 4.15.1 to 5.0.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/bumptech/glide/releases\"\u003ecom.github.bumptech.glide:glide's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eGlide v5.0.7\u003c/h2\u003e\n\u003ch2\u003eCompose\u003c/h2\u003e\n\u003cp\u003eN/A\u003c/p\u003e\n\u003ch2\u003eKTX\u003c/h2\u003e\n\u003cp\u003eN/A\u003c/p\u003e\n\u003ch2\u003eBuild Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd missing version bump\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cp\u003eN/A\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/bumptech/glide/compare/v5.0.6...v5.0.7\"\u003ehttps://github.com/bumptech/glide/compare/v5.0.6...v5.0.7\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eGlide v5.0.6\u003c/h2\u003e\n\u003ch2\u003eCompose\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVersion bump to 1.0.0-beta09\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eKTX\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVersion bump to 1.0.0-beta09\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBuild Changes\u003c/h2\u003e\n\u003cp\u003eN/A\u003c/p\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSet the background memory category only when trim level is higher than TRIM_MEMORY_UI_HIDDEN. See \u003ca href=\"https://redirect.github.com/bumptech/glide/pull/5669\"\u003ebumptech/glide#5669\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop appending requireOriginal to URIs loaded by Glide on Android R+. See \u003ca href=\"https://redirect.github.com/bumptech/glide/pull/5668\"\u003ebumptech/glide#5668\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eConverting a second set of Groovy Gradle files to Kotlin DSL. See \u003ca href=\"https://redirect.github.com/bumptech/glide/pull/5639\"\u003ebumptech/glide#5639\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigrate from Robolectric's Util.readBytes to Guava ByteStreams. See \u003ca href=\"https://redirect.github.com/bumptech/glide/pull/5636\"\u003ebumptech/glide#5636\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/bumptech/glide/compare/v5.0.5...v5.0.6\"\u003ehttps://github.com/bumptech/glide/compare/v5.0.5...v5.0.6\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eGlide v5.0.5\u003c/h2\u003e\n\u003ch2\u003eCompose\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVersion bump to 1.0.0-beta08\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eKTX\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVersion bump to 1.0.0-beta08\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBuild Changes\u003c/h2\u003e\n\u003cp\u003eN/A\u003c/p\u003e\n\u003ch2\u003eBugs\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestores GlideUrl fix for urls with IPV6 addresses fix that was accidentally reverted in 5.0.4. See \u003ca href=\"https://redirect.github.com/bumptech/glide/pull/5444\"\u003ebumptech/glide#5444\u003c/a\u003e for details\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/bumptech/glide/compare/v5.0.4...v5.0.5\"\u003ehttps://github.com/bumptech/glide/compare/v5.0.4...v5.0.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eGlide v5.0.4\u003c/h2\u003e\n\u003ch2\u003eCompose\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/c751c283ed852f73b7fd6f0ed8ba5b8b7e452b38\"\u003e\u003ccode\u003ec751c28\u003c/code\u003e\u003c/a\u003e Bump to 5.0.7 (\u003ca href=\"https://redirect.github.com/bumptech/glide/issues/5673\"\u003e#5673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/91f33f02ce5317075066a14e16038dd573d492fb\"\u003e\u003ccode\u003e91f33f0\u003c/code\u003e\u003c/a\u003e Bump ktx and compose versions to 1.0.0-beta09 (\u003ca href=\"https://redirect.github.com/bumptech/glide/issues/5672\"\u003e#5672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/c17a83cf5691671e13df259dd251f65a47007281\"\u003e\u003ccode\u003ec17a83c\u003c/code\u003e\u003c/a\u003e Update isAndroidPickerUri to support new picker URI variations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/c0a2dd4b1f7fa1f4d06474e660f921d80b6a9f2d\"\u003e\u003ccode\u003ec0a2dd4\u003c/code\u003e\u003c/a\u003e Stop appending requireOriginal to URIs loaded by Glide on Android R+\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/03ab8ba0168110d53d41267096663b5c8751a5b4\"\u003e\u003ccode\u003e03ab8ba\u003c/code\u003e\u003c/a\u003e A trim level of TRIM_MEMORY_UI_HIDDEN is applicable to a process with a state...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/d4278e03c08216c49f0cf6147447693eaadb30fb\"\u003e\u003ccode\u003ed4278e0\u003c/code\u003e\u003c/a\u003e Bump Gradle to 8.14.4.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/b12f574fd6ea20430c55c5a2eb29d624d843bf3e\"\u003e\u003ccode\u003eb12f574\u003c/code\u003e\u003c/a\u003e Allow limiting the size of LruBitmapPool/MemoryCache when in background\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/82657e94c17267743b866ce475d98f33dd551955\"\u003e\u003ccode\u003e82657e9\u003c/code\u003e\u003c/a\u003e No public description\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/d5915398eb200c6795aa3bfbcc4c6c2db1cf8b06\"\u003e\u003ccode\u003ed591539\u003c/code\u003e\u003c/a\u003e Allow limiting the size of LruBitmapPool/MemoryCache when in background\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bumptech/glide/commit/5e158121a6cac01503f1e0f6c312aa241f045552\"\u003e\u003ccode\u003e5e15812\u003c/code\u003e\u003c/a\u003e Converting a second set of Groovy Gradle files to Kotlin DSL.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/bumptech/glide/compare/v4.15.1...v5.0.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `com.android.application` from 8.9.1 to 9.2.1\n\nUpdates `org.jetbrains.kotlin.android` from 2.0.21 to 2.3.21\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.android's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.3.21\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84610\"\u003e\u003ccode\u003eKT-84610\u003c/code\u003e\u003c/a\u003e [Wasm] Failed to compile klibs in IC mode\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84566\"\u003e\u003ccode\u003eKT-84566\u003c/code\u003e\u003c/a\u003e Prevent launching Default dispatcher threads from IJ SDK in kotlin compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85358\"\u003e\u003ccode\u003eKT-85358\u003c/code\u003e\u003c/a\u003e Native: roll back the workaround for KT-84678 once MapLibre has been properly fixed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85626\"\u003e\u003ccode\u003eKT-85626\u003c/code\u003e\u003c/a\u003e  \u003ccode\u003e@JvmRecord\u003c/code\u003e in commonMain breaks compileCommonMainKotlinMetadata with \u0026quot;Cannot access 'java.lang.Record'\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85405\"\u003e\u003ccode\u003eKT-85405\u003c/code\u003e\u003c/a\u003e Postpone/Revert \u003ccode\u003eDontIgnoreUpperBoundViolatedOnImplicitArguments\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84678\"\u003e\u003ccode\u003eKT-84678\u003c/code\u003e\u003c/a\u003e K/N: Undefined symbol from SPM-added ObjC frameworks when linking iOS target\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85021\"\u003e\u003ccode\u003eKT-85021\u003c/code\u003e\u003c/a\u003e False positive SUBCLASS_CANT_CALL_COMPANION_PROTECTED_NON_STATIC error in multi-module project\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eJavaScript\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-82395\"\u003e\u003ccode\u003eKT-82395\u003c/code\u003e\u003c/a\u003e Support top-level declarations from compiler plugins in JS incremental compilation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84475\"\u003e\u003ccode\u003eKT-84475\u003c/code\u003e\u003c/a\u003e K/JS: false-positive exportability warnings in multi-module project\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84633\"\u003e\u003ccode\u003eKT-84633\u003c/code\u003e\u003c/a\u003e Kotlin/JS: \u0026quot;Serializer for class not found\u0026quot; error when IR output granularity is \u003ccode\u003ewhole-program\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85047\"\u003e\u003ccode\u003eKT-85047\u003c/code\u003e\u003c/a\u003e Kotlin/JS: \u003ccode\u003e@JsStatic\u003c/code\u003e on suspend fun of class companion generates incorrect d.ts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84517\"\u003e\u003ccode\u003eKT-84517\u003c/code\u003e\u003c/a\u003e K/JS: bad mappings data in outputted Kotlin stdlib source map\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eLibraries\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-71848\"\u003e\u003ccode\u003eKT-71848\u003c/code\u003e\u003c/a\u003e Kotlinx.metadata: Add \u003ccode\u003eCompilerPluginData\u003c/code\u003e into Km API\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNative. C and ObjC Import\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85399\"\u003e\u003ccode\u003eKT-85399\u003c/code\u003e\u003c/a\u003e Kotlin/Native: TypeCastException when casting ObjC Protocol MetaClass with genericSafeCasts enabled\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85508\"\u003e\u003ccode\u003eKT-85508\u003c/code\u003e\u003c/a\u003e K/N: TypeCastException when using nw_parameters_create_secure_tcp block parameter on 2.3.20\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84729\"\u003e\u003ccode\u003eKT-84729\u003c/code\u003e\u003c/a\u003e Update Gradle plugin-publish version to enable configuration cache badge on Gradle plugins portal\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Compiler plugins\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85257\"\u003e\u003ccode\u003eKT-85257\u003c/code\u003e\u003c/a\u003e AGP/Compose: MergeMappingFileTask clears R8 artifacts due to \u003ccode\u003e@OutputDirectory\u003c/code\u003e annotation on AGP 9.1+\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85105\"\u003e\u003ccode\u003eKT-85105\u003c/code\u003e\u003c/a\u003e Scripts: JVM backend internal error (IR lowering) when scratch file contains anonymous object\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85103\"\u003e\u003ccode\u003eKT-85103\u003c/code\u003e\u003c/a\u003e Exception while generating code when explain destructuring decls\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84842\"\u003e\u003ccode\u003eKT-84842\u003c/code\u003e\u003c/a\u003e scriptCompilationClasspathFromContext behavior changed from 2.3.10 to 2.3.20\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85029\"\u003e\u003ccode\u003eKT-85029\u003c/code\u003e\u003c/a\u003e Kotlin Scripting: ScriptDiagnostic reports \u0026quot;at null\u0026quot; instead of error location\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Statistics (FUS)\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md\"\u003eorg.jetbrains.kotlin.android's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.3.21\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84610\"\u003e\u003ccode\u003eKT-84610\u003c/code\u003e\u003c/a\u003e [Wasm] Failed to compile klibs in IC mode\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCompiler\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84566\"\u003e\u003ccode\u003eKT-84566\u003c/code\u003e\u003c/a\u003e Prevent launching Default dispatcher threads from IJ SDK in kotlin compiler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85358\"\u003e\u003ccode\u003eKT-85358\u003c/code\u003e\u003c/a\u003e Native: roll back the workaround for KT-84678 once MapLibre has been properly fixed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85626\"\u003e\u003ccode\u003eKT-85626\u003c/code\u003e\u003c/a\u003e  \u003ccode\u003e@JvmRecord\u003c/code\u003e in commonMain breaks compileCommonMainKotlinMetadata with \u0026quot;Cannot access 'java.lang.Record'\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85405\"\u003e\u003ccode\u003eKT-85405\u003c/code\u003e\u003c/a\u003e Postpone/Revert \u003ccode\u003eDontIgnoreUpperBoundViolatedOnImplicitArguments\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84678\"\u003e\u003ccode\u003eKT-84678\u003c/code\u003e\u003c/a\u003e K/N: Undefined symbol from SPM-added ObjC frameworks when linking iOS target\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85021\"\u003e\u003ccode\u003eKT-85021\u003c/code\u003e\u003c/a\u003e False positive SUBCLASS_CANT_CALL_COMPANION_PROTECTED_NON_STATIC error in multi-module project\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eJavaScript\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-82395\"\u003e\u003ccode\u003eKT-82395\u003c/code\u003e\u003c/a\u003e Support top-level declarations from compiler plugins in JS incremental compilation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84475\"\u003e\u003ccode\u003eKT-84475\u003c/code\u003e\u003c/a\u003e K/JS: false-positive exportability warnings in multi-module project\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84633\"\u003e\u003ccode\u003eKT-84633\u003c/code\u003e\u003c/a\u003e Kotlin/JS: \u0026quot;Serializer for class not found\u0026quot; error when IR output granularity is \u003ccode\u003ewhole-program\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85047\"\u003e\u003ccode\u003eKT-85047\u003c/code\u003e\u003c/a\u003e Kotlin/JS: \u003ccode\u003e@JsStatic\u003c/code\u003e on suspend fun of class companion generates incorrect d.ts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84517\"\u003e\u003ccode\u003eKT-84517\u003c/code\u003e\u003c/a\u003e K/JS: bad mappings data in outputted Kotlin stdlib source map\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eLibraries\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-71848\"\u003e\u003ccode\u003eKT-71848\u003c/code\u003e\u003c/a\u003e Kotlinx.metadata: Add \u003ccode\u003eCompilerPluginData\u003c/code\u003e into Km API\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNative. C and ObjC Import\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85399\"\u003e\u003ccode\u003eKT-85399\u003c/code\u003e\u003c/a\u003e Kotlin/Native: TypeCastException when casting ObjC Protocol MetaClass with genericSafeCasts enabled\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85508\"\u003e\u003ccode\u003eKT-85508\u003c/code\u003e\u003c/a\u003e K/N: TypeCastException when using nw_parameters_create_secure_tcp block parameter on 2.3.20\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84729\"\u003e\u003ccode\u003eKT-84729\u003c/code\u003e\u003c/a\u003e Update Gradle plugin-publish version to enable configuration cache badge on Gradle plugins portal\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Gradle. Compiler plugins\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85257\"\u003e\u003ccode\u003eKT-85257\u003c/code\u003e\u003c/a\u003e AGP/Compose: MergeMappingFileTask clears R8 artifacts due to \u003ccode\u003e@OutputDirectory\u003c/code\u003e annotation on AGP 9.1+\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Scripts\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85105\"\u003e\u003ccode\u003eKT-85105\u003c/code\u003e\u003c/a\u003e Scripts: JVM backend internal error (IR lowering) when scratch file contains anonymous object\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85103\"\u003e\u003ccode\u003eKT-85103\u003c/code\u003e\u003c/a\u003e Exception while generating code when explain destructuring decls\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84842\"\u003e\u003ccode\u003eKT-84842\u003c/code\u003e\u003c/a\u003e scriptCompilationClasspathFromContext behavior changed from 2.3.10 to 2.3.20\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85029\"\u003e\u003ccode\u003eKT-85029\u003c/code\u003e\u003c/a\u003e Kotlin Scripting: ScriptDiagnostic reports \u0026quot;at null\u0026quot; instead of error location\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTools. Statistics (FUS)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-85628\"\u003e\u003ccode\u003eKT-85628\u003c/code\u003e\u003c/a\u003e KGP: composite build FUS metrics fail on access of 'configurationTimeMetrics'\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/fea1ad8c18995b80d1ca0e3917056104613d23db\"\u003e\u003ccode\u003efea1ad8\u003c/code\u003e\u003c/a\u003e Add ChangeLog for 2.3.21-RC2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/09c341e858b8f70d92955fc6b67d6a04962760b4\"\u003e\u003ccode\u003e09c341e\u003c/code\u003e\u003c/a\u003e disable swift export execution tests in order to update macos\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/67a08681cdd53b318217e6f35d835e0ab3b2e31c\"\u003e\u003ccode\u003e67a0868\u003c/code\u003e\u003c/a\u003e Avoid accessing KotlinNativeLink taskProvider when task was not executed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/f89e5dbc1867714116e17be1066d6c68e30cc2d4\"\u003e\u003ccode\u003ef89e5db\u003c/code\u003e\u003c/a\u003e [K/N] Disable TSAN in runtime tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/45d6c859c027c4e82b14b4861e36bc125600e2b0\"\u003e\u003ccode\u003e45d6c85\u003c/code\u003e\u003c/a\u003e [K/N] Don't generate generic safe casts for Objective-C types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/9261a6f0790b7504e0223e9e0a0dd242fe0cc3f7\"\u003e\u003ccode\u003e9261a6f\u003c/code\u003e\u003c/a\u003e [K/N][tests] Add a reproducer for KT-85508\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/c9ab9db37a191f2eb1ce0f5b7ff502ca9d4b3a0d\"\u003e\u003ccode\u003ec9ab9db\u003c/code\u003e\u003c/a\u003e [K/N][tests] Add a reproducer for KT-85399\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/502e84484e520fbe1a93958be8da97e06a04d7ed\"\u003e\u003ccode\u003e502e844\u003c/code\u003e\u003c/a\u003e Explain: fix for destructuring declarations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/0c26485d83f532aa8afbb868895061b7132fd7c8\"\u003e\u003ccode\u003e0c26485\u003c/code\u003e\u003c/a\u003e Explain: fix for object literals\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JetBrains/kotlin/commit/68a9e3f99fcd59c5440970f5f34aff09ce462a69\"\u003e\u003ccode\u003e68a9e3f\u003c/code\u003e\u003c/a\u003e [minor] fix testdata name in explain test\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JetBrains/kotlin/compare/v2.0.21...v2.3.21\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `org.jetbrains.kotlin.plugin.compose` from 2.0.21 to 2.3.21\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JetBrains/kotlin/releases\"\u003eorg.jetbrains.kotlin.plugin.compose's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKotlin 2.3.21\u003c/h2\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003ch3\u003eBackend. Wasm\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://youtrack.jetbrains.com/issue/KT-84610\"\u003e\u003ccode\u003eKT-84610\u003c/code\u003e\u003c/a\u003e [Wasm...\n\n_Description has been truncated_","html_url":"https://github.com/Yakup24/Elaro/pull/16","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yakup24%2FElaro/issues/16","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/16/packages"}}]}