@@ -7,6 +7,33 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77
88## [ Unreleased]
99
10+ ## [ 0.22.0] - 2026-06-13
11+
12+ ### Added
13+ - ** ` complete ` finalizes a task.** ` task-journal complete <id> ` now brings a
14+ legacy task to the shape a live-journaled one would have had: it enriches the
15+ task's memory from the sessions it touched (task-scoped — no dream watermark,
16+ so tasks finalize independently), asks the model to judge a human-readable
17+ title, a one-sentence outcome, and whether the events clearly show the task is
18+ done, then writes a ` Rename ` event when the auto-title is junk and a ` Close `
19+ event ** only when done** — the model decides from content; unclear tasks stay
20+ open. Artifacts are picked up automatically as enriched events are indexed.
21+ - ** Batch finalize.** ` task-journal complete ` with no id finalizes every open
22+ task: it prints a numbered list (id · event/session counts · title), lets you
23+ exclude tasks by number, shows the count and asks to confirm, then finalizes
24+ the rest; tasks judged not-done are left open and listed at the end. ` --quick `
25+ skips the heavy enrich pass, ` --dry-run ` reports scope without calling the
26+ model, and ` --yes ` is required to run the batch without an interactive
27+ terminal (so a hook can't mass-close tasks unattended).
28+ - ** ` Rename ` event type** — updates a task's title on replay (latest wins),
29+ letting ` complete ` fix junk auto-titles without mutating the append-only log.
30+
31+ ### Fixed
32+ - ** Close outcome survives a rebuild.** ` Close ` events now carry their
33+ ` outcome ` /` outcome_tag ` in metadata and ` rebuild_state ` restores them, so a
34+ recorded outcome is no longer lost the next time the SQLite state is rebuilt
35+ from the JSONL log.
36+
1037## [ 0.21.0] - 2026-06-13
1138
1239### Added
0 commit comments