Mobile draft board (1f) #117

Member

Task

Maestro task 4bb14d54-76bc-4e7d-8c35-fa738abd49ff — "Mobile draft board (1f)" (Feature 14, Weekly Plan Builder).

Done-condition

/plan on mobile renders mock 1f for the selected week (defaults to next week after the plan_draft day, else this week; prev/next week controls): 26 px week title with a Draft (grape-100/800), Synced or "Changes not pushed" tag; assistant bubble with 32 px grape "Q" avatar and the plan's ai_note; 2-column grid of 86 px day tiles (radius 22) with day kicker and Bagel 15 px dinner — Regular on surface, Quest-log pick on teal-300 with "WED · NEW" kicker, crock-pot tiles showing "Start by h:mm"; an 8th dashed "+ Rebuild week" tile (confirms first when synced); "Looks good — push to Calendar" primary button (disabled with an explanatory tooltip until Feature 16 is connected). With no plan, an empty state offers "Draft this week" which starts the draft job and shows skeleton tiles. Vitest tests cover draft/synced/changed states, NEW highlighting, start-by, rebuild confirm and the empty state. Typecheck, test and build pass.

Scope

Mobile draft board at /plan only. Explicitly out of scope and left to later tasks: the swap sheet (f231813c), the tablet/desktop plan manager (4657cba1) and drag-and-drop/keyboard swapping (5c2842a8). No backend, migration or skill change — the plan API this consumes is already on the feature branch.

Evidence (orchestrator-run pre-review gate at 3483faafa9)

  • gofmt -l . — empty (no Go files changed by this commit)
  • cd web && npm run typecheck — PASS
  • cd web && npm test — PASS, 44 files / 680 tests (includes the colour-literal lint gate)
  • cd web && npm run build — PASS (includes lint:colors and check:dist-fonts)

Implementation commit: 3483faafa93f8e51252ed00388d7dbc94e6ff6eb

## Task Maestro task `4bb14d54-76bc-4e7d-8c35-fa738abd49ff` — "Mobile draft board (1f)" (Feature 14, Weekly Plan Builder). ## Done-condition `/plan` on mobile renders mock 1f for the selected week (defaults to next week after the plan_draft day, else this week; prev/next week controls): 26 px week title with a Draft (grape-100/800), Synced or "Changes not pushed" tag; assistant bubble with 32 px grape "Q" avatar and the plan's ai_note; 2-column grid of 86 px day tiles (radius 22) with day kicker and Bagel 15 px dinner — Regular on surface, Quest-log pick on teal-300 with "WED · NEW" kicker, crock-pot tiles showing "Start by h:mm"; an 8th dashed "+ Rebuild week" tile (confirms first when synced); "Looks good — push to Calendar" primary button (disabled with an explanatory tooltip until Feature 16 is connected). With no plan, an empty state offers "Draft this week" which starts the draft job and shows skeleton tiles. Vitest tests cover draft/synced/changed states, NEW highlighting, start-by, rebuild confirm and the empty state. Typecheck, test and build pass. ## Scope Mobile draft board at `/plan` only. Explicitly out of scope and left to later tasks: the swap sheet (`f231813c`), the tablet/desktop plan manager (`4657cba1`) and drag-and-drop/keyboard swapping (`5c2842a8`). No backend, migration or skill change — the plan API this consumes is already on the feature branch. ## Evidence (orchestrator-run pre-review gate at 3483faafa93f8e51252ed00388d7dbc94e6ff6eb) - `gofmt -l .` — empty (no Go files changed by this commit) - `cd web && npm run typecheck` — PASS - `cd web && npm test` — PASS, 44 files / 680 tests (includes the colour-literal lint gate) - `cd web && npm run build` — PASS (includes `lint:colors` and `check:dist-fonts`) Implementation commit: `3483faafa93f8e51252ed00388d7dbc94e6ff6eb`
orchestrator-agent added 1 commit 2026-10-07 11:25:21 -04:00
Add the mobile Draft board at /plan (mock 1f)
CI / ci (push) Successful in 3m12s
CI / ci (pull_request) Successful in 3m15s
3483faafa9
The Plan screen shows the selected week's plan: the week title with its
Draft, Synced or "Changes not pushed" tag, the assistant's note beside the
grape "Q" avatar, and a two-column grid of day tiles. Quest-log picks are
teal with a "· NEW" kicker, crock-pot dinners show their start-by time in
the household's zone, and the dashed "+ Rebuild week" tile redrafts the
week, asking first when the plan was pushed to Calendar. "Looks good —
push to Calendar" stays unavailable with a tooltip until Feature 16.

The page opens on next week once this week's plan_draft time has come,
otherwise on this week, with previous / next week buttons. A week with no
plan offers "Draft this week", which starts the draft_week job and shows
skeleton tiles until the plan is read again; a failed draft is shown with
Retry and no plan is made up. web/src/plan/week.ts is the one household
week helper, mirroring internal/household/week.go.

The App route tests that used /plan as a placeholder now use /quick.

Maestro: 4bb14d54-76bc-4e7d-8c35-fa738abd49ff

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
review_agent approved these changes 2026-10-07 11:28:06 -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-07 11:38:56 -04:00
Hold a succeeded draft until the plan read is the one drafted
CI / ci (push) Successful in 3m13s
CI / ci (pull_request) Successful in 3m19s
87381fa4b9
The Draft board let go of a succeeded draft_week job as soon as the plan
was read again, whatever that read returned: a missing plan showed as
"Nothing planned yet" and another plan as the new draft. Keep the job's
plan_id and clear the job only once the plan read has that id; a missing
or different plan is shown as "Couldn't read the draft" with Retry.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
review_agent requested changes 2026-10-07 11:50:56 -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-07 12:01:09 -04:00
Land a succeeded draft only on a plan read from the server
CI / ci (push) Failing after 5s
CI / ci (pull_request) Successful in 3m18s
58c415ca1a
A redraft keeps the plan's id, so a plan the service worker answered from
its cache could pass for the finished rebuild. The API client's apiRead now
says whether a GET was the cached copy; the plan carries it, and the Draft
board shows the retryable draft-unread error instead of a cached plan with
the drafted id. A later read from the server still lands the draft.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
review_agent approved these changes 2026-10-07 12:12:40 -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-07 12:22:20 -04:00
Retry an unread draft by reading the plan again
CI / ci (push) Successful in 3m13s
CI / ci (pull_request) Successful in 3m13s
870f3462ce
A succeeded draft whose plan read is missing, another plan, or a cache
fallback now retries the plan GET and keeps the job, instead of starting
a new draft. Rebuilding stays on "+ Rebuild week". The tests assert Retry
sends no draft POST, re-reads the plan, keeps the error while the read is
still a cache fallback, and lands the draft on a live matching read.

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 9b9421bb58 into feature/ca2a118d-0beb-49f9-b2ef-d5ed0ac1fa2a-weekly-plan-builder 2026-10-07 12:42:55 -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#117