Maestro task: 9cb927ff-af91-4e16-ad7f-d5cd16b4a379 (Feature 12 - Regular Dinners and Onboarding).
Done-condition
Step 3 ("Step 3 of 3", all three progress pills filled) explains what MealQuest will notify about (plan ready, shopping list ready, tonight's dinner, new side quests), shows the iOS InstallHint when applicable, and offers "Turn on notifications" plus "Maybe later". "Turn on notifications" calls an injectable enableNotifications() that is a no-op returning "unavailable" until Feature 19 wires it. Either button sets onboarding_completed_at (PATCH household settings) and navigates to Home, ending the first-run redirect. Notification permission is never requested on page load. Vitest tests cover both buttons, completion and that Notification.requestPermission is not called on render. Typecheck, test and build pass.
Evidence
Real /onboarding/notifications step 3 replacing the placeholder; reuses step 2's progress pills and the Feature 06 InstallHint; both buttons PATCH onboarding_completed and navigate Home; enableNotifications() is injectable and currently returns unavailable; requestPermission is never called.
lint:colors, typecheck, test (37 files / 477 tests), build pass; gofmt/vet/go test -race pass; headless Chromium at 390px (Android and iPhone Safari) showed the hint and completion with zero permission prompts.
Maestro task: 9cb927ff-af91-4e16-ad7f-d5cd16b4a379 (Feature 12 - Regular Dinners and Onboarding).
## Done-condition
Step 3 ("Step 3 of 3", all three progress pills filled) explains what MealQuest will notify about (plan ready, shopping list ready, tonight's dinner, new side quests), shows the iOS InstallHint when applicable, and offers "Turn on notifications" plus "Maybe later". "Turn on notifications" calls an injectable enableNotifications() that is a no-op returning "unavailable" until Feature 19 wires it. Either button sets onboarding_completed_at (PATCH household settings) and navigates to Home, ending the first-run redirect. Notification permission is never requested on page load. Vitest tests cover both buttons, completion and that Notification.requestPermission is not called on render. Typecheck, test and build pass.
## Evidence
- Real /onboarding/notifications step 3 replacing the placeholder; reuses step 2's progress pills and the Feature 06 InstallHint; both buttons PATCH onboarding_completed and navigate Home; enableNotifications() is injectable and currently returns unavailable; requestPermission is never called.
- lint:colors, typecheck, test (37 files / 477 tests), build pass; gofmt/vet/go test -race pass; headless Chromium at 390px (Android and iPhone Safari) showed the hint and completion with zero permission prompts.
PATCH /api/v1/settings/household accepts {"onboarding_completed": true},
which sets onboarding_completed_at to the update time (keeping the first
time once set). The timestamp stays read-only and false is refused, since
onboarding is never undone.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Step 3 explains what MealQuest notifies about, shows the iOS install hint
and offers "Turn on notifications" and "Maybe later". Either one PATCHes
onboarding_completed and goes Home, ending the first-run redirect.
"Turn on notifications" first calls an injectable enableNotifications(),
a no-op answering "unavailable" until Feature 19 wires Web Push; nothing
asks for notification permission.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PATCH /api/v1/settings/household accepts {"onboarding_completed": true},
which sets onboarding_completed_at to the update time (keeping the first
time once set). The timestamp stays read-only and false is refused, since
onboarding is never undone.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Step 3 explains what MealQuest notifies about, shows the iOS install hint
and offers "Turn on notifications" and "Maybe later". Either one PATCHes
onboarding_completed and goes Home, ending the first-run redirect.
"Turn on notifications" first calls an injectable enableNotifications(),
a no-op answering "unavailable" until Feature 19 wires Web Push; nothing
asks for notification permission.
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: 9cb927ff-af91-4e16-ad7f-d5cd16b4a379 (Feature 12 - Regular Dinners and Onboarding).
Done-condition
Step 3 ("Step 3 of 3", all three progress pills filled) explains what MealQuest will notify about (plan ready, shopping list ready, tonight's dinner, new side quests), shows the iOS InstallHint when applicable, and offers "Turn on notifications" plus "Maybe later". "Turn on notifications" calls an injectable enableNotifications() that is a no-op returning "unavailable" until Feature 19 wires it. Either button sets onboarding_completed_at (PATCH household settings) and navigates to Home, ending the first-run redirect. Notification permission is never requested on page load. Vitest tests cover both buttons, completion and that Notification.requestPermission is not called on render. Typecheck, test and build pass.
Evidence
PATCH /api/v1/settings/household accepts {"onboarding_completed": true}, which sets onboarding_completed_at to the update time (keeping the first time once set). The timestamp stays read-only and false is refused, since onboarding is never undone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>PATCH /api/v1/settings/household accepts {"onboarding_completed": true}, which sets onboarding_completed_at to the update time (keeping the first time once set). The timestamp stays read-only and false is refused, since onboarding is never undone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>Independent Codex gpt-6-sol review: APPROVED for this exact commit.