The session page, while it is finding its time: the frame, voting and pencilled in (SESS-1, lane 4) #812
Loading…
Reference in a new issue
No description provided.
Delete branch "build/lane4-page-sess1"
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?
Lane 4's first page PR (#730). This is the new session page's frame plus SESS-1. Every other status still renders the old
SessionDetail, which is the rollout rule; the next page PRs replace the rest.The frame
pages/session/SessionPage.jsxdispatches on status. A vote and pencilled in are new. Anything else goes to the legacy page, unchanged.Session Nlabel, the title, and a chip that is always a word (Finding a time, Pencilled in). Then the description and the lead sentence.Campaign › Sessions › Session 14(D86). The Contents lists the session's own sections under Sessions and follows the scroll. The tab title follows.A vote
reopen-for-voting(#809).Pencilled in (D50)
Notes (SESS-7)
components/session/NotesPaneluses #811's API.AudiencePicker: "Just you and the GM" or "Everyone at the table" for a player, "GMs only" or the table for a GM.Shared pieces
components/session/, and This week uses them.campaign_timezoneandmy_roleare added toGET /api/sessions/{id}, additively.Departures (recorded on #730)
Checks, on the tree merged with main (#811)
🤖 Generated with Claude Code
GET /api/sessions/{id} now carries two facts that are not the session's: campaign_timezone, which D17's reconciling line is drawn from, and my_role, which decides whether the reader gets the GM's drawing or a player's. Both are additive and set only on the page's own read, so every other response that shares SessionResponse keeps them null. The role query replaces the GM-only existence check it was derived from, so the transcript strip is decided by the same answer. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>useDeclareCampaign's session may now carry the page's sections, [{id, label}], because a session's headings differ by its state and only the page knows which list it is drawing. The Contents hangs them under Sessions below the "Session 14" sub-head, and the frame observes them with useSectionInView as it does Profile's. The crumb reads "<Campaign> > Sessions > Session 14", Sessions a link to the list, on every session address; that step is marked inTitle:false so the tab stays "Session 14 · The Amberwake Accord · Quest Board". The vote email's old #vote lands on "Times to vote on" through SECTION_ALIASES. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>NotesPanel reads GET /api/sessions/{id}/notes and saves with PUT .../notes/{audience} and the version it loaded, as the parallel notes PR specifies. A player writes for "Just you and the GM" or the table, a GM for "GMs only" or the table (lane 0's AudiencePicker), and a line under the switch says in words who reads it. The table note says who changed it last and when. A 409 keeps what was typed and offers the winning version ("Show me his", from the person's own pronouns). A GM also reads each player's own note, read-only, in a "Players' own notes" fold. The API client also gains the reschedule preview (#804). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>