Maestro task: 97b50e29-b8a7-4e99-918d-99fa1b239313 (Feature 11 - Settings Home and Admin AI Assistant).
Done-condition
/settings renders mock 1p: title Settings; teal-100 household banner with 44px avatar, Our kitchen, Shared household - changes apply to everyone; grouped surface cards (radius 26) with 38px round icons and chevrons - HOUSEHOLD: Regular dinners (N on rotation, live count), Google Calendar (live status), Household (timezone and dinner time); ALERTS: Notifications & Google Chat; ADMIN: AI assistant (Anthropic - Claude Sonnet from live settings) with an Admin tag and grape-300 inset ring. Each row navigates to its route. Vitest tests with stubbed APIs assert live status lines and navigation. Typecheck, test and build pass.
Evidence
New settings home screen; status lines from household settings, regulars count, Google integration status and the AI settings API; empty/unknown states where an endpoint does not exist yet.
npm run lint:colors, typecheck, test (31 files, 355 tests incl. 21 new settings tests covering status lines, navigation for all five rows, 44px tap targets, the Admin ring, Retry and invalid data), build all pass; gofmt -l . empty.
Loaded /settings in headless Chrome with stubbed APIs at 360px and 1280px; mobile matches 1p and the desktop sidebar shell works.
Maestro task: 97b50e29-b8a7-4e99-918d-99fa1b239313 (Feature 11 - Settings Home and Admin AI Assistant).
## Done-condition
/settings renders mock 1p: title Settings; teal-100 household banner with 44px avatar, Our kitchen, Shared household - changes apply to everyone; grouped surface cards (radius 26) with 38px round icons and chevrons - HOUSEHOLD: Regular dinners (N on rotation, live count), Google Calendar (live status), Household (timezone and dinner time); ALERTS: Notifications & Google Chat; ADMIN: AI assistant (Anthropic - Claude Sonnet from live settings) with an Admin tag and grape-300 inset ring. Each row navigates to its route. Vitest tests with stubbed APIs assert live status lines and navigation. Typecheck, test and build pass.
## Evidence
- New settings home screen; status lines from household settings, regulars count, Google integration status and the AI settings API; empty/unknown states where an endpoint does not exist yet.
- npm run lint:colors, typecheck, test (31 files, 355 tests incl. 21 new settings tests covering status lines, navigation for all five rows, 44px tap targets, the Admin ring, Retry and invalid data), build all pass; gofmt -l . empty.
- Loaded /settings in headless Chrome with stubbed APIs at 360px and 1280px; mobile matches 1p and the desktop sidebar shell works.
/settings now renders the Settings home: the "Our kitchen" shared
household banner and grouped cards for Household (Regular dinners,
Google Calendar, Household), Alerts (Notifications & Google Chat) and
Admin (AI assistant, with the Admin tag and grape-300 inset ring). Each
row links to its settings page.
The Household row shows the live timezone and dinner time from
GET /api/v1/settings/household, and the AI assistant row the live
provider and model from GET /api/v1/settings/ai. Regular dinners,
Google Calendar and Notifications show no status line: the server has
no dinners, Google Calendar or notification endpoint yet.
Shell tests now render the routes inside the API and query providers.
Maestro task: 97b50e29-b8a7-4e99-918d-99fa1b239313
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
/settings now renders the Settings home: the "Our kitchen" shared
household banner and grouped cards for Household (Regular dinners,
Google Calendar, Household), Alerts (Notifications & Google Chat) and
Admin (AI assistant, with the Admin tag and grape-300 inset ring). Each
row links to its settings page.
The Household row shows the live timezone and dinner time from
GET /api/v1/settings/household, and the AI assistant row the live
provider and model from GET /api/v1/settings/ai. Regular dinners,
Google Calendar and Notifications show no status line: the server has
no dinners, Google Calendar or notification endpoint yet.
Shell tests now render the routes inside the API and query providers.
Maestro task: 97b50e29-b8a7-4e99-918d-99fa1b239313
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Regular dinners, Google Calendar and Notifications & Google Chat rows
now show status lines and read them from the server:
- Regular dinners: "N on rotation" from GET /api/v1/dinners?status=regular
(Feature 12). Until that endpoint exists the server answers 404 and the
row says "Rotation count unavailable"; no count is invented.
- Google Calendar: "Connected · <calendar name>" from
GET /api/v1/settings/calendar (Feature 16). Until then a 404 shows the
truthful "Not connected".
- Notifications & Google Chat: "Push on · <Google Chat space>" from
GET /api/v1/settings/notifications. Until then a 404 shows
"Push off · Google Chat not connected".
Only a 404 not_found counts as a missing endpoint; any other failure or a
malformed response shows in the error banner.
The AI assistant row names the model as the handoff does ("Anthropic ·
Claude Sonnet"), shows an unknown model by its id, and says "No model
chosen" for the seeded empty model instead of a trailing separator.
Maestro task: 97b50e29-b8a7-4e99-918d-99fa1b239313
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: 97b50e29-b8a7-4e99-918d-99fa1b239313 (Feature 11 - Settings Home and Admin AI Assistant).
Done-condition
/settings renders mock 1p: title Settings; teal-100 household banner with 44px avatar, Our kitchen, Shared household - changes apply to everyone; grouped surface cards (radius 26) with 38px round icons and chevrons - HOUSEHOLD: Regular dinners (N on rotation, live count), Google Calendar (live status), Household (timezone and dinner time); ALERTS: Notifications & Google Chat; ADMIN: AI assistant (Anthropic - Claude Sonnet from live settings) with an Admin tag and grape-300 inset ring. Each row navigates to its route. Vitest tests with stubbed APIs assert live status lines and navigation. Typecheck, test and build pass.
Evidence
Independent Codex gpt-6-sol review: CHANGES_REQUIRED for this exact commit.
The Regular dinners, Google Calendar and Notifications & Google Chat rows now show status lines and read them from the server: - Regular dinners: "N on rotation" from GET /api/v1/dinners?status=regular (Feature 12). Until that endpoint exists the server answers 404 and the row says "Rotation count unavailable"; no count is invented. - Google Calendar: "Connected · <calendar name>" from GET /api/v1/settings/calendar (Feature 16). Until then a 404 shows the truthful "Not connected". - Notifications & Google Chat: "Push on · <Google Chat space>" from GET /api/v1/settings/notifications. Until then a 404 shows "Push off · Google Chat not connected". Only a 404 not_found counts as a missing endpoint; any other failure or a malformed response shows in the error banner. The AI assistant row names the model as the handoff does ("Anthropic · Claude Sonnet"), shows an unknown model by its id, and says "No model chosen" for the seeded empty model instead of a trailing separator. Maestro task: 97b50e29-b8a7-4e99-918d-99fa1b239313 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>Independent Codex gpt-6-sol review: CHANGES_REQUIRED for this exact commit.
Independent Codex gpt-6-sol review: APPROVED for this exact commit.