Baseline: wave 1A server complete, wave 1B Android scaffold + design system green
assembleDebug, testDebugUnitTest, and recordPaparazziDebug all pass. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016bThmkmyUUdqQpy3MXFFe5
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
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.
|
||||
Reference in New Issue
Block a user