v0.12.1
Sync status now reports genuine work only, and forked subagent transcripts are no longer silently dropped. Verified end to end against the full real corpus (11k+ sessions / 1.8M messages) on both a local store and the S3 backend: ingestion is byte-identical to v0.12.0 except for the recovered data.
🎉 New Features
- status: pending preview for claude-desktop-app and opencode (fa41ddf) - these adapters now report an accurate per-session pending count instead of "pending unknown".
🐛 Bug Fixes
- sync: stop reporting provably-synced or empty sessions as pending (6a05cd1) - a source whose stored watermark already covers it (or that a bounded whole-source scan proves holds nothing ingestible) no longer counts as pending, so a clean store reports "up to date" instead of a permanent phantom floor (real corpus: claude-code 43 -> 0 false pending, codex-cli 4 -> 0). Skip signals derive only from stored data; anything the gate cannot cheaply classify still re-reads.
- claude-code: ingest forked subagent transcripts (06a2d27) - a
/forksubagent transcript (Claude Code >= 2.1.117) opens with afork-context-refheader row that carries nosessionId, which the adapter rejected as "line 1 missing sessionId" - silently dropping the entire forked conversation. The id is now taken from the first row that carries one (subagents derive it from the path regardless), recovering the full transcript with lossless native restore. Real corpus: 1 of 7,843 subagent transcripts affected, recovered as 16 messages, every other row byte-identical.
Full Changelog: v0.12.0...v0.12.1