Releases
v4.0.0
Compare
Sorry, something went wrong.
No results found
4.0.0 (2026-10-20)
⚠ BREAKING CHANGES
--after/--before are now exclusive, by_role.user counts human prompts only, partial means budget truncation (see MIGRATION.md)
Features
api: export programmatic read(), loadSessionByPath, and registerSource (closes #5 ) (c0709d2 )
claude: expose per-turn completion events outside messages (802d0ea )
compaction: normalize compaction boundaries into system messages and stats.compactions (closes #9 ) (05737f9 )
parser: add agy (Antigravity CLI) source adapter (closes #4 ) (f55a258 )
tokens: track per-turn usage, context window size, effort, and rate limits (closes #8 ) (1e2a691 )
turns: extract per-turn execution facts, files changed, commands and errors (closes #13 ) (8a8d62a )
turns: implement turn segmentation with stable IDs and --turn filtering (closes #12 ) (30d366c )
Bug Fixes
agy: determine emptiness from conversation evidence (fe7b754 )
agy: include antigravity in the list source catalog (eea4b39 )
agy: link background task completions to their calls (6d2ab2f )
agy: prefer transcript_full.jsonl over the truncated transcript (e74b7f9 )
agy: prefer user requests over system preambles in summaries (60d846a )
agy: quote resume hints and mirror runner arguments (d6c3994 )
agy: recognize agent-started mission prompts (6db34b5 )
agy: skip malformed record shapes and field types (c5c329e )
api: always close format-sniff file descriptors (4add128 )
api: detect sessions from canonical roots and record shapes (ef6a137 )
api: distinguish role-filtered views in etags (a415277 )
api: give read() the same slicing inputs as the CLI (4ffd08a )
api: make read() honest about budgets, pages, empty sessions and exhausted cursors (4d9c4a6 )
api: preserve aliases after mixed-case source replacement (99481d0 )
api: preserve original indexes when filtering roles (bca9a09 )
api: refuse to load goose/opencode sessions from outside their own store (cabeca8 )
api: reject nonpositive and nonfinite token budgets (35d42c9 )
api: support typed custom adapter sources safely (f976385 )
api: surface invalid discovery source errors (905efdc )
claude: anchor interrupt markers and honor human provenance (11dea58 )
claude: classify non-prompt user records and exclude from stats.byRole.user (fixes #16 ) (1470bc3 )
claude: classify observed cross-session peer preambles (8f57e3d )
claude: classify queued task-notification attachments as notifications (6aa7b67 ), closes #21
claude: distinguish notification attachments from absorbed prompts (cf31424 )
claude: honor hidden metadata on absorbed attachments (e0ad189 )
claude: ingest mid-turn absorbed commands and expose turn duration (fixes #14 ) (5449bfe )
claude: keep usage from responses with no renderable content in session stats (e55e1e6 )
claude: normalize notifications with the system role (39ba265 )
claude: normalize unknown queued prompt content to text (4356278 )
claude: prefer physical raw indices for absorbed attachments (cff42b1 )
claude: preserve absorbed prompt origin kind (bb72ede )
claude: preserve physical line index across streaming de-duplication (fixes #15 ) (e904c1e )
claude: recognize exact unnamed tool-use interrupts (6304b1e )
claude: report the physical line index on compaction messages (e80c6b4 )
claude: restrict durations to valid turn completion records (498dc0a )
claude: skip turn_duration records with malformed timestamps (ae6a2e3 )
claude: treat peer-message wrappers as non-human (79253da )
codex: decode JavaScript string literals without evaluation (1c7fa0b )
codex: detect failures inside text-block exec results (311c169 )
codex: distinguish exec invocations from patch contents (828075d )
codex: keep a forked session's own id instead of its parent's (8db8b8c )
codex: preserve JSON command argv arrays (a35bd4d )
codex: preserve literal patch paths and diff header context (7ac5590 )
codex: preserve quoted command keys in selected calls (58f2f20 )
codex: read only literal top-level invocation arguments (41d4053 )
codex: retain wrapped tool names and static arguments (f06b7d9 )
codex: store one canonical decoded patch argument (c4db6af )
codex: unroll exec tool calls, detect errors and extract patched files (fixes #7 ) (d8fd064 )
compaction: count emitted summaries in the token budget; ignore markers for turn completion (b9cf047 )
compaction: preserve boundaries and gate summaries at full detail (d370f2f )
cursor: keep complete forward and backward pagination walks (b7c43f6 )
cursor: make --after and --before strictly exclusive to prevent duplicate paging (fixes #11 ) (011e45e )
output: serialize Claude source provenance independently (9f0325d )
read: bound turn pending-call inputs and keep turn meta on empty cursor slices (faeaf4c )
read: keep pending_tool_calls in the empty cursor-boundary response (0172278 )
read: omit non-prompts from minimal and standard views (581facd )
search: report non-matching query explicitly and support searching tool inputs (fixes #10 ) (9d8319f )
search: retain matches and honor search fields consistently (e83f990 )
slicer: measure partial against the requested slice, not the whole session (a0ee2d6 ), closes #23
slicer: preserve and bound pending tool call metadata (d2616bb )
slicer: preserve trailing unresolved tool calls and expose pending_tool_calls (fixes #6 ) (0094907 )
tokens: clear obsolete per-turn rate snapshots (8a1fbde )
tokens: preserve request usage and current context snapshots (518f02d )
tokens: retain cache writes and distinguish unreported usage (312d713 )
turns: include successful notebook edit targets (ae2f461 )
turns: page against the turn window, keep cursor.first valid, bound command metadata (ec96c30 )
turns: preserve prompt provenance and successful execution facts (2d20a3d )
turns: use Claude-reported turn durations and join argv-array commands (140ff5a ), closes #21 #18
Refactoring
serialize: drop duplicate message source emission after merge (b1e4352 ), closes #19 #21
Docs
--after/--before are now exclusive, by_role.user counts human prompts only, partial means budget truncation (see MIGRATION.md) (1c499fd )
You can’t perform that action at this time.