assembleDebug, testDebugUnitTest, and recordPaparazziDebug all pass. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016bThmkmyUUdqQpy3MXFFe5
50 lines
3.1 KiB
Plaintext
50 lines
3.1 KiB
Plaintext
You are creating the Android project SCAFFOLD + DESIGN SYSTEM for Bookshelf.
|
|
READ FIRST: ~/bookshelf/docs/SPEC.md — authoritative, follow exactly.
|
|
|
|
Environment (already installed, do not reinstall):
|
|
JAVA_HOME=~/toolchain/jdk21 (JDK 21) ANDROID_HOME=~/toolchain/android-sdk
|
|
Installed: platforms;android-37.0, build-tools;37.0.0, platform-tools
|
|
No emulator/KVM available — you CANNOT run the app. Verify by compiling.
|
|
|
|
Create a Gradle project at ~/bookshelf/app. Deliver:
|
|
|
|
1. Working Gradle build: settings.gradle.kts, build.gradle.kts, gradle.properties,
|
|
gradle/libs.versions.toml (version catalog), app/build.gradle.kts, the Gradle
|
|
wrapper (download a wrapper JAR compatible with AGP for compileSdk 37 + JDK 21),
|
|
local.properties pointing at the SDK, and a sensible .gitignore.
|
|
Pick versions that ACTUALLY RESOLVE — check Maven Central / dl.google.com rather
|
|
than guessing. Declare every library from the SPEC in the catalog now, even ones
|
|
later waves will use, so downstream workers never touch build files.
|
|
2. AndroidManifest with the permissions the SPEC implies (camera, internet) and a
|
|
single MainActivity hosting Compose.
|
|
3. ui/theme: Color.kt, Type.kt, Theme.kt implementing the SPEC palette for BOTH
|
|
light and dark. Dynamic color OFF. Bundle the Literata variable/static TTF in
|
|
res/font (download from the Google Fonts GitHub repo, it is OFL — include the
|
|
license file). Full Material3 ColorScheme for both modes, mapped thoughtfully:
|
|
this app must read as warm paper and mahogany, never as default-Material purple.
|
|
4. A small reusable component set in ui/theme or ui/components that later waves will
|
|
build every screen from — at minimum: BookshelfScaffold (topbar w/ serif title +
|
|
gold hairline rule), PaperSurface, GoldDivider, BookCover (Coil, correct 2:3
|
|
aspect, letterpress-ish placeholder when no cover, graceful error state),
|
|
PrimaryButton/SecondaryButton, EmptyState, SyncStatusBar. Make these genuinely
|
|
nice — the owner explicitly cares that this "feels like books". Restrained and
|
|
typographic beats skeuomorphic.
|
|
5. Paparazzi configured so Compose renders to PNG on the JVM (no device). Add
|
|
screenshot tests for the component set in BOTH light and dark, run
|
|
`./gradlew recordPaparazziDebug` (or the equivalent task), and confirm real PNGs
|
|
land on disk. If Paparazzi will not cooperate with this AGP/Compose combination
|
|
after a genuine effort, say so plainly in your report and fall back to Robolectric
|
|
+ Roborazzi; do not silently skip visual verification.
|
|
6. A placeholder MainActivity screen that renders the component set, so wave 3 has a
|
|
living style reference.
|
|
|
|
MUST end green: `./gradlew assembleDebug` and `./gradlew test` both pass.
|
|
Iterate until they do — a broken build blocks every downstream worker.
|
|
|
|
Write ~/bookshelf/app/BUILD_NOTES.md recording the EXACT resolved versions (AGP,
|
|
Gradle, Kotlin, KSP, Compose BOM, Room, Retrofit, Coil, CameraX, ML Kit, WorkManager,
|
|
Paparazzi) and any compatibility traps you hit. Downstream workers depend on this.
|
|
|
|
Do not modify ~/bookshelf/server or ~/bookshelf/docs.
|
|
Finish with a <=25 line report: versions, what builds, Paparazzi status, deviations.
|