The most impactful change was making session status hook-driven. Instead of inferring whether a session is working, waiting, or done from the terminal output, the daemon now takes its cues from Claude Code’s own hooks — a far more reliable signal touching 41 files across the daemon and UI. On top of that foundation, a session flips to “waiting” when you hit ESC, the running chip only animates while it’s actually running, and restored session cards keep their metadata instead of coming back blank. A local daemon also labels itself by platform now, which matters once Windows and WSL daemons sit side by side.

The other theme was letting assist update itself from the dashboard. There’s a new “Update assist” item in the web menu, and after an update the daemon restarts itself so you’re immediately running the new version. A couple of fixes made that path safe: assist commit’s pull now autostashes so a dirty tree doesn’t block it, the startup pull is skipped entirely on a dirty worktree, and daemon phases stay resumable across the restart so an in-flight run isn’t lost.

On the workflow side, a backlog run can now pause at the review phase rather than always pushing straight through, the review UI labels its toggle “Dismiss” so the action is clear, and a new assist prs reply command lets me respond to PR review threads from the CLI. I also added a /strip-comments command that enforces a self-documenting code style — declaring the comment policy in CLAUDE.md and stripping comments that just restate the code. Rounding out the day: the terminal now honours Cmd+C/Cmd+V on macOS, and I continued the oxc migration by moving the project scaffolding over from Biome.