Yesterday’s daemon work made sessions durable; today was about driving them from the web UI instead of dropping back to the terminal. The headline is a Play button on backlog items: from an item card or its detail panel I can now kick off assist backlog run for that item and have the session appear in the dashboard, wired up through a new useSessionLaunchContext. The button only shows where it makes sense — canPlay gates it to todo items, including todo bugs, which I’d missed in the first pass. Alongside it, a Refine button on the item detail launches /refine for that item directly, so the two things I most often want to do with a backlog item are one click away.

I also widened how sessions get launched. The draft and bug commands now take an optional description — assist draft "add a foo" forwards as /draft add a foo — and the web UI’s mode buttons grew a free-prompt dropdown so you can type that prompt text in the browser before spawning. There’s a new “open in VS Code” action in the toolbar that opens the selected repo in an editor without leaving the dashboard. And on the CLI side, a purely numeric assist run <n> that matches no configured command now falls through to assist backlog run <n>, forwarding the --write flags — so assist run 42 just runs backlog item 42.

With more ways to start sessions, I cleaned up how they end and how the list behaves. --once sessions now auto-dismiss when their done signal arrives, via a small shouldAutoDismiss rule wired into the status-change path, so single-task sessions clear themselves out. The close button is always shown on a session card now rather than appearing conditionally, and the card’s elapsed timer freezes once the session is done instead of ticking forever. I also dropped the old sidebar run-command list — a chunk of UI (RunButtons, ModeSelector, NewSessionForm and friends) that the new launch flows made redundant.

The backlog list itself got faster and more correct. Completed-item filtering moved server-side into loadVisibleItems so the browser isn’t pulling down done items just to hide them, and the web list now sorts newest-first. A clutch of fixes rounded it out: cancelling a stale backlog fetch when you switch projects so the previous repo’s items don’t flash in, refreshing session history on tab switch, and resuming a run correctly when its review phase had been rewound. Smaller still, the complexity report now prints the maintainability-index formula alongside the score so the number isn’t a black box.