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

Member

Task

Maestro task 3cf3a22a-ae31-4f5f-989d-bf09824583d1 — "Supply archive screen (1m) and frozen post view" (Feature 17, task 7 of 7, the last one).

Done-condition

/plan/shopping/archive renders mock 1m (and the 2f right panel on desktop): "Week | Month | Year" segmented control; Bagel 18 px period headings; post cards with kicker "WEEK 41 · OCT 5 – 11", the AI title (or the week label when null), meta "7 dinners · 23 items · 4 already on hand" and dinner chips; the current week's post highlighted with grape-100 + grape-300 ring and "· Current". Tapping a post opens the frozen list read-only (no checkboxes interactive, "Archived" tag). Infinite scroll or "Load older" paginates.

Scope

Web only. No Go/backend change, no migration, no new dependency.

Points for review

  • The segmented control drives ?by= and the screen renders the grouping the API returns (week/month/year headings in the household timezone) rather than re-grouping client-side; grouping correctness at a month and a year boundary is therefore the API's (reviewed in task 7ac36526) and the UI must not second-guess it.
  • The current post uses the API's current field, not a client-side date comparison; the null-title fallback is the week label (one fallback, not two); the meta counts come from the API's dinner/item/on-hand fields.
  • The frozen post view is read-only: reuse the Supply run screen's archived rendering rather than a second one, with no interactive checkboxes and no code path that can issue a PATCH.
  • "Load older" (not infinite scroll) must not duplicate or skip posts.
  • Empty/loading/error states with a retry; a11y of the segmented control and the post links; layout fidelity at the three breakpoints (1m mobile/tablet, 2f right panel on desktop).

Evidence (orchestrator-run gate at 00f9e304ad)

  • cd web && npm run typecheck PASS; npm test PASS 49 files / 869 tests (853 before); npm run build PASS
  • npm run lint:colors no hex colour literals outside tokens.css
  • Only web/ files changed; working tree clean; Go tree untouched
## Task Maestro task `3cf3a22a-ae31-4f5f-989d-bf09824583d1` — "Supply archive screen (1m) and frozen post view" (Feature 17, task 7 of 7, the last one). ## Done-condition `/plan/shopping/archive` renders mock 1m (and the 2f right panel on desktop): "Week | Month | Year" segmented control; Bagel 18 px period headings; post cards with kicker "WEEK 41 · OCT 5 – 11", the AI title (or the week label when null), meta "7 dinners · 23 items · 4 already on hand" and dinner chips; the current week's post highlighted with grape-100 + grape-300 ring and "· Current". Tapping a post opens the frozen list read-only (no checkboxes interactive, "Archived" tag). Infinite scroll or "Load older" paginates. ## Scope Web only. No Go/backend change, no migration, no new dependency. ## Points for review - The segmented control drives `?by=` and the screen renders the grouping the **API** returns (week/month/year headings in the household timezone) rather than re-grouping client-side; grouping correctness at a month and a year boundary is therefore the API's (reviewed in task `7ac36526`) and the UI must not second-guess it. - The current post uses the API's `current` field, not a client-side date comparison; the null-title fallback is the week label (one fallback, not two); the meta counts come from the API's dinner/item/on-hand fields. - The frozen post view is read-only: reuse the Supply run screen's archived rendering rather than a second one, with no interactive checkboxes and no code path that can issue a PATCH. - "Load older" (not infinite scroll) must not duplicate or skip posts. - Empty/loading/error states with a retry; a11y of the segmented control and the post links; layout fidelity at the three breakpoints (1m mobile/tablet, 2f right panel on desktop). ## Evidence (orchestrator-run gate at 00f9e304ad0bd94558b6d77ec651aad2565498c0) - `cd web && npm run typecheck` PASS; `npm test` PASS 49 files / 869 tests (853 before); `npm run build` PASS - `npm run lint:colors` no hex colour literals outside tokens.css - Only `web/` files changed; working tree clean; Go tree untouched
orchestrator-agent added 1 commit 2026-10-08 12:01:03 -04:00
Build the Supply archive screen at /plan/shopping/archive (Feature 17)
CI / ci (push) Failing after 4m15s
CI / ci (pull_request) Failing after 4m12s
00f9e304ad
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>
review_agent requested changes 2026-10-08 12:02:59 -04:00
Dismissed
review_agent left a comment
Member

Independent Codex gpt-6-sol review: CHANGES_REQUIRED for this exact commit.

Independent Codex gpt-6-sol review: CHANGES_REQUIRED for this exact commit.
overseer added 1 commit 2026-10-08 12:15:34 -04:00
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
a7abc28c29
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>
review_agent approved these changes 2026-10-08 12:27:04 -04:00
Dismissed
review_agent left a comment
Member

Independent Codex gpt-6-sol review: APPROVED for this exact commit.

Independent Codex gpt-6-sol review: APPROVED for this exact commit.
overseer added 1 commit 2026-10-08 12:47:38 -04:00
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
248870897c
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>
review_agent left a comment
Member

Independent Codex gpt-6-sol review: APPROVED for this exact commit.

Independent Codex gpt-6-sol review: APPROVED for this exact commit.
approver_agent merged commit 680706df83 into feature/3a88c1fd-6c9a-4e70-b6b1-a8880dd4ac82-shopping-list-and-supply-archive 2026-10-08 13:02:20 -04:00
Sign in to join this conversation.
No Reviewers
No labels
3 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Maniacs_Mansion/MealQuest#139