docs(plan): bump all dependency versions to verified latest stable
All versions verified against canonical registries on 2026-06-08:
- Kotlin 2.1.0 -> 2.3.21 (paired with KSP)
- AGP 8.7.2 -> 9.1.1
- KSP 2.1.0-1.0.29 -> 2.3.9
- Hilt 2.53 -> 2.59.2
- Compose BOM 2025.05.00 -> 2026.06.00
- Material 3 -> PINNED to 1.5.0-alpha21 (Expressive APIs live only here)
- AndroidX Core KTX 1.15.0 -> 1.19.0
- Lifecycle 2.8.7 -> 2.10.0
- Activity Compose 1.9.3 -> 1.13.0
- DataStore 1.1.1 -> 1.2.1
- JUnit Jupiter 5.11.4 -> 6.1.0 (with unified platform 6.1.0)
- Truth 1.4.4 -> 1.4.5
- AndroidX Test JUnit 1.2.1 -> 1.3.0
- Espresso 3.6.1 -> 3.7.0
- Gradle 8.14 -> 9.5.1 (required by AGP 9.1.1; bootstrap via two-step
wrapper upgrade from HouseHoldKeaper's 8.14 wrapper)
Also moved kotlinOptions DSL to the new top-level kotlin {} block
(required with Kotlin 2.3+ / AGP 9.x).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -6,14 +6,19 @@
|
|||||||
|
|
||||||
**Architecture:** Single Gradle module `:app`, Kotlin 2.1 + Jetpack Compose mit Material 3 Expressive (1.5+), Hilt für DI, DataStore-Preferences für App-Settings. Build via Gradle Kotlin DSL und Version Catalog (`libs.versions.toml`). CI über Gitea Workflows (adaptiert von HouseHoldKeaper, Flutter-Steps durch Gradle-Steps ersetzt). Alle Resourcen + Strings i18n-fähig ab Tag 1 (DE + EN).
|
**Architecture:** Single Gradle module `:app`, Kotlin 2.1 + Jetpack Compose mit Material 3 Expressive (1.5+), Hilt für DI, DataStore-Preferences für App-Settings. Build via Gradle Kotlin DSL und Version Catalog (`libs.versions.toml`). CI über Gitea Workflows (adaptiert von HouseHoldKeaper, Flutter-Steps durch Gradle-Steps ersetzt). Alle Resourcen + Strings i18n-fähig ab Tag 1 (DE + EN).
|
||||||
|
|
||||||
**Tech Stack:**
|
**Tech Stack (versions verified 2026-06-08 against canonical registries):**
|
||||||
- Kotlin 2.1.0, Gradle 8.14 (bootstrapped from HouseHoldKeaper's wrapper), AGP 8.7.2, JVM Target 17
|
- Kotlin 2.3.21 (paired with KSP — Kotlin 2.4.0 has no KSP release yet)
|
||||||
|
- Gradle 9.5.1 (bootstrap from HouseHoldKeaper's 8.14 wrapper, then `wrapper --gradle-version 9.5.1`)
|
||||||
|
- AGP 9.1.1, JVM Target 17
|
||||||
- minSdk 29, targetSdk 36, compileSdk 36
|
- minSdk 29, targetSdk 36, compileSdk 36
|
||||||
- Jetpack Compose BOM 2025.05.00, Material3 1.5.0 (Expressive APIs)
|
- Jetpack Compose BOM 2026.06.00 (provides Material 3 1.4.0 by default; we override material3 to 1.5.0-alpha21 explicitly)
|
||||||
- Hilt 2.53 + KSP 2.1.0-1.0.29
|
- **Material 3 1.5.0-alpha21** — Expressive APIs only exist in 1.5 alpha line; accepting alpha is intentional because Expressive is the whole point of this app
|
||||||
- AndroidX DataStore Preferences 1.1.1
|
- Hilt 2.59.2 + KSP 2.3.9
|
||||||
- Tests: JUnit5 5.11.x + Truth 1.4.4 + Compose UI Test (BOM)
|
- AndroidX Core KTX 1.19.0, Lifecycle Runtime KTX 2.10.0, Activity Compose 1.13.0
|
||||||
- CI: Gitea Actions auf Docker-Runner (Java 17 + Android SDK 36)
|
- AndroidX DataStore Preferences 1.2.1
|
||||||
|
- Tests: JUnit Jupiter 6.1.0 (unified launcher version) + Truth 1.4.5 + Compose UI Test (BOM)
|
||||||
|
- AndroidX Test JUnit 1.3.0, Espresso 3.7.0
|
||||||
|
- CI: Gitea Actions on Docker runner (Java 17 + Android SDK 36)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -582,23 +587,28 @@ include(":app")
|
|||||||
|
|
||||||
- [ ] **Step 2: Create `gradle/libs.versions.toml`**
|
- [ ] **Step 2: Create `gradle/libs.versions.toml`**
|
||||||
|
|
||||||
|
> All versions verified against canonical registries on 2026-06-08. Material 3 is pinned to alpha intentionally — see the `material3` comment below.
|
||||||
|
|
||||||
```toml
|
```toml
|
||||||
[versions]
|
[versions]
|
||||||
agp = "8.7.2"
|
agp = "9.1.1"
|
||||||
kotlin = "2.1.0"
|
kotlin = "2.3.21"
|
||||||
ksp = "2.1.0-1.0.29"
|
ksp = "2.3.9"
|
||||||
hilt = "2.53"
|
hilt = "2.59.2"
|
||||||
coreKtx = "1.15.0"
|
coreKtx = "1.19.0"
|
||||||
lifecycleRuntime = "2.8.7"
|
lifecycleRuntime = "2.10.0"
|
||||||
activityCompose = "1.9.3"
|
activityCompose = "1.13.0"
|
||||||
composeBom = "2025.05.00"
|
composeBom = "2026.06.00"
|
||||||
material3 = "1.5.0"
|
# Material 3 Expressive APIs currently live only in the 1.5 alpha line.
|
||||||
datastore = "1.1.1"
|
# Pin explicitly to override the BOM (which ships stable 1.4.0).
|
||||||
junit = "5.11.4"
|
# Re-evaluate when 1.5.0 stable lands.
|
||||||
junitJupiterPlatform = "1.11.4"
|
material3 = "1.5.0-alpha21"
|
||||||
truth = "1.4.4"
|
datastore = "1.2.1"
|
||||||
androidxJunit = "1.2.1"
|
junit = "6.1.0"
|
||||||
espressoCore = "3.6.1"
|
junitPlatform = "6.1.0"
|
||||||
|
truth = "1.4.5"
|
||||||
|
androidxJunit = "1.3.0"
|
||||||
|
espressoCore = "3.7.0"
|
||||||
|
|
||||||
[libraries]
|
[libraries]
|
||||||
# AndroidX core
|
# AndroidX core
|
||||||
@@ -628,7 +638,7 @@ androidx-datastore-preferences = { group = "androidx.datastore", name = "datasto
|
|||||||
# Unit tests
|
# Unit tests
|
||||||
junit-jupiter-api = { group = "org.junit.jupiter", name = "junit-jupiter-api", version.ref = "junit" }
|
junit-jupiter-api = { group = "org.junit.jupiter", name = "junit-jupiter-api", version.ref = "junit" }
|
||||||
junit-jupiter-engine = { group = "org.junit.jupiter", name = "junit-jupiter-engine", version.ref = "junit" }
|
junit-jupiter-engine = { group = "org.junit.jupiter", name = "junit-jupiter-engine", version.ref = "junit" }
|
||||||
junit-platform-launcher = { group = "org.junit.platform", name = "junit-platform-launcher", version.ref = "junitJupiterPlatform" }
|
junit-platform-launcher = { group = "org.junit.platform", name = "junit-platform-launcher", version.ref = "junitPlatform" }
|
||||||
truth = { group = "com.google.truth", name = "truth", version.ref = "truth" }
|
truth = { group = "com.google.truth", name = "truth", version.ref = "truth" }
|
||||||
|
|
||||||
# Android tests
|
# Android tests
|
||||||
@@ -691,11 +701,17 @@ cp /home/jlmak/Projects/jlmak/HouseHoldKeaper/android/gradle/wrapper/gradle-wrap
|
|||||||
chmod +x gradlew
|
chmod +x gradlew
|
||||||
```
|
```
|
||||||
|
|
||||||
Gradle 8.14 is compatible with AGP 8.7.2 (Gradle is backward-compatible for AGP versions; newer Gradle works fine).
|
- [ ] **Step 6: Upgrade the wrapper to the version AGP 9.1.1 requires**
|
||||||
|
|
||||||
- [ ] **Step 6: Verify gradle wrapper works (with JDK 17)**
|
AGP 9.1.1 mandates Gradle ≥ 9.3.1. Use 9.5.1 (latest stable). This step uses Gradle 8.14 just to upgrade itself — safe because no AGP is wired in yet:
|
||||||
|
|
||||||
The system default JDK is 26, but AGP 8.7.2's compatibility envelope is JDK 17–21. Use JDK 17 explicitly for every gradle invocation in this plan:
|
```bash
|
||||||
|
JAVA_HOME=/usr/lib/jvm/java-17-openjdk ./gradlew wrapper --gradle-version 9.5.1 --distribution-type bin
|
||||||
|
```
|
||||||
|
|
||||||
|
Expected: Gradle downloads 9.5.1, writes the new `gradle-wrapper.properties` and `gradle-wrapper.jar`. Output ends with `BUILD SUCCESSFUL`.
|
||||||
|
|
||||||
|
- [ ] **Step 7: Verify the upgraded wrapper works**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
JAVA_HOME=/usr/lib/jvm/java-17-openjdk ./gradlew --version
|
JAVA_HOME=/usr/lib/jvm/java-17-openjdk ./gradlew --version
|
||||||
@@ -703,12 +719,12 @@ JAVA_HOME=/usr/lib/jvm/java-17-openjdk ./gradlew --version
|
|||||||
|
|
||||||
Expected output includes:
|
Expected output includes:
|
||||||
```
|
```
|
||||||
Gradle 8.14
|
Gradle 9.5.1
|
||||||
```
|
```
|
||||||
|
|
||||||
> Going forward in this plan, every `./gradlew ...` invocation must be prefixed with `JAVA_HOME=/usr/lib/jvm/java-17-openjdk` on this dev machine. CI sets `setup-java@v4 java-version: 17` so no prefix is needed there.
|
> Going forward in this plan, every `./gradlew ...` invocation must be prefixed with `JAVA_HOME=/usr/lib/jvm/java-17-openjdk` on this dev machine (the system default is JDK 26, but AGP 9.1.1's compatibility envelope is JDK 17–21). CI sets `setup-java@v4 java-version: 17` so no prefix is needed there.
|
||||||
|
|
||||||
- [ ] **Step 7: Commit**
|
- [ ] **Step 8: Commit**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git add settings.gradle.kts build.gradle.kts gradle.properties gradle/
|
git add settings.gradle.kts build.gradle.kts gradle.properties gradle/
|
||||||
@@ -787,9 +803,6 @@ android {
|
|||||||
sourceCompatibility = JavaVersion.VERSION_17
|
sourceCompatibility = JavaVersion.VERSION_17
|
||||||
targetCompatibility = JavaVersion.VERSION_17
|
targetCompatibility = JavaVersion.VERSION_17
|
||||||
}
|
}
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = "17"
|
|
||||||
}
|
|
||||||
|
|
||||||
buildFeatures {
|
buildFeatures {
|
||||||
compose = true
|
compose = true
|
||||||
@@ -802,9 +815,13 @@ android {
|
|||||||
}
|
}
|
||||||
|
|
||||||
testOptions {
|
testOptions {
|
||||||
unitTests.all { test ->
|
unitTests.all { it.useJUnitPlatform() }
|
||||||
test.useJUnitPlatform()
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
kotlin {
|
||||||
|
compilerOptions {
|
||||||
|
jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1848,9 +1865,6 @@ android {
|
|||||||
sourceCompatibility = JavaVersion.VERSION_17
|
sourceCompatibility = JavaVersion.VERSION_17
|
||||||
targetCompatibility = JavaVersion.VERSION_17
|
targetCompatibility = JavaVersion.VERSION_17
|
||||||
}
|
}
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = "17"
|
|
||||||
}
|
|
||||||
|
|
||||||
buildFeatures {
|
buildFeatures {
|
||||||
compose = true
|
compose = true
|
||||||
@@ -1863,9 +1877,13 @@ android {
|
|||||||
}
|
}
|
||||||
|
|
||||||
testOptions {
|
testOptions {
|
||||||
unitTests.all { test ->
|
unitTests.all { it.useJUnitPlatform() }
|
||||||
test.useJUnitPlatform()
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
kotlin {
|
||||||
|
compilerOptions {
|
||||||
|
jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user