Skip to content

v0.2.0 - Streaming chat, per-backend usage reporting, release tooling

Choose a tag to compare

@motock motock released this 12 Sep 18:06
· 658 commits to master since this release

What's new in 0.2.0

Added

Streaming chat

  • Streaming chat over SSE: POST /api/chat/stream backed by a stream_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_status surfaces
    resource_status per 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 a plan_completed notification, 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_format module defines
    the grammar, local_agent delegates 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 around dispatch_story and review_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_done marker is claimed before its event is published and is
    written as soon as finish_if_green decides the run is finished (#703,
    #705).
  • reconcile_fn gained the same bounded join watchdog scan_fn already 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 by tests/unit/test_done_bar_not_narrowed.py.