arch-toolkit

Dependencies

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

Tooling sources

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.

Showcase compatibility

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.

Build conventions

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.

Arch ecosystem recheck — 2026-10-02

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.