v0.4.0
What's New
Configurable Commit Cluster Trigger
Historian can now fire based on commit clusters — distinct work phases where the agent made git commits, separated by meaningful user turns. This captures natural work-unit boundaries even when context pressure is low.
Default changed from 2 to 3 minimum clusters. Can be disabled entirely to rely only on pressure-based triggers.
Dream Run History
Dreamer now persists structured run history. The dashboard Dreamer page shows per-project run cards with:
- Task breakdown (name, duration, output size, success/failure)
- Smart note evaluation results
- Memory change diffs (written, deleted, archived, merged)
- Expandable detail view with relative timestamps
Bug Fixes
- Heuristics blocked with
ctx_reduce_enabled: false: Whenctx_reducewas disabled, pending ops were always 0, so heuristic cleanup (tool drops, reasoning clearing) never ran on execute passes. Fixed by removing the pending-ops requirement from the heuristic gate — the scheduler already gates execute decisions properly. - Tagger UNIQUE constraint crash: Recovered gracefully from
SQLITE_CONSTRAINT_UNIQUEviolations during tag insertion, which could occur when two plugin instances shared the same DB or after partial batch failures lost in-memory state. - Dashboard "First message" mislabeling: Cache diagnostics no longer labels the oldest event in the 200-event window as "First message (new session)" — it now checks whether earlier assistant messages exist in the DB.
Dashboard Improvements
- Commit cluster trigger toggle + min clusters input in the Historian config section
- Corrected heuristic log message from
pending_ops_executetoscheduler_execute
{ "commit_cluster_trigger": { "enabled": true, "min_clusters": 3 } }