feat(webapp): one screen for a live session (#386, phase 8 of v4.3.0) #532
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/386-one-live-session-screen"
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?
Closes #386. Phase 8, the last item of the v4.3.0 build order (#514). Frontend only, five commits, no migration, no contract change.
SessionDetailis the one live-session screen. The Recording Dashboard's live half moves into a newcomponents/RecordingPanel.jsx(GM-only,id="recording"): the SSE stream with polling fallback and reconnect, the #377 connection state machine (last known state kept, "Connection lost, retrying…" with staleness, "Unknown" when never answered), the elapsed clock, per-speaker capture, "Present, not captured yet", the #327 capture tripwire, and Start/Stop with "End session when stopping recording". The editable summary stays where it was; nothing read-only duplicates it.AudioStatusSectionis now "Transcript & Summary"./sessions/:id/recordingredirects to/sessions/:id#recording(kept with the other legacy routes for bookmarks and older embeds);RecordingDashboard.jsxand its tests are deleted with their behaviour and tests moved. The "Recording →" link is gone;SessionShelfgains a Recording link to the anchor.proposed: no backend change.POST /sessions/{id}/record/startgates onget_session_for_gmonly; there was never a status rule, so the confirmed-only entry link hid a working capability. The panel renders fromproposedonwards; where a start genuinely cannot happen (no Discord server on the campaign, the backend's own 400) the button is disabled with the reason on the page. The attendance toggle reads "Present" / "Absent" in its one place; the roster is available fromin_progress, not onlycompleted.Forced by the move: the live status is per Discord guild, not per session, so on every session page it would light up an old session as recording; the payload's
session_idis now honoured, another session's recording is reported as such, and Start is refused. Also removed the frontend'sapproveAudiowrapper (its only caller was the deleted page; it targeted the backend's documented deprecated shim, which is untouched).Frontend 799 passed (64 files: −7 dashboard tests, +17 panel tests, +1 redirect, +1 shelf link), eslint clean apart from the pre-existing warning,
vite buildgreen.🤖 Generated with Claude Code