Maestro task 5170be5d-4787-4ea8-8530-c19e98e591bc — Home screen (1g) with empty states, second task of Feature 21.
Replaces the / placeholder with the real Home screen rendering mock 1g from GET /api/v1/home (real endpoint, no sample data): date line + "Tonight's quest", unread bell, Tonight card (photo, name, meta, dark Recipe pill -> /dinner/:id), Quick dinner (grape) -> /quick and Cook from what I have (teal) -> /cook-from-pantry tiles, side-quests and shopping status rows, and the no-plan empty state. Zero-suggestions and not-ready shopping rows hide.
Head: d572ee192dc98f9f31ee596e7108c876e6e135a9.
Remediation of review finding H1 (HIGH, web/src/home/api.ts), two rounds: parseTonight requires the minutes_total key to be present (explicit null valid; 0, negative, fractional, NaN and omission all error), and parseShoppingList validates a non-empty label matching weekStart whenever a list is reported, ready or unready. Eleven new tests assert every malformed case reaches the ErrorBanner with Retry.
Tests: web suite 1161/1161; npm run typecheck, npm test, npm run build pass; Go floor unchanged (gofmt/vet/build clean).
Maestro task `5170be5d-4787-4ea8-8530-c19e98e591bc` — Home screen (1g) with empty states, second task of Feature 21.
Replaces the `/` placeholder with the real Home screen rendering mock 1g from `GET /api/v1/home` (real endpoint, no sample data): date line + "Tonight's quest", unread bell, Tonight card (photo, name, meta, dark Recipe pill -> /dinner/:id), Quick dinner (grape) -> /quick and Cook from what I have (teal) -> /cook-from-pantry tiles, side-quests and shopping status rows, and the no-plan empty state. Zero-suggestions and not-ready shopping rows hide.
Head: `d572ee192dc98f9f31ee596e7108c876e6e135a9`.
Remediation of review finding H1 (HIGH, web/src/home/api.ts), two rounds: `parseTonight` requires the `minutes_total` key to be present (explicit null valid; 0, negative, fractional, NaN and omission all error), and `parseShoppingList` validates a non-empty `label` matching `weekStart` whenever a list is reported, ready or unready. Eleven new tests assert every malformed case reaches the ErrorBanner with Retry.
Tests: web suite 1161/1161; `npm run typecheck`, `npm test`, `npm run build` pass; Go floor unchanged (gofmt/vet/build clean).
Replace the / placeholder with HomePage: the household-local date over
"Tonight's quest", the Recent updates bell with its grape unread dot, the
Tonight card (washed photo, name, "Regular · 40 min" / "Side quest · 30
min", dark Recipe pill to /dinner/:id), the Quick dinner and Cook from what
I have tiles, and the status rows to /discover and the week's Supply run.
With no plan the card is "No quest planned tonight" with "Plan this week";
rows that do not apply are hidden. Loading shows skeletons; a failure
shows an ErrorBanner with Retry.
The offline bootstrap tests now emit their online reset before cleanup:
TanStack's online manager only listens while a query client is mounted,
so the reset was lost and Home's query stayed paused in later tests.
Maestro task 5170be5d-4787-4ea8-8530-c19e98e591bc (Feature 21).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
parseHome now fails fast into the query error instead of rendering bad
values: tonight's minutes_total must be a positive whole number or null,
and a ready shoppingList must carry a non-empty label that is the label
of its weekStart.
Task: 5170be5d-4787-4ea8-8530-c19e98e591bc
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
parseTonight now rejects a tonight dinner without the minutes_total key
instead of reading it as null; an explicit null is still valid. The Home
API always emits the key. parseShoppingList checks the label against
weekStart for unready lists too, since the API supplies it regardless of
readiness.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Maestro task
5170be5d-4787-4ea8-8530-c19e98e591bc— Home screen (1g) with empty states, second task of Feature 21.Replaces the
/placeholder with the real Home screen rendering mock 1g fromGET /api/v1/home(real endpoint, no sample data): date line + "Tonight's quest", unread bell, Tonight card (photo, name, meta, dark Recipe pill -> /dinner/:id), Quick dinner (grape) -> /quick and Cook from what I have (teal) -> /cook-from-pantry tiles, side-quests and shopping status rows, and the no-plan empty state. Zero-suggestions and not-ready shopping rows hide.Head:
d572ee192dc98f9f31ee596e7108c876e6e135a9.Remediation of review finding H1 (HIGH, web/src/home/api.ts), two rounds:
parseTonightrequires theminutes_totalkey to be present (explicit null valid; 0, negative, fractional, NaN and omission all error), andparseShoppingListvalidates a non-emptylabelmatchingweekStartwhenever a list is reported, ready or unready. Eleven new tests assert every malformed case reaches the ErrorBanner with Retry.Tests: web suite 1161/1161;
npm run typecheck,npm test,npm run buildpass; Go floor unchanged (gofmt/vet/build clean).Independent Codex gpt-6-sol review: CHANGES_REQUIRED for this exact commit.
Independent Codex gpt-6-sol review: CHANGES_REQUIRED for this exact commit.
Independent Codex gpt-6-sol review: APPROVED for this exact commit.