Audited against Maven Central, Google Maven and the Gradle Plugin Portal on 2026-10-01 for 2.0.0-rc19.
Updated runtime dependencies and AGP use stable releases. Detekt retains its existing alpha line.
The showcase retains Navigation3 UI 1.2.0-alpha02 and upstream adaptive-navigation3 1.3.0-beta02
for Easy Navigation’s existing binary contract; Navigation3 runtime now uses stable 1.2.0.
Gradle 9.8.0, JDK 21, Kover 0.9.11, MkDocs Material 9.7.7.
Android compiles against stable API 37.2, using Build Tools 37.0.0 and the existing minimum API 28. Kotlin 2.4.20 and KSP 2.3.12 already match their latest published stable versions.
| Alias | Version | Source |
|---|---|---|
compose-screenshot-validation |
0.0.1-alpha16 |
Metadata |
room-runtime |
2.8.5 |
Metadata |
room-compiler |
2.8.5 |
Metadata |
sqlite-bundled |
2.7.1 |
Metadata |
easy-navigation |
1.2.0 |
Metadata |
navigation3-runtime |
1.2.0 |
Metadata |
navigation3-ui |
1.2.0-alpha02 |
Metadata |
arch-storage-core |
1.0.1 |
Metadata |
arch-storage-memory |
1.0.1 |
Metadata |
arch-storage-datastore |
1.0.1 |
Metadata |
jetbrains-stdlib |
2.4.20 |
Metadata |
jetbrains-reflect |
2.4.20 |
Metadata |
jetbrains-serialization |
1.11.0 |
Metadata |
jetbrains-coroutines-core |
1.11.0 |
Metadata |
jetbrains-coroutines-jvm |
1.11.0 |
Metadata |
jetbrains-coroutines-android |
1.11.0 |
Metadata |
jetbrains-coroutines-test |
1.11.0 |
Metadata |
jetbrains-dokka |
2.2.0 |
Metadata |
jetbrains-plugin |
2.4.20 |
Metadata |
jetbrains-datetime |
0.8.0 |
Metadata |
jetbrains-kotlin-test |
2.4.20 |
Metadata |
jetbrains-compose-runtime |
1.12.1 |
Metadata |
jetbrains-compose-runtime-saveable |
1.12.1 |
Metadata |
jetbrains-compose-ui |
1.12.1 |
Metadata |
jetbrains-compose-ui-tooling |
1.12.1 |
Metadata |
jetbrains-compose-ui-tooling-preview |
1.12.1 |
Metadata |
jetbrains-compose-ui-test-junit4 |
1.12.1 |
Metadata |
jetbrains-compose-foundation |
1.12.1 |
Metadata |
jetbrains-compose-animation |
1.12.1 |
Metadata |
jetbrains-compose-resources |
1.12.1 |
Metadata |
jetbrains-compose-desktop |
1.12.1 |
Metadata |
jetbrains-compose-material3 |
1.9.0 |
Metadata |
jetbrains-compose-material3-navigation-suite |
1.9.0 |
Metadata |
jetbrains-compose-material-icons |
1.7.3 |
Metadata |
androidx-plugin |
9.4.1 |
Metadata |
androidx-annotation |
1.11.0 |
Metadata |
androidx-appcompat |
1.8.0 |
Metadata |
androidx-fragment |
1.9.1 |
Metadata |
androidx-constraint |
2.2.2 |
Metadata |
androidx-recycler |
1.4.0 |
Metadata |
androidx-lifecycle-livedata |
2.11.0 |
Metadata |
androidx-lifecycle-runtime |
2.11.0 |
Metadata |
androidx-lifecycle-process |
2.11.0 |
Metadata |
androidx-window |
1.5.1 |
Metadata |
androidx-security |
1.1.0 |
Metadata |
androidx-startup |
1.2.0 |
Metadata |
androidx-datastore-core |
1.2.1 |
Metadata |
androidx-datastore-preferences |
1.2.1 |
Metadata |
androidx-test-core |
2.2.0 |
Metadata |
androidx-test-window |
1.5.1 |
Metadata |
androidx-test-junit |
1.3.0 |
Metadata |
androidx-test-espresso-intents |
3.7.0 |
Metadata |
androidx-test-espresso-core |
3.7.0 |
Metadata |
androidx-compose-material3-window |
1.9.0 |
Metadata |
androidx-compose-material3-adaptive |
1.2.0 |
Metadata |
androidx-compose-activity |
1.13.0 |
Metadata |
androidx-compose-lifecycle |
2.11.0 |
Metadata |
androidx-compose-testManifest |
1.12.1 |
Metadata |
square-retrofit-main |
3.0.0 |
Metadata |
arch-lumber |
1.4.4 |
Metadata |
arch-android |
1.3.2 |
Metadata |
arch-event-observer |
3.0.0 |
Metadata |
arch-event-observer-state |
3.0.0 |
Metadata |
arch-event-observer-compose |
3.0.0 |
Metadata |
google-material |
1.14.0 |
Metadata |
di-koin-core |
4.2.2 |
Metadata |
di-koin-compose |
4.2.2 |
Metadata |
di-koin-composeViewModel |
4.2.2 |
Metadata |
di-koin-android |
4.2.2 |
Metadata |
mockk-test-android |
1.14.11 |
Metadata |
mockk-test-agent |
1.14.11 |
Metadata |
junit-test |
4.13.2 |
Metadata |
robolectric-test |
4.17 |
Metadata |
detekt |
2.0.0-alpha.6 |
Metadata |
ktlint |
14.2.0 |
Metadata |
vanniktech-publish |
0.37.0 |
Metadata |
ktorfit |
2.7.5 |
Metadata |
ktor-client-okhttp |
3.6.0 |
Metadata |
ktor-client-darwin |
3.6.0 |
Metadata |
ktor-content-negotiation |
3.6.0 |
Metadata |
ktor-serialization-json |
3.6.0 |
Metadata |
ktor-logging |
3.6.0 |
Metadata |
coil-core |
3.6.3 |
Metadata |
coil-network |
3.6.3 |
Metadata |
haze-core |
2.0.1 |
Metadata |
haze-blur |
2.0.1 |
Metadata |
x-normalize-x001 |
1.13.0 |
Metadata |
x-normalize-x002 |
1.6.0 |
Metadata |
x-normalize-x003 |
2.2.0 |
Metadata |
x-normalize-x004 |
2.2.0 |
Metadata |
x-normalize-x005 |
1.6.0 |
Metadata |
x-normalize-x006 |
1.19.1 |
Metadata |
x-normalize-x007 |
1.19.1 |
Metadata |
x-normalize-x008 |
1.2.0 |
Metadata |
x-normalize-x009 |
1.2.0 |
Metadata |
x-normalize-x010 |
2.11.0 |
Metadata |
x-normalize-x011 |
1.1.0 |
Metadata |
x-normalize-x012 |
1.8.0 |
Metadata |
x-normalize-x013 |
1.7.0 |
Metadata |
x-normalize-x014 |
1.11.1 |
Metadata |
x-normalize-x015 |
3.0.2 |
Metadata |
x-normalize-x016 |
2.5.1 |
Metadata |
x-normalize-x017 |
2.4.20 |
Metadata |
x-normalize-x018 |
1.11.0 |
Metadata |
x-normalize-x019 |
1.11.0 |
Metadata |
x-normalize-x020 |
26.1.0 |
Metadata |
x-normalize-x021 |
5.5.0 |
Metadata |
Robolectric 4.17 Android tests require --add-opens=java.base/jdk.internal.access=ALL-UNNAMED
on JDK 21. This option is scoped to test JVMs, following the
Robolectric setup guide.
The showcase uses Easy Navigation 1.2.0. Its published JVM binaries still call Lumber’s pre-1.2
tag API. Sample-only resolution in gradle/showcase-boundaries.gradle.kts selects
Lumber 1.1.0 and Storage 2.0.0-rc16, whose published metadata uses that same ABI.
Storage stable 1.0.1 uses Lumber 1.4.4 and cannot be combined with the selected
navigation release. These pins do not change the published Toolkit library’s
dependencies. Remove them only after Android release shrinking, JVM navigation
and iOS linking/tests pass with an upstream-compatible combination.
Gradle 9.8 uses the regenerated wrapper and official distribution checksum. Shared build logic uses
explicit extra-property access, the compiler-independent js {} DSL, and the current SourcesJar
publication option. Unconfigured sample JS/Wasm source sets are no longer created.
CI uses gradle/actions/setup-gradle 6.4.0 as the single Gradle cache owner;
android-actions/setup-android 4.0.4 installs the SDK and Build Tools selected by the catalog.
Apple framework linking and simulator tests run on macOS; Windows compares all 101 Android screenshots.
The legacy Android KMP target still requires android.builtInKotlin=false and android.newDsl=false.
Migrating to com.android.kotlin.multiplatform.library requires coordinating convention plugins,
Android tests, KSP, publication and screenshot tooling before AGP 10 removes that compatibility path.
See the official Android KMP migration guide.
Haze 2.0.1 uses haze-blur, immutable HazeBlurStyle and explicit captured-source input.
The sample retains its tint, gradient fallback and mobile/window policy; no experimental Glass or
native-backdrop features are enabled. See the upstream migration guide.
Maven Central metadata was checked again for all Arch modules used here. The
catalog already selects the latest stable releases: Lumber 1.4.4, Storage
core/memory/DataStore 1.0.1, Event Observer core/state/Compose 3.0.0 and
Arch Android 1.3.2. Easy Navigation’s latest stable release at that check was 1.1.0.
Storage metadata’s release field points to 2.0.0-rc16; select the highest
stable version rather than treating that field as a stable-version guarantee.
The sample’s scoped Lumber/Storage ABI overrides described above remain required with the current navigation artifact. The catalogue version and the version actually resolved by the Showcase must not be confused. No snapshot/nightly or Maven Local dependency was introduced.
Update Easy Navigation runtime and Gradle plugin together to 1.2.0, the latest published stable release. Navigation now generates directions and platform registries through its Kotlin compiler plugin, compatible with Kotlin 2.4.20. Remove KSP from the four navigation features; retain it for Room and Ktorfit. Use the shared stable Navigation3 runtime 1.2.0 catalog alias in every feature. See the upstream migration guide.
The new generator resolves feature Android compile classpaths directly. Select
android-classes-jar explicitly for debug/release classpaths to avoid ambiguity
between AGP’s classes, lint and manifest artifacts from project dependencies.
Wire Compose resource generation before navigation scanning, and order source
lint after navigation generation when both run, so Gradle tracks generated inputs.
Enforce LF for Kotlin files in Git and EditorConfig: the 1.2.0 syntax scanner
produced no GitHub destinations from CRLF input on Windows, then generated both
directions and platform registries after normalizing that input to LF.
The published Navigation 1.2.0 JVM bytecode still calls
Lumber.OakWood.tag(String): Lumber.Oak. It does not remove the Lumber/Storage
ABI constraint above; retain those overrides and the Splinter source compilation
adaptation. Maven metadata was rechecked for the complete catalog: the other
stable dependency selections remain current. Navigation3 UI remains on the
version required by Easy Navigation’s published metadata.
Validation on Windows: Android release/R8 and all 14 app JVM tests passed, including deeplinks, back navigation and stack restoration. The complete build/test/coverage/lint/docs/publication gates, 101 unchanged screenshot comparisons, strict MkDocs and three release-note extraction tests passed. iOS framework linking and host execution remain in the macOS CI job.