Shelf: warm cold-open (carry-forward) #248
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Next session's shelf boots pre-loaded with carried-forward cards + unresolved loops + a previously-on recap, so session N+1 starts warm instead of cold. Depends on the end-of-session sweep. (#235)
Done — merged in PR #266 (
fe3fb92), CI green.GET /api/sessions/{id}/shelf/cold-openreturns the three things that make session N+1 start warm, and the shelf shows them as a strip above the board. The carried-cards leg already worked via the #254 pins; this adds the recap and the open loops and surfaces all three together.Everything is derived on read — no new table, no migration. The recap, the loop list, and the carried count are all computed per request, so the panel can't drift out of date if you resolve a thread or edit a summary between sessions, and the endpoint mutates nothing.
Two judgement calls worth recording:
ColdOpenPanelis its own component rather than more weight inSessionShelf.jsx, which already carries the board, the stage, the palette, the sweep, and the reveal composer. Dismissal is per session in localStorage — once play starts you want the board, not the preamble, and reloading mid-session shouldn't bring it back, while the next session gets its own key. The fetch is best-effort and silent on failure (an error banner above a working shelf would be worse than no preamble), and the panel renders nothing at all when there's nothing to say, so a first session looks exactly as it did.Tested: backend 798 passed (8 new — empty first session, most-recent-summarised selection, the skip-cancelled-and-unsummarised walk-back, ignoring later sessions, truncation + flag, loop filtering, the carried count excluding tonight's own pins, GM-only boundary); frontend 427 passed (6 new). ruff + eslint clean.
🤖 Generated with Claude Code