Skip to content

Releases: 2389-research/ccvault

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 08 Oct 19:01
cac6d9b

Upgrading — read this before you sync

This release is mostly about not losing turns, and getting there needs a schema change.

Opening your archive with v0.3.0 runs 8 migrations (005 and 007–013) automatically. One of them matters operationally:

Migration 012 rebuilds the turns table. It holds the old and new copies at once, so it needs free disk space roughly equal to your turns table, plus room for the write-ahead log. On a large archive that is gigabytes, and the database file stays that much larger afterward until you run ccvault vacuum.

It is wrapped in a transaction and ends with a strict FTS integrity check, so a failure — including running out of disk — rolls the whole thing back rather than leaving a half-rebuilt table. But migrations do not take a backup for you (only sync --full and --rebuild do). So before upgrading, with nothing else running:

cp ~/.ccvault/ccvault.db ~/.ccvault/ccvault.db.bak

Two further cautions:

  • Don't run an older ccvault against an upgraded archive. Older binaries open a newer schema without complaint, write with the wrong connection pragmas, and their sync --full wipes the archive instead of re-parsing it. Upgrade every copy on your PATH.
  • Timing on a million-row archive is extrapolated, not measured — expect minutes, not seconds, and don't interrupt it.

What this fixes

  • Turns lost to uuid collisions between resumed transcripts. A resumed session copies the earlier session's lines verbatim, uuids included, and turns was keyed on the uuid alone — so the later parse deleted the earlier session's rows. Migration 012 re-keys on (session_id, id) and un-marks the affected transcripts so the next sync recovers them. Measured on one real set: 23,905 turns stored before, 25,003 after.
  • sync --full destroying the archive. It no longer resets the database; re-parsing is now a separate --rebuild, it backs up first, confirms interactively, and refuses to run unattended.
  • Full-text index orphans, which made searches miss turns that were present.
  • Failed tool calls are now searchable — is_error is stored, so you can find the calls that didn't work.
  • stats gained --json, search reaches tool inputs and results, and date-filtered searches no longer scan the whole index.

Known issue: a transcript that repeats a uuid within itself still stores fewer turns than it reports (#121). That case is narrower than the cross-session one fixed here, and tracked separately.


Changelog

Features

  • ccc4c67: feat(mcp): list_sessions/list_projects paginate by offset like search (@detour1999)
  • ec09bf2: feat: --data-dir / --config make the whole CLI runnable against a fixture (@detour1999)
  • 586b0b7: feat: --full sync backs up, confirms, and refuses non-interactive wipes (@detour1999)
  • cbeb94c: feat: add GetToolNamesLike for tool-name suggestions (@harperreed)
  • 1eb0be2: feat: add empty-result hints and has_more to MCP search and list tools (@harperreed)
  • a45dc45: feat: add nanoclaw source adapter with subagent sidechain support (@detour1999)
  • 6c098a9: feat: archive subagent transcripts from ~/.claude as their own sessions (@detour1999)
  • 2885b2b: feat: bound a date-filtered search's index scan to the window it asks for (@detour1999)
  • 6ef9fab: feat: bounded line reader for parser (defense against pathological input) (@detour1999)
  • 257776f: feat: cap line reads at 200 MB and truncate raw_json above 1 MB (@detour1999)
  • 5e50e82: feat: ccvault stats gains --json flag for machine-parseable output (@detour1999)
  • a2572ab: feat: ccvault sync reports sessions whose transcript was rewritten upstream (@detour1999)
  • b6ebb4a: feat: count and surface JSONL lines skipped during parse (@detour1999)
  • 9d28aee: feat: get_turns resumes from an ordinal, and the summary reports the cursor (@detour1999)
  • 684ccb7: feat: index a day and month token beside the searchable text (@detour1999)
  • 533380c: feat: internal/compact width-aware compaction + TUI layout tiers (follow-up 8) (@detour1999)
  • 7d84ebe: feat: introduce projectref discipline + AST allowlist (follow-ups 4-8) (@detour1999)
  • 36faa55: feat: migration 005 normalizes display_name to basename for existing rows (@detour1999)
  • 24c7a1c: feat: migration 009 stores and indexes tool payloads, backfilled from raw_json (@detour1999)
  • cbbe01c: feat: ordering reads off ordinal, and get_turns reports it as a cursor (@detour1999)
  • b355b02: feat: raw_json placeholder for oversized parsed turns (@detour1999)
  • be00190: feat: reclaim dead space with verified copy-and-swap compaction (@detour1999)
  • 6480a01: feat: search reaches tool inputs and results, and says when it did (@detour1999)
  • 0f480a3: feat: sessions.parent_session_id, with a backfill for ids that carried the link (@detour1999)
  • 1b47068: feat: stats reports turns whose stored payload is not JSON (@detour1999)
  • b32ffe9: feat: store the tool-result is_error flag, so failed calls are findable (@detour1999)
  • 4868423: feat: subagent sessions are hidden from listings, never unreachable (@detour1999)
  • cae3d5a: feat: surface raw_json truncation counts in sync stats (@detour1999)
  • 202c1c0: feat: the parser and all five adapters carry tool payloads instead of dropping them (@detour1999)
  • 167824f: feat: tool-payload storage policy as a shared package (@detour1999)
  • e8ef709: feat: turns carry a gapless per-session ordinal, backfilled from rowid (@detour1999)

Bug fixes

Read more

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 06 Jul 21:07
b067bb3

Changelog

Features

Bug fixes

Other

  • 34b5e37: refactor: sync layer uses adapter interface instead of direct parser calls (@detour1999)
  • eed623e: revert: remove unrelated fmt.Fprintf changes from migration commit (@detour1999)

v0.1.8

Choose a tag to compare

@github-actions github-actions released this 14 Feb 23:44

Changelog

Features

  • bb4245e: feat: add interactive TUI sync, optimize incremental sync, wire has:error/has:subagent search (@harperreed)

Bug fixes

Other

v0.1.7

Choose a tag to compare

@harperreed harperreed released this 14 Feb 15:11

What's New

Claude Code Skill

Ship a 4-file skill (skills/ccvault/) that teaches AI agents how to effectively mine conversation history:

  • SKILL.md — Strategy guide with search playbook, decision flowchart, five search patterns, and anti-patterns
  • reference.md — Full tool/query reference card with all 8 MCP tools, query syntax, and copy-paste recipes
  • orient-prompt.md — Session-start orientation workflow (4 steps)
  • recall-prompt.md — On-demand recall workflow with search narrowing waterfall

New CLI Commands

  • ccvault quickstart — Interactive setup guide for new users
  • ccvault orient — Database state summary for AI agents (--json for programmatic use)

Improvements

  • list-sessions --json now includes project_path per session, eliminating N+1 CLI calls for consumers that need project context (closes #1)
  • Expanded installation docs (Homebrew, go install, build from source)

v0.1.6

Choose a tag to compare

@github-actions github-actions released this 14 Feb 06:01

Changelog

Features

v0.1.5

Choose a tag to compare

@github-actions github-actions released this 14 Feb 05:08

Changelog

Features

v0.1.4

Choose a tag to compare

@github-actions github-actions released this 14 Feb 05:03

Changelog

Features

Bug fixes

v0.1.3

Choose a tag to compare

@github-actions github-actions released this 14 Feb 04:39

Changelog

Bug fixes

  • a070e59: fix: remove Linux ARM64 build (CGO cross-compile issues with DuckDB) (@harperreed)

v0.1.2

Choose a tag to compare

@github-actions github-actions released this 14 Feb 04:36

Changelog

Bug fixes

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 14 Feb 04:33

Changelog

Features

Bug fixes