Skip to content

v0.2.0 - (May 23, 2026)

Latest

Choose a tag to compare

@aghontpi aghontpi released this 23 May 18:10
· 3 commits to main since this release

What's Changed

Several read paths were silently broken once a database grew past one segment, and the new bulk-block format had a few sharp edges in stats, search, and cryo optimise. All fixed below — no schema change, your existing .cryo files keep working.

Fixes:

  • Stats report real session counts again: After the v0.1.0 packing changes, cryo stats was counting compressed blocks instead of sessions, so an archive imported via cryo add chatgpt-export.json could show Sessions: 5 for 500 conversations. Counts now reflect actual sessions, including inside multi-session blocks.
  • --after / --before filter inside packed blocks: Sessions whose timestamps fall outside the requested window are no longer returned just because they shared a block with sessions that did. Sessions with no created_at also stay visible to time-filtered search instead of being excluded by a collapsed block range.
  • All segments are searchable again: Once an archive grew past 1 GB and rotated into data_002.cryo, every read path (search, show, last, first, stats, reindex) was silently ignoring older segments. Now every segment on disk is read.
  • cryo reindex is safe under concurrent writes: reindex now flushes pending into the archive, which writes to data files. It now holds the same CryoLock as add / flush / optimise, so a parallel cryo add from another shell can't corrupt anything.
  • MCP server add_log holds the lock: Previously the MCP server didn't take any lock, so a tool call racing a CLI cryo add could corrupt pending.bin or the archive. The MCP path now acquires the same CryoLock (5 s timeout, same as the CLI).

Performance:

  • cryo optimise actually hits --chunk-kb: The size-check pass was using zstd level 1 while the real write used level 19, so emitted blocks were 2–3× smaller than the requested target. The trial now uses level 19 too — --chunk-kb 256 produces blocks near 256 KB.
  • cryo optimise no longer re-compresses every step: A cheap raw-size pre-gate skips the trial compression until the accumulating chunk is plausibly large enough. The per-block cost drops from roughly O(N²) to O(N).
  • cryo optimise includes recent activity: It now drains pending.bin first, so freshly ingested sessions are part of the rewrite and the progress bar actually reaches 100%.

Quality:

  • New tests cover multi-segment visibility, per-session time filtering inside blocks, session counts across multi-session blocks, and undated sessions in time-filtered search — the areas that had zero coverage in v0.1.0 and let these regressions through.

Platform cryo-vault (CLI) cryo-vault-mcp (MCP server)
Linux x64 download download
Linux arm64 download download
macOS x64 download download
macOS arm64 download download
Windows x64 download download
Windows arm64 download download

Or build from source — see the README. No schema change in this release: your existing .cryo files just work, but run cryo reindex if cryo stats previously showed wrong counts.

Full Changelog: v0.1.0...v0.2.0