Done-condition: tapping the "Quest log · N" pill opens a Sheet listing Quest-log dinners (48 px washed photo, name, difficulty, minutes) excluding those already placed on the current or a future plan, each opening /dinner/:id, with a remove action (confirm) that archives the dinner via the dinners API and decrements the count; the empty state reads "Your Quest log is empty - swipe right on a side quest to add one."; Vitest tests with stubbed APIs cover listing, navigation, removal and the empty state; typecheck, test and build pass.
Replaces the interim disclosure action left by the deck-screen task, so there is one way to see the Quest log. Uses the existing Sheet primitive and design tokens. The plan feature is not merged on this branch; NOTES states exactly what the exclusion relied on.
Maestro task `5ad0b188-176e-4107-91dd-5d667ca6a4d2` - "Quest log sheet" (Feature 13).
Done-condition: tapping the "Quest log · N" pill opens a Sheet listing Quest-log dinners (48 px washed photo, name, difficulty, minutes) excluding those already placed on the current or a future plan, each opening /dinner/:id, with a remove action (confirm) that archives the dinner via the dinners API and decrements the count; the empty state reads "Your Quest log is empty - swipe right on a side quest to add one."; Vitest tests with stubbed APIs cover listing, navigation, removal and the empty state; typecheck, test and build pass.
Replaces the interim disclosure action left by the deck-screen task, so there is one way to see the Quest log. Uses the existing Sheet primitive and design tokens. The plan feature is not merged on this branch; NOTES states exactly what the exclusion relied on.
Tapping "Quest log · N" opens a bottom sheet listing the Quest log, each
dinner with its 48 px washed photo, name, difficulty and minutes. A row
opens /dinner/:id; its remove button asks to confirm, then archives the
dinner (DELETE /api/v1/dinners/{id}) and takes it off the count. An empty
Quest log says "Your Quest log is empty — swipe right on a side quest to
add one." The sheet replaces the pill's interim name list.
The Quest log is the dinners accepted and not yet scheduled, so GET
/api/v1/dinners?status=quest_log now leaves out a dinner on the plan for
the household's current week (by its timezone) or a later week, read
from week_plans and plan_days. The pill's count and the sheet both come
from that one read.
Task: 5ad0b188-176e-4107-91dd-5d667ca6a4d2
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
After a removal, focus moves to the remove button of the dinner now in
the removed one's place, the one before it when it was the last, or the
Quest log sheet when none is left, instead of the removed row's detached
button. While the DELETE is pending, the confirmation can no longer be
dismissed: Confirm gains a dismissible prop that disables the cancel
button and ignores Escape and the scrim.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The pending state reached the confirmation only on a later render, so
Keep it, Escape, the scrim or a second Remove straight after Remove could
still close the confirmation or send a second DELETE. QuestLogSheet now
latches the removal synchronously in a ref, refuses dismissal and a
repeated confirmation while it is set, and renders busy from it until
the removal settles.
A focused button that becomes disabled loses focus to the page, outside
the dialog. Confirm now moves focus to its dialog when the focused
control is disabled by busy or dismissible changing.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Confirm moved focus to its dialog only when the focused control stayed
focused while disabled. A browser that moves focus to the page as it
disables the control left the confirmation open with focus outside it.
Confirm now also takes focus back to the dialog when busy or dismissible
changes and focus is on the page.
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
5ad0b188-176e-4107-91dd-5d667ca6a4d2- "Quest log sheet" (Feature 13).Done-condition: tapping the "Quest log · N" pill opens a Sheet listing Quest-log dinners (48 px washed photo, name, difficulty, minutes) excluding those already placed on the current or a future plan, each opening /dinner/:id, with a remove action (confirm) that archives the dinner via the dinners API and decrements the count; the empty state reads "Your Quest log is empty - swipe right on a side quest to add one."; Vitest tests with stubbed APIs cover listing, navigation, removal and the empty state; typecheck, test and build pass.
Replaces the interim disclosure action left by the deck-screen task, so there is one way to see the Quest log. Uses the existing Sheet primitive and design tokens. The plan feature is not merged on this branch; NOTES states exactly what the exclusion relied on.
Tapping "Quest log · N" opens a bottom sheet listing the Quest log, each dinner with its 48 px washed photo, name, difficulty and minutes. A row opens /dinner/:id; its remove button asks to confirm, then archives the dinner (DELETE /api/v1/dinners/{id}) and takes it off the count. An empty Quest log says "Your Quest log is empty — swipe right on a side quest to add one." The sheet replaces the pill's interim name list. The Quest log is the dinners accepted and not yet scheduled, so GET /api/v1/dinners?status=quest_log now leaves out a dinner on the plan for the household's current week (by its timezone) or a later week, read from week_plans and plan_days. The pill's count and the sheet both come from that one read. Task: 5ad0b188-176e-4107-91dd-5d667ca6a4d2 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: 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.