android: bump AndroidX/Compose dependency versions
Build Debug APK / build (push) Failing after 39s

Modernizes the stale library pins in libs.versions.toml against the
already-current agp/kotlin toolchain:

- composeBom 2024.09.00 -> 2026.06.01 (Material3 1.3.x -> current)
- activityCompose 1.8.0 -> 1.13.0
- navigationCompose 2.8.5 -> 2.9.8
- lifecycleRuntimeKtx 2.8.7 -> 2.10.0 (2.11.0 needs compileSdk 37, past
  what AGP 9.1.0 supports; held one minor back)
- coreKtx 1.10.1 -> 1.18.0 (1.19.0 has the same compileSdk-37 issue)
- workRuntimeKtx 2.10.1 -> 2.11.2
- espressoCore 3.5.1 -> 3.7.0, junitVersion (androidx.test.ext) 1.1.5 -> 1.3.0

compileSdk/targetSdk bumped 35 -> 36 to satisfy activity/activity-compose's
minimum. Verified with build, gradlew test, lint-kotlin, and
fmt-kotlin-check per the TODO's verification steps; removes the TODO.md
entry.

Compose 1.7->current and Material3 1.3->current introduced deprecation
warnings (old TabRow, MenuAnchorType, LocalClipboardManager) across several
screens -- these still compile and work, left as follow-up cleanup rather
than folded into this bump.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0134Qxsmkvtr8hSGkhbT1nTg
This commit is contained in:
Greg Shuflin
2026-08-05 19:45:05 -07:00
co-authored by Claude Sonnet 5
parent dd4951ebc5
commit 028eda3b95
3 changed files with 10 additions and 51 deletions
-41
View File
@@ -399,47 +399,6 @@ track count.
- **Depends on**: nothing blocking; could be picked up independently of the
PDF-library MVP.
### Modernize the Android dependency versions (Compose BOM and the AndroidX cluster)
- **Description** (added 2026-08-05): `android/gradle/libs.versions.toml` has a
current *build toolchain* pinned against a stale *library* set. `agp = "9.1.0"`
and `kotlin = "2.2.10"` are recent; everything they compile is not:
| Pin | Vintage |
|---|---|
| `composeBom = "2024.09.00"` | Sept 2024 (Material3 1.3.x) |
| `lifecycleRuntimeKtx = "2.8.7"`, `navigationCompose = "2.8.5"` | late 2024 |
| `activityCompose = "1.8.0"` | Oct 2023 |
| `coreKtx = "1.10.1"` | May 2023 |
| `espressoCore = "3.5.1"`, `junitVersion = "1.1.5"` | 202223 |
- **Why it isn't already broken**: the Compose compiler is versioned with Kotlin
now (the `kotlin-compose` plugin), so a current compiler against a two-year-old
Compose runtime keeps working rather than failing loudly. That is exactly why it
drifted this far unnoticed.
- **Why it matters**: two years of Compose/Material3 fixes and APIs are being
left on the table, and the gap only gets more expensive to close. The concrete
near-term cost is in `docs/command-palette-and-search.md` §7.2: the shared
Android search bar has to target Material3 1.3's older `SearchBar`
(`query`/`active`/`onActiveChange`) rather than the `inputField`/`expanded` API
that supersedes it, purely because of what is pinned.
- **Details**: bump the AndroidX cluster together, not just the BOM — leaving
`activityCompose` on 1.8.0 (Oct 2023) under a current Compose runtime keeps the
oldest pin in place and defeats the point. Expect real behavior changes across
Compose 1.7 → current and Material3 1.3 → current, affecting every screen; this
wants to be its own change with its own verification pass, **not** folded into
feature work.
- **Verification is fully available without a local Android Studio install**:
the flake runs Gradle inside the devShell rather than a sealed derivation, so
dependency resolution is an ordinary network Gradle resolve — there is no
vendored dependency hash to regenerate for a version bump. `just
build-android-nix` builds the APK, and `nix develop --command just gradlew
test` / `... just lint-kotlin` / `... just fmt-kotlin-check` cover unit tests,
detekt, and formatting. A bump should be checked against all four, since the
Compose/Material3 jump is expected to move behavior across every screen.
- **Depends on**: nothing. Should land *before* the Android half of
`docs/command-palette-and-search.md` (its §9 step 5), so §7.2 can target the
current `SearchBar` API instead of the deprecated one.
### Look into Android Auto support
- see how hard this would be to do
- the lock-screen `MediaSessionService` foundation
+2 -2
View File
@@ -9,12 +9,12 @@ plugins {
android {
namespace = "com.gregshuflin.synchronicity"
compileSdk = 35
compileSdk = 36
defaultConfig {
applicationId = "com.gregshuflin.synchronicity"
minSdk = 31
targetSdk = 35
targetSdk = 36
versionCode = 1
versionName = "1.0"
+8 -8
View File
@@ -1,17 +1,17 @@
[versions]
agp = "9.1.0"
kotlin = "2.2.10"
coreKtx = "1.10.1"
coreKtx = "1.18.0"
junit = "4.13.2"
junitVersion = "1.1.5"
espressoCore = "3.5.1"
lifecycleRuntimeKtx = "2.8.7"
navigationCompose = "2.8.5"
activityCompose = "1.8.0"
composeBom = "2024.09.00"
junitVersion = "1.3.0"
espressoCore = "3.7.0"
lifecycleRuntimeKtx = "2.10.0"
navigationCompose = "2.9.8"
activityCompose = "1.13.0"
composeBom = "2026.06.01"
detekt = "1.23.8"
ktfmt = "0.22.0"
workRuntimeKtx = "2.10.1"
workRuntimeKtx = "2.11.2"
[libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }