CLAUDE.md: build/test gotchas from the cyclic-taper + backup sessions
Six recurring, non-obvious learnings: Gradle config-cache corruption fix, Room NOT NULL-column migrations needing @ColumnInfo(defaultValue), the scrypt wf=15 rationale (do not bump to 18), Compose dialogs not being adb/uiautomator-tappable (verify via instrumented tests), backticks breaking git commit -m, and wireless adb port rotation. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
eeed098b1a
commit
dfb7c5a826
1 changed files with 12 additions and 0 deletions
12
CLAUDE.md
12
CLAUDE.md
|
|
@ -58,6 +58,10 @@ The name says the brief: nag me to take the dose *now*.
|
|||
- Room 3 (`androidx.room3`) is alpha — stay on Room 2.x. `room-ktx` is merged into `room-runtime`.
|
||||
- androidx security-crypto is fully deprecated — SettingsStore is our own Keystore wrapper instead.
|
||||
- No appcompat: `?attr/colorControlNormal` doesn't exist; Compose tints icons via LocalContentColor.
|
||||
- Gradle config-cache can corrupt → `BuildOperationInvocationException (no error message)`;
|
||||
fix: `rm -rf .gradle/configuration-cache` (it's not a code error).
|
||||
- A migration that ADDs a NOT NULL column needs `@ColumnInfo(defaultValue = "0")` on the entity,
|
||||
else Room's migration validation fails (exported schema has no default, the ALTER does).
|
||||
|
||||
## Load-bearing — change with care
|
||||
- The reminder subsystem is the reliability core. After any change, re-verify: alarms
|
||||
|
|
@ -75,6 +79,8 @@ The name says the brief: nag me to take the dose *now*.
|
|||
- kage is trusted only because CctvScryptVectorTest passes — keep the vendored CCTV
|
||||
vectors green when bumping kage.
|
||||
- Doctor PDF formatting is locale-pinned to nb; the default locale prints English month names.
|
||||
- Backup scrypt work factor is 15, not age's default 18 — 18 needs ~256 MiB and OOM-crashes
|
||||
on-device; `largeHeap` only covers DECRYPTING foreign wf-18 files. Don't bump it back.
|
||||
|
||||
## Out of scope — don't add without asking
|
||||
Caregiver/"Team" alerts, multi-profile, Health Connect, streaks/gamification,
|
||||
|
|
@ -99,5 +105,11 @@ All gradlew calls need `JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64` — system
|
|||
unscoped.** Every `adb` call gets `-s <serial>`; connected tests get
|
||||
`ANDROID_SERIAL=emulator-<n>`. The build fails connected* tasks without an emulator
|
||||
serial — that guard stays. The phone is never a test target.
|
||||
- Can't drive Compose dialogs via adb/uiautomator (esp. with the soft keyboard up — it
|
||||
reports phantom button nodes and taps don't land). Verify dialog flows with instrumented
|
||||
tests (see the backup round-trip / migration tests), not screen tapping.
|
||||
- `git commit -m`: no backticks — bash command-substitutes `` `word` `` inside double quotes
|
||||
and eats it. Use single-quoted or plain messages.
|
||||
- Wireless adb port rotates between sessions; rediscover with `adb devices` / `adb connect <ip:port>`.
|
||||
|
||||
See @README.md for architecture detail.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue