Build the Supply archive screen at /plan/shopping/archive (Feature 17) #139

3 Commits
Author SHA1 Message Date
dev_agentandClaude Opus 5.5 248870897c Wait for a toggle's retry timer before jumping past it in the offline queue tests
CI / ci (push) Successful in 5m4s
CI / ci (pull_request) Successful in 4m54s
The four tests that retry a toggle after a failed first try advanced the
fake clock by RETRY_FIRST, but the wait before a second try is RETRY_FIRST
doubled once (2000 ms). The retry only fired because shouldAdvanceTime let
real time push the clock the rest of the way inside waitFor's 1000 ms
timeout, a race that CI lost once (run 3860).

retrySecondTry now waits until that 2 * RETRY_FIRST timer is set, then
advances past it, so the jump can no longer land before the timer. The
no-online-event test also asserts nothing was sent before the timer fires.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 12:47:35 -04:00
dev_agentandClaude Opus 5.5 a7abc28c29 Open every Supply archive post read-only and render Week headings (Feature 17)
CI / ci (push) Failing after 4m9s
CI / ci (pull_request) Successful in 5m0s
A post opened from the Supply archive is now read-only by the screen it is
opened from, not by its list's status: SupplyRunPage takes an explicit
readOnly mode, which the archive sets whenever a post is open. The current
week's post — which the archive API includes — shows the Archived tag, no
checkbox, no Send to Google Chat and no offer to make a list, so no PATCH
can be sent from the archive. On desktop with no post open, the list
beside the archive panel stays this week's editable Supply run.

The Week view renders the periods the server sends with their headings,
as Month and Year do, instead of flattening them.

Maestro task 3cf3a22a-ae31-4f5f-989d-bf09824583d1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 12:15:31 -04:00
dev_agentandClaude Opus 5.5 00f9e304ad Build the Supply archive screen at /plan/shopping/archive (Feature 17)
CI / ci (push) Failing after 4m15s
CI / ci (pull_request) Failing after 4m12s
Mock 1m, and the 2f right panel on desktop: a Week | Month | Year
segmented control drives GET /api/v1/shopping/archive?by=, whose periods
are rendered as the server groups them in the household's zone, under
Bagel 18 px headings for month and year. Each post card shows the week
label kicker (capitalised in CSS), the AI title or the week label while
it is untitled, the counts and its first dinners as chips; the API's
current post is ringed grape-100 + grape-300 with "· Current". "Load
older" shows eight more posts at a time.

A post opens the archive on its week (?week=), shown by the Supply run
screen's own rendering: read-only and tagged Archived once frozen, with
no checkbox and no PATCH. On desktop the archive is a panel beside that
list; on mobile and tablet it is the archive or the open post's list.

Maestro task 3cf3a22a-ae31-4f5f-989d-bf09824583d1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 11:54:25 -04:00