diff --git a/HANDOFF.md b/HANDOFF.md index b14eb94..4c71610 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -20,11 +20,33 @@ pending user testing), and OpenFoodFacts lookup/search. | 005 Frontend daily view | ✅ done, QA passed | `b69661c` | | 006 OFF + barcode scan/search flows | ✅ done, QA passed (backend `32461b7`, frontend below) | `32461b7` + frontend | | 007 Meals (from-log, unpack, recursion) | ✅ done, QA passed | `a8aed9a` + `7db6484` | -| 008 Food library view + restore | ⬜ **next** | — | +| 008 Food library view + restore | ✅ done, QA passed | `0c239cd` + `731e541` | -Test counts at HEAD: backend **174 passed** (`cd backend && uv run pytest`), +**All milestones M1–M4 COMPLETE — v1 feature-complete.** + +Test counts at HEAD: backend **180 passed** (`cd backend && uv run pytest`), frontend **23 vitest passed** + `npm run build` green. +## TICKET-008 notes (session 3, continued) + +- Backend: `POST /api/foods/{id}/restore` (idempotent — restoring a live food + returns it unchanged; 404 unknown id; nutrition/created_at/history intact). +- Frontend: `FoodLibrary.svelte` (was a scaffold placeholder) — search, + limit/offset pagination (fetches PAGE_SIZE+1 to detect next page), + include_deleted toggle, confirm-then-soft-delete, restore. Edit routes + through FoodEditor: regular foods get a new edit mode (`food.id` present → + `api.updateFood`, preserves `is_meal`); meals route to the ticket-007 meal + component editor. Nav via "🍔 Foods" button on dashboard. Editor closes call + `refreshDayData()` since food edits retroactively change log rendering (§2.1). +- Gotcha fixed: initial load must use `onMount`, not `$effect` — an effect + tracks the search-box state and re-fetches on every keystroke. + +## After v1 + +Remaining loose ends: phone-camera scan checklist (§8.4, needs Caddy HTTPS + +user testing), README.md user edit uncommitted (user's call), deferred spec §5 +items (deployment, CSV export, extra nutrients in UI, PWA manifest). + ## TICKET-007 notes (session 3) - Backend: `routers/meals.py` (from-log, unpack, PUT components — each one