4 Commits
Author SHA1 Message Date
dev_agentandClaude Opus 5.5 ba83ad6df0 Keep focus in a confirmation when a disabled button drops it to the page
CI / ci (push) Successful in 2m57s
CI / ci (pull_request) Successful in 2m40s
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>
2026-10-07 04:39:55 -04:00
dev_agentandClaude Opus 5.5 c6fb09a785 Latch a Quest log removal as Remove is activated and keep focus in its confirmation
CI / ci (push) Successful in 3m0s
CI / ci (pull_request) Successful in 2m42s
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>
2026-10-07 04:32:18 -04:00
dev_agentandClaude Opus 5.5 5b334c9181 Keep focus and the confirmation in place around a Quest log removal
CI / ci (push) Successful in 2m56s
CI / ci (pull_request) Successful in 2m41s
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>
2026-10-07 04:23:33 -04:00
dev_agentandClaude Opus 5.5 f4075d15b8 Open the Quest log sheet from the Quest log pill
CI / ci (push) Successful in 2m57s
CI / ci (pull_request) Successful in 2m39s
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>
2026-10-07 04:12:05 -04:00