Lane 2c — the rest of a campaign (#659, #696) #698

Closed
claude-bot wants to merge 0 commits from feat/lane2c-campaign into main
Collaborator

Part of #659: the second fix for #696's surfaces that no lane owned. Draws CAMP-4 to CAMP-7 and SH-7 as /prototype/lane2c.

This branch sits on #697 (lane 1b). Merge #697 first; this PR's diff then shrinks to its own two commits.

What's drawn

  • CAMP-4, a recurring series. It's managed from the Sessions list and from any of its sessions (IS-368), and it's the GM's alone. Covered: every field for making one, including the length and end condition lane 2 never drew; the "which sessions to change" choice; stopping a series, with the choice to also cancel its sessions; taking one session out of the series; and loading.
  • CAMP-5, highlights. The speaker filter keeps every name as a choice, so the list of choices never shrinks while filtering. Also: the empty page, for both the GM and a player; loading; and failure with Try again.
  • CAMP-6, storyline (D47): the story and the timeline.
    • The story comes in chapters, with the three "no story yet" wordings, editing it, adding a chapter (while it's being written, when it fails, and when there's nothing new), and rewriting it all behind a confirmation.
    • The timeline holds sessions, milestones and entries from the wiki, and can be filtered.
    • The journal is gone, because notes now live on each session (D30).
  • CAMP-7, analytics (D14). A player sees their own row. The share panel says the link shows the GM's full view. Making a new link and turning it off both ask first; the page also has an early-days state, loading, and a failure state.
  • SH-7, shared patterns.
    • D12's three levels: undo, a confirmation that says what will happen, and typing the name.
    • Today's raw-exception error banner next to its replacement in plain words.
    • The field-level error, the "not for you" page, the lost-connection marker, and the busy and empty states.
    • Leaving with unsaved work, which now also asks on a tab or anchor change.
    • The skip link, and never colour alone.
    • No toasts.

Coverage, checked before the PR

105 placements, none missing: 61 drawn, 8 replaced by a decision, 5 behaviour, 30 belonging to other surfaces, 1 deferred. The first draw had missed three; all three are drawn now.

Rendering caught five

All five are listed on the page. Among them: a designer's note had leaked into a product dialog, and the "early days" analytics state showed eleven sessions as played.

Feedback-site tests: 101 passed.

🤖 Generated with Claude Code

Part of #659: the second fix for #696's surfaces that no lane owned. Draws CAMP-4 to CAMP-7 and SH-7 as `/prototype/lane2c`. **This branch sits on #697 (lane 1b).** Merge #697 first; this PR's diff then shrinks to its own two commits. ## What's drawn - **CAMP-4, a recurring series.** It's managed from the Sessions list and from any of its sessions (IS-368), and it's the GM's alone. Covered: every field for making one, including the length and end condition lane 2 never drew; the "which sessions to change" choice; stopping a series, with the choice to also cancel its sessions; taking one session out of the series; and loading. - **CAMP-5, highlights.** The speaker filter keeps every name as a choice, so the list of choices never shrinks while filtering. Also: the empty page, for both the GM and a player; loading; and failure with Try again. - **CAMP-6, storyline (D47): the story and the timeline.** - The story comes in chapters, with the three "no story yet" wordings, editing it, adding a chapter (while it's being written, when it fails, and when there's nothing new), and rewriting it all behind a confirmation. - The timeline holds sessions, milestones and entries from the wiki, and can be filtered. - The journal is gone, because notes now live on each session (D30). - **CAMP-7, analytics (D14).** A player sees their own row. The share panel says the link shows the GM's full view. Making a new link and turning it off both ask first; the page also has an early-days state, loading, and a failure state. - **SH-7, shared patterns.** - D12's three levels: undo, a confirmation that says what will happen, and typing the name. - Today's raw-exception error banner next to its replacement in plain words. - The field-level error, the "not for you" page, the lost-connection marker, and the busy and empty states. - Leaving with unsaved work, which now also asks on a tab or anchor change. - The skip link, and never colour alone. - No toasts. ## Coverage, checked before the PR **105 placements, none missing:** 61 drawn, 8 replaced by a decision, 5 behaviour, 30 belonging to other surfaces, 1 deferred. The first draw had missed three; all three are drawn now. ## Rendering caught five All five are listed on the page. Among them: a designer's note had leaked into a product dialog, and the "early days" analytics state showed eleven sessions as played. Feedback-site tests: 101 passed. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
D45 players read what a campaign is on This week; D46 a New campaign
page that opens on a choice; D47 Storyline as the story and the
timeline; D48 notification settings as a grid; D49 Plan & billing
drawn now with provisional prices ($4/month per campaign slot, AI
credits $1 for 60, 60 credits per hour of transcription and summary).
IS-355 to IS-371, including the calls the owner accepted. 1,640 rows.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
feat(feedback-site): lane 1b — Home, and you (#659, #696)
All checks were successful
CI / Docker image build (pull_request) Successful in 32s
CI / Summarisation accuracy eval harness (stub provider) (pull_request) Successful in 58s
CI / Bot/backend version sync (pull_request) Successful in 1m7s
CI / Backend lint (ruff) (pull_request) Successful in 1m22s
CI / Feedback site tests (pull_request) Successful in 1m49s
CI / Bot tests and audit (pull_request) Successful in 1m54s
CI / Frontend tests, audit, and build (pull_request) Successful in 2m29s
CI / Backend migration, tests, and audit (pull_request) Successful in 8m47s
CI / Synthetic session harness (no GPU, no LLM) (pull_request) Successful in 21m8s
3eb9575e65
Draws HOME-1 to HOME-7, the surfaces no lane owned: Home (Needs you and
your campaigns, for a GM, a player, mid-session, new, loading, failed),
joining in place on Home, D46's New campaign page (blank, template,
one-shot, import), campaigns put away folded at the foot of Home,
Profile in sections, D48's notification grid, and D49's Plan & billing
(provisional prices: $4/month per slot, credits $1 for 60, 60 per hour).

This lane ran the coverage check before the PR: 107 placements, none
missing (95 drawn, 5 replaced, 3 behaviour, 2 elsewhere, 2 deferred);
the first draw had missed nine, drawn now. Rendering caught six faults,
listed on the page. Shared changes: the account menu gains an opt-in
Plan & billing entry (hosted only), and the kit finally styles disabled
buttons, which also puts five buttons in lanes 2-4 into the state their
markup already asked for.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Draws CAMP-4 to CAMP-7 and SH-7, surfaces no lane owned:
- a recurring series, managed from the Sessions list and from any of
  its sessions, with every field for making one;
- highlights, with the speaker filter and its states;
- D47's storyline, the story and the timeline, with milestones as
  entries and the journal gone;
- D14's analytics, the player's own row, and a share link that says
  whose view it shows;
- the shared patterns: D12's three tiers, errors in plain words, the
  blocked page, busy/empty/lost-connection, leaving unsaved work, the
  skip link, and never colour alone. No toasts.

Coverage checked before the PR: 105 placements, none missing (61 drawn,
8 replaced, 5 behaviour, 30 elsewhere, 1 deferred); the first draw had
missed three, drawn now. Rendering caught five, listed on the page.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
docs(feedback-site): lane 2c counts the fifth render catch (#659)
All checks were successful
CI / Bot/backend version sync (pull_request) Successful in 30s
CI / Backend lint (ruff) (pull_request) Successful in 1m11s
CI / Feedback site tests (pull_request) Successful in 1m31s
CI / Summarisation accuracy eval harness (stub provider) (pull_request) Successful in 2m7s
CI / Bot tests and audit (pull_request) Successful in 3m18s
CI / Frontend tests, audit, and build (pull_request) Successful in 3m23s
CI / Docker image build (pull_request) Successful in 5m42s
CI / Backend migration, tests, and audit (pull_request) Successful in 10m24s
CI / Synthetic session harness (no GPU, no LLM) (pull_request) Successful in 20m41s
3ca304c50c
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Author
Collaborator

Merged to main as 839d0cf on green CI (run 9972) and deployed to the review site at /feedback/prototype/lane2c. Feedback data was backed up first; the container is healthy and all 6 responses are intact.

Merged to main as 839d0cf on green CI (run 9972) and deployed to the review site at `/feedback/prototype/lane2c`. Feedback data was backed up first; the container is healthy and all 6 responses are intact.
claude-bot closed this pull request 2026-09-18 20:45:39 +00:00
All checks were successful
CI / Bot/backend version sync (pull_request) Successful in 30s
Required
Details
CI / Backend lint (ruff) (pull_request) Successful in 1m11s
Required
Details
CI / Feedback site tests (pull_request) Successful in 1m31s
Required
Details
CI / Summarisation accuracy eval harness (stub provider) (pull_request) Successful in 2m7s
Required
Details
CI / Bot tests and audit (pull_request) Successful in 3m18s
Required
Details
CI / Frontend tests, audit, and build (pull_request) Successful in 3m23s
Required
Details
CI / Docker image build (pull_request) Successful in 5m42s
Required
Details
CI / Backend migration, tests, and audit (pull_request) Successful in 10m24s
Required
Details
CI / Synthetic session harness (no GPU, no LLM) (pull_request) Successful in 20m41s
Required
Details

Pull request closed

Sign in to join this conversation.
No description provided.