Nav graph, setup with distinct URL-vs-credential errors, locations tree with reorder and bulk move, settings; library grid with search/sort/filter, detail with soft-delete undo, continuous scan with duplicate-ISBN warning. Verified by orchestrator: assembleDebug exit 0; testDebugUnitTest exit 0, 91 tests, 0 failures, 0 errors (68 -> 91). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
15 lines
1.9 KiB
Plaintext
15 lines
1.9 KiB
Plaintext
=== E1-shell attempts=1 quota_waits=0 hard_fails=0 ===
|
|
cost=$2.8037944 turns=6 err=?
|
|
--- result (tail) ---
|
|
ull nav graph; `library?shelfId={shelfId}` doubles as bare `library` via a nullable arg
|
|
- `ui/setup/SetupViewModel.kt`, `ui/setup/SetupScreen.kt` — new: URL/email/password form; reachability probe is a short-timeout GET to `/api/health` done *before* attempting login, so URL/network errors and 400/401/403 credential errors get distinct messages
|
|
- `ui/locations/LocationsViewModel.kt`, `ui/locations/LocationsScreen.kt` — new: bookcase→shelf tree, add/edit/delete dialogs, up/down reorder, per-shelf book counts, tap-shelf navigation, "Move books" bulk action
|
|
- `ui/settings/SettingsViewModel.kt`, `ui/settings/SettingsScreen.kt` — new: server URL, account (user id — see gap below), sign out, manual sync + last-sync time, book/cover counts
|
|
- `data/repo/LocationRepository.kt` — extended with `moveBooks(fromShelfId, toShelfId?)`, built only from BookDao's existing observe/upsert surface (no BookDao edit)
|
|
- `app/src/test/.../LocationRepositoryTest.kt` — new: 3 tests covering `moveBooks` (reassign, unassign, PENDING_CREATE preserved)
|
|
- `MainActivity.kt` — rewritten to host `BookshelfNavHost`; picks `setup` vs `library` start route from `authRepository.serverUrl`/`isLoggedIn`
|
|
|
|
**Boundaries respected:** did not touch `ui.library`/`ui.detail`/`ui.scan`, `ui.theme`/`ui.components`, `BookDao`/`BookRepository`, or any build files. Waited out E2's in-progress work (including one quota-wait cycle) rather than working around missing `LibraryScreen`/`DetailScreen`/`ScanScreen`.
|
|
|
|
**Gap vs SPEC:** the Settings "account" section shows the PocketBase user id, not the email — `AuthRepository`/`SettingsStore` (wave-2, out of my edit scope) never persists the login email, only the token and user id. Not blocking, but worth a follow-up if a human-readable account label is wanted.
|