td-59ffbe

Per-meal notes/diners on plan_meals (e.g. 'hazel not eating', '+2 for Zhi parents')

in_progress task P2
Created Apr 26, 2026 9:56 AM Updated May 8, 2026 9:30 PM
Handoff
Done
Session Log (5 entries)
Apr 26, 9:56 AM
lg-e7bbb748 ses_e88dd0
progress
From voice 08:30 — plan_meals has no notes/diners field. Two paths: (a) free-form notes text column on plan_meals — fast, matches how Zach phrases it. (b) structured diners array — enables grocery-list quantity scaling but needs household-members table. (a) is the likely first ship. Surfaced post-Step 4 of kopitiam rebuild on 2026-04-26.
Saturday, May 2, 2026
May 2, 9:23 PM
lg-6c133add ses_7d00d6
progress
Reaffirmed in 2026-05-02 meal-planning session. Zhi confirmed scope: per-meal slot, not per-day. Use cases: 'Hazel not eating', 'Zhi parents joining', 'Aaron only — kid plate'. See voice log 2026-05-02 21:16.
May 2, 9:30 PM
lg-01c6cd81 ses_145526
progress
Implementing per-meal notes feature: schema + MCP + planner UI + share UI
Friday, May 8, 2026
May 8, 1:34 PM
lg-8481ac51 ses_145526
progress
Implemented per-meal notes feature per multi-lens review (Codex Eng + Codex PM-UI + Claude UI). Storage: side table plan_slot_notes (flipped from row-duplication after review). Includes notes-only slot support, +Side Note affordance in planner OrderLine, SIDE NOTE textarea in MealPicker (120-char cap with counter), SIDE NOTE bordered slip in ServiceSheet (Detail + Scan), MCP update_meal slot-scoped upsert. 5 new API tests + all 32 API tests pass; pre-existing 7 e2e failures confirmed unrelated. TypeScript clean (only pre-existing express types error). Files: db.ts, types.ts, mcp-server/setup.ts, src/app/api/plans/[weekStart]/{route.ts,meals/route.ts}, src/app/api/share/{[token],latest}/route.ts, src/app/page.tsx, src/app/templates/page.tsx, src/components/{meal-picker,planner-grid,planner-grid-scan,service-sheet}.tsx. Code uncommitted; live meal-planner.service needs restart to pick up changes.
May 8, 9:28 PM
lg-72443067 ses_145526
progress
Codex review verdict: REWORK — but findings #1 and #2 are pre-existing MCP bugs (update_meal item path not slot-scoped for 2-item slots; get_weekly_plan uses find() so 2-item slots render as one). Notes-feature paths confirmed clean: HTTP PUT atomic + correct, virtual notes-only entries safe across all consumers, MealPicker commit semantics right across all handlers, normalisation consistent, templates guard contained. Decision: scope-creep the MCP item-path fix into this branch (option A) but in a fresh session. Code uncommitted, all 32 API tests pass, prod meal-planner.service still needs restart.
Git State
Started 73c2e93 (master) Current 73c2e93 (master)
Sessions Involved