Continuing the run of PR review work, I made the review synthesis viewable straight from the web UI. A ViewReviewButton on the card opens a ReviewSynthesisDialog that pulls the synthesis for the current branch — findSynthesisForBranch locates it, getReviewSynthesis serves it, and a useReviewSynthesis hook feeds the dialog. So once a review session has run I can read its summary in place rather than digging for the file.

I also consolidated the transcript commands. The old transcript-format and transcript-summarise slash commands collapsed into a single transcripts workflow that formats and summarises end to end, with the internal processVttFile reshuffled into clearer convert/parseVtt pieces and the allow lists and README updated to match. Small follow-up: transcript move output paths are now labelled so it’s obvious where files landed. On the backlog side, new bugs automatically get a Fix phase added when created, which saves a manual step every time I file one.

The rest was session state correctness, which keeps being the gift that gives. Idle sessions now restore as waiting rather than running, which touched a fair bit of the restore path — restoreSession, restoreInteractiveSession, runningSession, and the backlog resumeNudge. Session titles now survive a restore instead of being lost, draft-to-run reuse resets stale state before starting, and review session chips and status resolve correctly through postAndMaybeSubmit. Capped off with a tiny CSS fix so markdown lists actually indent in the web UI.