Repository navigation
v0.2.0 - Streaming chat, per-backend usage reporting, release tooling
What's new in 0.2.0
Added
Streaming chat
- Streaming chat over SSE:
POST /api/chat/streambacked by astream_turn
event generator, with the dashboard consuming the stream for incremental
tool activity (#685, #686, #689, #695, #707).
Per-backend usage reporting
- Per-backend usage reporting:
collect_backend_statussurfaces
resource_statusper configured role, served by the dashboard usage
endpoint and rendered as one row per backend in the usage banner
(#688, #693, #694).
Plan-completion notifications
- Plan-completion notifications: plan completion is detected exactly once and
emitted as aplan_completednotification, spooled to a per-plan outbox and
delivered over SMTP with credential handling and redaction; the scheduler
tick drains the outbox (#710, #713, #714, #715, #716, #717, #718).
Canonical agent.log grammar
- Canonical agent.log line grammar: a single
agent_log_formatmodule defines
the grammar,local_agentdelegates to it, and a Claude stream-json
translator feeds ClaudeCliDriver dispatch while raw NDJSON is kept in a
sidecar (#687, #690, #691, #692, #699).
Process
- Started an ADR practice:
docs/adr/with an index, a template and the first
four decision records (#682). - Introduced this CHANGELOG (#681).
Fixed
Plan-lock starvation
- Merge adjudication moved to the start of the tick (#704), and the plan lock
is now released arounddispatch_storyandreview_story, guarded by a
dispatch lease so a released lock cannot double-dispatch (#697, #698, #709,
#712); per-plan per-tick dispatch is capped (#708). - The
.agent_donemarker is claimed before its event is published and is
written as soon asfinish_if_greendecides the run is finished (#703,
#705). reconcile_fngained the same bounded join watchdogscan_fnalready has
(#700).- The daemon exits for a launchd restart after repeated abandoned watchdog
workers, since a leaked plan lock is only released by process death (#706).
Watchdog
- The stale-activity watchdog floors the activity age at the current
dispatch's elapsed time, so a redispatch into a reused worktree is not
killed at elapsed 0s (#711), and records the last agent.log line and the
branch commit count when it kills a dispatch (#702).
Done-bar
- The done-bar no longer narrows to a story's own new test file (cf48767),
guarded bytests/unit/test_done_bar_not_narrowed.py.