diff --git a/docs/superpowers/plans/2026-06-08-01-foundation.md b/docs/superpowers/plans/2026-06-08-01-foundation.md index 6c8d9dd..df0c465 100644 --- a/docs/superpowers/plans/2026-06-08-01-foundation.md +++ b/docs/superpowers/plans/2026-06-08-01-foundation.md @@ -7,7 +7,7 @@ **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:** -- Kotlin 2.1.0, Gradle 8.11.1, AGP 8.7.2, JVM Target 17 +- Kotlin 2.1.0, Gradle 8.14 (bootstrapped from HouseHoldKeaper's wrapper), AGP 8.7.2, JVM Target 17 - minSdk 29, targetSdk 36, compileSdk 36 - Jetpack Compose BOM 2025.05.00, Material3 1.5.0 (Expressive APIs) - Hilt 2.53 + KSP 2.1.0-1.0.29 @@ -140,12 +140,9 @@ local, WebCal subscriptions, ...) is shown. ## Building -Requires Android SDK 36 and JDK 17. +Requires Android SDK 36 and JDK 17. The Gradle wrapper is checked in, so no host Gradle install is needed: ```bash -# Bootstrap the gradle wrapper (one-time, requires a host gradle install) -gradle wrapper --gradle-version 8.11.1 --distribution-type bin - # Build debug APK ./gradlew assembleDebug @@ -156,6 +153,12 @@ gradle wrapper --gradle-version 8.11.1 --distribution-type bin ./gradlew lint ``` +If your default JDK is something other than 17, set `JAVA_HOME` explicitly: + +```bash +JAVA_HOME=/path/to/jdk-17 ./gradlew assembleDebug +``` + ## License [MIT](LICENSE) — Jean-Luc Makiola, 2026 @@ -675,35 +678,35 @@ kotlin.incremental=true android.uniquePackageNames=true ``` -- [ ] **Step 5: Bootstrap the Gradle wrapper** +- [ ] **Step 5: Bootstrap the Gradle wrapper from sibling project** -This requires a host `gradle` installation. Run once: - -```bash -gradle wrapper --gradle-version 8.11.1 --distribution-type bin -``` - -Expected: creates `gradle/wrapper/gradle-wrapper.jar`, `gradle/wrapper/gradle-wrapper.properties`, `gradlew`, `gradlew.bat`. - -Then make `gradlew` executable: +The dev machine has no host `gradle` installed, but `HouseHoldKeaper/android/` already has a working wrapper (Gradle 8.14). Bootstrap from there: ```bash +mkdir -p gradle/wrapper +cp /home/jlmak/Projects/jlmak/HouseHoldKeaper/android/gradlew . +cp /home/jlmak/Projects/jlmak/HouseHoldKeaper/android/gradlew.bat . +cp /home/jlmak/Projects/jlmak/HouseHoldKeaper/android/gradle/wrapper/gradle-wrapper.jar gradle/wrapper/ +cp /home/jlmak/Projects/jlmak/HouseHoldKeaper/android/gradle/wrapper/gradle-wrapper.properties gradle/wrapper/ chmod +x gradlew ``` -- [ ] **Step 6: Verify gradle wrapper works** +Gradle 8.14 is compatible with AGP 8.7.2 (Gradle is backward-compatible for AGP versions; newer Gradle works fine). + +- [ ] **Step 6: Verify gradle wrapper works (with JDK 17)** + +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 -./gradlew --version +JAVA_HOME=/usr/lib/jvm/java-17-openjdk ./gradlew --version ``` Expected output includes: ``` -Gradle 8.11.1 -Kotlin: 2.0.x +Gradle 8.14 ``` -(Don't worry about the specific Kotlin version in the gradle output — that's gradle's bundled Kotlin, separate from our project Kotlin 2.1.0.) +> 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. - [ ] **Step 7: Commit**