v0.8.0
What's new in 0.8.0
Real-time dashboard feed. Previously the web dashboard only showed historical findings and prospective cost estimates — a /advisor run in
progress was invisible from the browser. Now there's a Live tab that polls a new ephemeral event stream the team-lead Claude session emits
at three checkpoints. Strictly additive — no existing endpoint, tab, or schema changed.
Added
- advisor live record / tail / clear — new CLI subcommands that append/inspect/remove events in /.advisor/live/events.jsonl. The
/advisor skill invokes record via Bash at each pipeline checkpoint; tail is for ad-hoc terminal inspection. JSON output via --json. - advisor.live module exposes append_event, load_recent_events, latest_seq. JSONL file format, one {schema_version, ts, seq, kind, data}
record per line, cursor-based polling (?since=) so the dashboard advances without losing events under burst load. - GET /api/events endpoint returning {schema_version, target, count, events, next_token}. Idle polls still advance next_token so the client
cursor never resets to zero when activity resumes after a quiet gap. - Live tab in the optional web dashboard (advisor ui). Live-pill with idle/active/paused/error states. Per-event row renders core kinds
(run_start, runner_spawn, report_relay, fix_dispatch, run_end) with a short summary; unknown kinds fall through to a raw JSON payload.
FIFO-trimmed at 500 rows. New rows flash, respecting prefers-reduced-motion. - SKILL.md now documents the three live-event checkpoints with the exact advisor live record ... || true invocations. Always best-effort: a
failed write must NOT halt the pipeline. Users who haven't started advisor ui see no behavior change. - 36 new tests in tests/test_live.py.
Why a minor bump
history.jsonl and live/events.jsonl are deliberately separate stores with different semantics — history is the authoritative
CONFIRMED-findings log feeding the ranker, SARIF, and analytics; live events are advisory and never consulted by the orchestrator. Separate
files prevents either side from accidentally landing in the wrong place.