feat(feedback-site): lane 4 backfill — Table mode's everyday parts (#659, #696) #701

Closed
claude-bot wants to merge 0 commits from feat/lane4-backfill into main
Collaborator

This is the second half of step 2 in #696's plan. The first draw of Table mode drew the decided parts well but left out 76 of its 200 placements and only half-drew 18. This draws them all.

Settled before drawing (the owner took the recommendation each time)

  • D53: one search, with the result previewed beside the table. Find (or Ctrl-K) covers tonight's cards, the wiki and the rules. A result opens in the side panel as an article or a stat block, with Spotlight, Show the table and Add to the shelf. Recorded as IS-380.
  • D54: both kinds of note. Each card keeps its own notes, on the card and on the stage. There is also a quick note, stamped with the recording time, which lands in the GM's private ("just me") notes for the session. Recorded as IS-381.
  • D55: the session switcher goes and Copy from stays. Copy from lives in the shelf's menu and in the empty-shelf state.

Drawn

  • Cards:
    • Each card's own controls, always visible on a row of their own.
    • A card menu for its scene, a new scene, and taking it off the shelf, with undo.
    • A badge for where the card came from, and the NPC glance face.
    • The layout of each generator's output: rumours, tables, loot, voice cues, a prep sheet, read-aloud text, flavour text and untitled cards.
    • Show more, with the card's own notes.
    • Moving, resizing, and a card just added.
  • Find and the preview (D53):
    • The palette with nothing typed, with results, and with no matches.
    • The adder's stat block (the real one, via wiki.js) in the side panel.
    • A rules result added to the shelf as a card.
  • Around the shelf:
    • The quick note (D54).
    • The recap strip's open quests and cards carried over.
    • The stage's previous, next, clear and notes controls.
    • The "Shown to the table" strip's states.
    • The reveal dialog with three places to show a card, its busy state, and the one error it can fix inside the dialog.
    • The shelf's loading, error, empty and empty-scene states.
    • A card position that failed to save.
    • The shelf menu.
  • The canvas: cards off both edges, a card dragged past the edge, and "See the whole board".
  • Phone: previous and next buttons on the phone stage, and a sheet of keyboard shortcuts with their phone equivalents.
  • Players' view: the recap strip that folds away, loading, "never loaded", and an error.
  • Recording:
    • Choosing where to record from (IS-015).
    • The unknown and connection-lost states, and "nobody heard yet".
    • A start that failed, and out of credits.
    • Start stays disabled while the bot is recording another session. The first draw left it clickable.
  • The sweep: an error on a single row, a page-level error, and the empty state.

Coverage

  • coverage/lane4.py: 203 placements, none unclassified (144 drawn, 12 replaced, 15 behaviour, 23 elsewhere, 9 deferred).
  • coverage/lane3.py now classifies IS-381, which lands on SESS-7. It flagged the new row immediately, which is what the script is for.
  • Catalogue: 1,650 rows on 103 surfaces.

Rendering caught nine faults

  1. Start recording could still be clicked while another session was recording.
  2. The Table bar wrapped every button onto two lines.
  3. Card controls squeezed titles onto three lines, and the tall NPC card overlapped the card below.
  4. Full Table frames in half-width stills pushed the shelf's states out of view.
  5. The middle-scroll still counted two cards off to the right while both were on screen.
  6. A disconnected recording panel claimed the recording was still running.
  7. An NPC card from the wiki had the glance face, which only generated NPCs get.
  8. The shelf menu repeated a button that sits right beside it.
  9. A sweep row said a card had no text when its text was on screen.

Tests pass (101), all eight lanes render, and the changed sections were checked in both themes.

🤖 Generated with Claude Code

This is the second half of step 2 in #696's plan. The first draw of Table mode drew the decided parts well but left out 76 of its 200 placements and only half-drew 18. This draws them all. ## Settled before drawing (the owner took the recommendation each time) - **D53: one search, with the result previewed beside the table.** Find (or Ctrl-K) covers tonight's cards, the wiki and the rules. A result opens in the side panel as an article or a stat block, with Spotlight, Show the table and Add to the shelf. Recorded as `IS-380`. - **D54: both kinds of note.** Each card keeps its own notes, on the card and on the stage. There is also a quick note, stamped with the recording time, which lands in the GM's private ("just me") notes for the session. Recorded as `IS-381`. - **D55: the session switcher goes and Copy from stays.** Copy from lives in the shelf's menu and in the empty-shelf state. ## Drawn - **Cards:** - Each card's own controls, always visible on a row of their own. - A card menu for its scene, a new scene, and taking it off the shelf, with undo. - A badge for where the card came from, and the NPC glance face. - The layout of each generator's output: rumours, tables, loot, voice cues, a prep sheet, read-aloud text, flavour text and untitled cards. - Show more, with the card's own notes. - Moving, resizing, and a card just added. - **Find and the preview (D53):** - The palette with nothing typed, with results, and with no matches. - The adder's stat block (the real one, via `wiki.js`) in the side panel. - A rules result added to the shelf as a card. - **Around the shelf:** - The quick note (D54). - The recap strip's open quests and cards carried over. - The stage's previous, next, clear and notes controls. - The "Shown to the table" strip's states. - The reveal dialog with three places to show a card, its busy state, and the one error it can fix inside the dialog. - The shelf's loading, error, empty and empty-scene states. - A card position that failed to save. - The shelf menu. - **The canvas:** cards off both edges, a card dragged past the edge, and "See the whole board". - **Phone:** previous and next buttons on the phone stage, and a sheet of keyboard shortcuts with their phone equivalents. - **Players' view:** the recap strip that folds away, loading, "never loaded", and an error. - **Recording:** - Choosing where to record from (`IS-015`). - The unknown and connection-lost states, and "nobody heard yet". - A start that failed, and out of credits. - Start stays disabled while the bot is recording another session. The first draw left it clickable. - **The sweep:** an error on a single row, a page-level error, and the empty state. ## Coverage - `coverage/lane4.py`: 203 placements, none unclassified (144 drawn, 12 replaced, 15 behaviour, 23 elsewhere, 9 deferred). - `coverage/lane3.py` now classifies `IS-381`, which lands on SESS-7. It flagged the new row immediately, which is what the script is for. - Catalogue: 1,650 rows on 103 surfaces. ## Rendering caught nine faults 1. Start recording could still be clicked while another session was recording. 2. The Table bar wrapped every button onto two lines. 3. Card controls squeezed titles onto three lines, and the tall NPC card overlapped the card below. 4. Full Table frames in half-width stills pushed the shelf's states out of view. 5. The middle-scroll still counted two cards off to the right while both were on screen. 6. A disconnected recording panel claimed the recording was still running. 7. An NPC card from the wiki had the glance face, which only generated NPCs get. 8. The shelf menu repeated a button that sits right beside it. 9. A sweep row said a card had no text when its text was on screen. Tests pass (101), all eight lanes render, and the changed sections were checked in both themes. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(feedback-site): lane 4 backfill — Table mode's everyday parts (#659, #696)
All checks were successful
CI / Bot/backend version sync (pull_request) Successful in 25s
CI / Backend lint (ruff) (pull_request) Successful in 1m10s
CI / Feedback site tests (pull_request) Successful in 1m31s
CI / Summarisation accuracy eval harness (stub provider) (pull_request) Successful in 1m47s
CI / Bot tests and audit (pull_request) Successful in 2m56s
CI / Frontend tests, audit, and build (pull_request) Successful in 3m26s
CI / Docker image build (pull_request) Successful in 4m38s
CI / Backend migration, tests, and audit (pull_request) Successful in 13m17s
CI / Synthetic session harness (no GPU, no LLM) (pull_request) Successful in 13m17s
64e4ece6d7
The first draw of Table mode drew the decided parts and left 76 of 200
placements out. This draws them:

- The shelf: every card's own controls (spotlight, show the table, Pin,
  a menu), always visible on a row of their own because a tablet has no
  hover. The menu covers the card's scene, a new scene, and taking it off
  (immediate, with undo). Also where a card came from, the NPC glance face,
  the shape each generator's output keeps (rumours, tables, loot, voice
  cues, a prep sheet, read-aloud, flavour, untitled), show more with
  per-card notes, moving and resizing, and a card just added.
- Find and the preview beside the table (D53): one search over tonight's
  cards, the wiki and the rules; a result opens in the side panel with a
  real stat block, and a rules hit can go on the shelf.
- The quick note, stamped with the recording time (D54). The cold open's
  quests and carried cards; the stage's prev/next/clear and notes. The
  shown strip's taking-down, orphan and error states. The reveal modal
  with three targets, showing, and the one error that stays in the modal.
- The shelf's loading, error, empty and empty-scene states, a position
  that did not save, and its menu with Copy from (D55: the switcher goes).
- The canvas: cards off both edges, dragging past the edge, and See the
  whole board. The phone's ‹ ›, and a keys sheet with phone equivalents.
- Players' view: the cold open that folds, loading, never loaded, and its
  error state.
- Recording: where to record from (IS-015), unknown and connection-lost
  states, nobody heard yet, a start that failed, out of credits, and
  Start off while the bot records another session (the first draw left
  it clickable).
- The sweep: a row's own error, a page-level error, and the empty state.

Decisions: D53 (one search, preview beside), D54 (both kinds of note),
D55 (switcher goes, Copy from stays). coverage/lane4.py reports 203
placements, none unclassified. lane3.py now classifies D54's IS-381,
which lands on SESS-7; it caught the new row at once, as designed.
Catalogue: 1,650 rows on 103 surfaces.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Author
Collaborator

CI passed on run 10000. Merged to main as d044793.

Deployed to the review site. Checks:

  • Before deploying, the feedback volume was backed up to /home/claude/backups/qb-feedback-data-20260919-014109.tgz.
  • The container reports healthy.
  • All seven lane pages return 200, and so does shared/wiki.js.
  • The site now serves the new lane 4 page.
  • All 6 stored responses are intact.
CI passed on run 10000. Merged to main as d044793. Deployed to the review site. Checks: - Before deploying, the feedback volume was backed up to `/home/claude/backups/qb-feedback-data-20260919-014109.tgz`. - The container reports healthy. - All seven lane pages return 200, and so does `shared/wiki.js`. - The site now serves the new lane 4 page. - All 6 stored responses are intact.
claude-bot closed this pull request 2026-09-19 01:42:13 +00:00
All checks were successful
CI / Bot/backend version sync (pull_request) Successful in 25s
Required
Details
CI / Backend lint (ruff) (pull_request) Successful in 1m10s
Required
Details
CI / Feedback site tests (pull_request) Successful in 1m31s
Required
Details
CI / Summarisation accuracy eval harness (stub provider) (pull_request) Successful in 1m47s
Required
Details
CI / Bot tests and audit (pull_request) Successful in 2m56s
Required
Details
CI / Frontend tests, audit, and build (pull_request) Successful in 3m26s
Required
Details
CI / Docker image build (pull_request) Successful in 4m38s
Required
Details
CI / Backend migration, tests, and audit (pull_request) Successful in 13m17s
Required
Details
CI / Synthetic session harness (no GPU, no LLM) (pull_request) Successful in 13m17s
Required
Details

Pull request closed

Sign in to join this conversation.
No description provided.