Maestro task: fa8f88ae-5ade-430e-a069-274aec112f26 (Feature 12 - Regular Dinners and Onboarding).
Done-condition
/settings/regulars lists Regulars (photo, name, method · minutes, favorite heart, grounding badge: "Finding recipe…" / "Recipe found" / "Needs a recipe") with an add field at the top (name or pasted recipe URL). Tapping a Regular opens an edit Sheet (rename, method, minutes, difficulty, remove with confirmation). "Needs a recipe" rows open a "Fix recipe" Sheet with three paths: pick one of up to 3 candidates (photo, title, site), paste a recipe URL, or enter ingredients and steps manually. Grounding status refreshes while any Regular is pending. Vitest tests with stubbed APIs cover listing, add, edit, remove, each fix-recipe path and the pending refresh. Typecheck, test and build pass.
Evidence
New /settings/regulars screen wired to the dinners API (list/add/patch/archive/favorite/recipe-candidates/ground); grounding badge and pending refresh (polling stops when none pending); edit Sheet with confirmation; Fix-recipe Sheet with the three paths.
lint:colors, typecheck, test, build pass; gofmt -l . empty; headless Chrome at 390px against a mock API (listing, pending → Recipe found, add, favorite, edit, candidate pick, remove).
Known follow-up: the tablet/desktop 2e Settings "Regular dinners" tab still shows the Feature 11 placeholder; embedding this screen there is a small follow-up (and would need the Settings home test fixtures updated to answer the Regulars endpoint).
Maestro task: fa8f88ae-5ade-430e-a069-274aec112f26 (Feature 12 - Regular Dinners and Onboarding).
## Done-condition
/settings/regulars lists Regulars (photo, name, method · minutes, favorite heart, grounding badge: "Finding recipe…" / "Recipe found" / "Needs a recipe") with an add field at the top (name or pasted recipe URL). Tapping a Regular opens an edit Sheet (rename, method, minutes, difficulty, remove with confirmation). "Needs a recipe" rows open a "Fix recipe" Sheet with three paths: pick one of up to 3 candidates (photo, title, site), paste a recipe URL, or enter ingredients and steps manually. Grounding status refreshes while any Regular is pending. Vitest tests with stubbed APIs cover listing, add, edit, remove, each fix-recipe path and the pending refresh. Typecheck, test and build pass.
## Evidence
- New /settings/regulars screen wired to the dinners API (list/add/patch/archive/favorite/recipe-candidates/ground); grounding badge and pending refresh (polling stops when none pending); edit Sheet with confirmation; Fix-recipe Sheet with the three paths.
- lint:colors, typecheck, test, build pass; gofmt -l . empty; headless Chrome at 390px against a mock API (listing, pending → Recipe found, add, favorite, edit, candidate pick, remove).
Known follow-up: the tablet/desktop 2e Settings "Regular dinners" tab still shows the Feature 11 placeholder; embedding this screen there is a small follow-up (and would need the Settings home test fixtures updated to answer the Regulars endpoint).
/settings/regulars lists the household's Regulars with photo, name,
"method · minutes", the favorite heart and a grounding badge ("Finding
recipe…", "Recipe found", "Needs a recipe"). The add field takes a name
or a pasted recipe link. Tapping a Regular opens an edit sheet (rename,
method, minutes, difficulty, remove with confirmation); a Regular that
needs a recipe opens "Fix recipe": pick one of up to three candidates,
paste a link, or type the ingredients and steps in. The list is read
again every 3 seconds while any Regular is still finding its recipe.
The dinners client now parses the full dinner and adds edit, favorite,
ground and recipe-candidate calls; onboarding shares its refusal
tracking through useRefusals.
Maestro task: fa8f88ae-5ade-430e-a069-274aec112f26
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
/settings/regulars lists the household's Regulars with photo, name,
"method · minutes", the favorite heart and a grounding badge ("Finding
recipe…", "Recipe found", "Needs a recipe"). The add field takes a name
or a pasted recipe link. Tapping a Regular opens an edit sheet (rename,
method, minutes, difficulty, remove with confirmation); a Regular that
needs a recipe opens "Fix recipe": pick one of up to three candidates,
paste a link, or type the ingredients and steps in. The list is read
again every 3 seconds while any Regular is still finding its recipe.
The dinners client now parses the full dinner and adds edit, favorite,
ground and recipe-candidate calls; onboarding shares its refusal
tracking through useRefusals.
Maestro task: fa8f88ae-5ade-430e-a069-274aec112f26
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The manual recipe form now enables Save only once method and minutes are
set, as POST /api/v1/dinners/{id}/ground requires, and always sends both.
useRegulars watches the Regulars changes in flight with useIsMutating, so
the grounding refresh pauses while an edit or a recipe fix is being saved,
not only while an add or favorite changes the list, and resumes after.
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: fa8f88ae-5ade-430e-a069-274aec112f26 (Feature 12 - Regular Dinners and Onboarding).
Done-condition
/settings/regulars lists Regulars (photo, name, method · minutes, favorite heart, grounding badge: "Finding recipe…" / "Recipe found" / "Needs a recipe") with an add field at the top (name or pasted recipe URL). Tapping a Regular opens an edit Sheet (rename, method, minutes, difficulty, remove with confirmation). "Needs a recipe" rows open a "Fix recipe" Sheet with three paths: pick one of up to 3 candidates (photo, title, site), paste a recipe URL, or enter ingredients and steps manually. Grounding status refreshes while any Regular is pending. Vitest tests with stubbed APIs cover listing, add, edit, remove, each fix-recipe path and the pending refresh. Typecheck, test and build pass.
Evidence
Known follow-up: the tablet/desktop 2e Settings "Regular dinners" tab still shows the Feature 11 placeholder; embedding this screen there is a small follow-up (and would need the Settings home test fixtures updated to answer the Regulars endpoint).
/settings/regulars lists the household's Regulars with photo, name, "method · minutes", the favorite heart and a grounding badge ("Finding recipe…", "Recipe found", "Needs a recipe"). The add field takes a name or a pasted recipe link. Tapping a Regular opens an edit sheet (rename, method, minutes, difficulty, remove with confirmation); a Regular that needs a recipe opens "Fix recipe": pick one of up to three candidates, paste a link, or type the ingredients and steps in. The list is read again every 3 seconds while any Regular is still finding its recipe. The dinners client now parses the full dinner and adds edit, favorite, ground and recipe-candidate calls; onboarding shares its refusal tracking through useRefusals. Maestro task: fa8f88ae-5ade-430e-a069-274aec112f26 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>/settings/regulars lists the household's Regulars with photo, name, "method · minutes", the favorite heart and a grounding badge ("Finding recipe…", "Recipe found", "Needs a recipe"). The add field takes a name or a pasted recipe link. Tapping a Regular opens an edit sheet (rename, method, minutes, difficulty, remove with confirmation); a Regular that needs a recipe opens "Fix recipe": pick one of up to three candidates, paste a link, or type the ingredients and steps in. The list is read again every 3 seconds while any Regular is still finding its recipe. The dinners client now parses the full dinner and adds edit, favorite, ground and recipe-candidate calls; onboarding shares its refusal tracking through useRefusals. Maestro task: fa8f88ae-5ade-430e-a069-274aec112f26 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>Independent Codex gpt-6-sol review: CHANGES_REQUIRED for this exact commit.
The manual recipe form now enables Save only once method and minutes are set, as POST /api/v1/dinners/{id}/ground requires, and always sends both. useRegulars watches the Regulars changes in flight with useIsMutating, so the grounding refresh pauses while an edit or a recipe fix is being saved, not only while an add or favorite changes the list, and resumes after. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>Independent Codex gpt-6-sol review: APPROVED for this exact commit.