@@ -5,14 +5,60 @@ All notable changes to this project will be documented in this file.
55The format is based on [ Keep a Changelog] ( https://keepachangelog.com/en/1.0.0/ ) ,
66and this project adheres to [ Semantic Versioning] ( https://semver.org/spec/v2.0.0.html ) .
77
8- ## [ 3.5.4] - 2026-05-10
8+ ## [ 3.5.5] - 2026-05-11
9+
10+ ### Added — three-agent autoloop architecture
11+
12+ The previous autoloop (single-threaded phase machine that respawned a fresh
13+ Claude session per phase) is replaced with three persistent agents:
14+
15+ - ** Planner** (Opus, your chat interface) — long-lived; owns strategy,
16+ writes ` plan.md ` / ` goal.json ` , decides when to push you out-of-band.
17+ - ** Coder** (Sonnet) — receives directive, applies change, runs the
18+ evaluator, emits structured ` iter_complete ` .
19+ - ** Reviewer** (Sonnet, sandboxed cwd) — distrustful audit; advance /
20+ hold / rollback per iter.
21+
22+ Plugin tools: ` autoloop_start ` , ` autoloop_chat ` , ` autoloop_status ` ,
23+ ` autoloop_list ` , ` autoloop_stop ` , ` autoloop_reset_agent ` . The Planner
24+ controls the run via fenced ` ```autoloop ` JSON blocks (` notify_user ` ,
25+ ` spawn_subagents ` , ` send_directive ` , ` pause_loop ` , ` resume_loop ` ,
26+ ` terminate ` , ` update_push_policy ` , ` write_plan_committed ` ,
27+ ` write_goal_committed ` ).
28+
29+ Push policy: silent on iter-done-ok; pushes on ` target_hit ` , 2-iter
30+ regression, 2-iter reviewer reject, phase error, 30-min stall, or
31+ decision-needed. 5-min dedup on (level, summary). Channels are configured
32+ via env vars (` AUTOLOOP_WECHAT_RECIPIENT ` , ` AUTOLOOP_WECHAT_ACCOUNT ` ,
33+ ` AUTOLOOP_WHATSAPP_RECIPIENT ` ); an unset channel is silently skipped and
34+ the fallback chain moves to the next tier (email via push-api-skill is
35+ the final tier).
36+
37+ Auto-compact: per-agent thresholds (Planner 80%, Coder/Reviewer 70%) on
38+ ` getStats().contextPercent ` ; ` /compact ` dispatched with a role-specific
39+ preservation hint; 30 s cooldown; surfaces as a ` compact ` SSE event.
40+
41+ ### Added — embedded dashboard
42+
43+ Single-page vanilla dashboard at ` GET /dashboard ` . Two tabs:
44+
45+ - ** Autoloop** : list of runs in left rail; click into one for a 3-pane
46+ view (Planner ⇄ user + chat composer / Coder activity / Reviewer
47+ verdicts). Top bar shows iter/status/push count; bottom strip shows
48+ recent pushes.
49+ - ** Council** : list of council sessions + live agent-response stream
50+ with round-by-round verdicts and consensus marker.
51+
52+ Backend HTTP/SSE: ` GET /autoloop/list ` , ` /autoloop/<id>/state ` ,
53+ ` /autoloop/<id>/push_log ` , ` /autoloop/<id>/events ` , and the same shape
54+ for ` /council/{list,<id>/state,<id>/events} ` .
955
1056### Changed
1157
12- - Notify channel recipient identifiers are now read from env vars
13- ( ` AUTOLOOP_WECHAT_RECIPIENT ` , ` AUTOLOOP_WECHAT_ACCOUNT ` ,
14- ` AUTOLOOP_WHATSAPP_RECIPIENT ` ); an unset channel is silently skipped
15- and the fallback chain moves to the next tier .
58+ - Build now ` rm -rf dist ` before ` tsc ` so renamed/relocated sources can't
59+ leave stale artefacts behind.
60+ - ` tasks/ ` is in ` .gitignore ` — internal design / WIP notes live locally
61+ only .
1662
1763## [ 3.5.3] - 2026-05-10
1864
0 commit comments