v0.2.0 — Native SQLite (real WAL), embedding v3, git provenance
Native SQLite engine with real WAL, an upgraded embedding pipeline, and git provenance for your sessions.
Highlights
- Native SQLite with real WAL. The index now runs on better-sqlite3 with write-ahead logging instead of the previous WebAssembly binding — which never actually engaged WAL and could silently corrupt the index when multiple processes wrote at once. That failure mode is eliminated at the root.
recall doctorgains a SQLite-binding health section. Node.js ≥ 22.16 is now required. - Git provenance:
--commitand--blame.recall --commit <hash>lists the session(s) that produced a commit;recall --blame <path>[:line[-line]]traces a file or line range back to the conversations responsible. Matching is structural (your sessions' actual edits vs the commit's diff), not timestamp-based. - Better semantic retrieval (embedding v3). Stored messages and queries now carry the task prefixes the embedding model was trained on, and short turns (one-line answers, approvals, decisions) are embedded together with their preceding context so they're finally findable by meaning. Measurably improves retrieval on the LoCoMo benchmark (recall@5 54.9 → 58.4).
- Semantic search stays available during migrations. Upgrading re-embeds your history in the background; until it finishes, search transparently blends old- and new-format vectors and tags output with
(migrating: N% re-embedded)instead of going dark. - Relevance-first ranking. The hidden age penalty is off by default — older sessions now rank purely by relevance. Pass
--recentto prefer newer sessions explicitly. - Faster indexing on large databases. A new index removes a full-table scan from every embedding batch and end-of-turn catch-up (~0.3 s → ~0.05 s at ~287K messages).
- Safe in-place upgrade for existing installs.
recall installmigrates an existing database in place: rollback snapshot → WAL conversion → integrity check with auto-repair → background re-embed. - New scripting flags.
--raw-messages(full ranked per-message JSON) and--no-idf(keep common words in keyword search).
Upgrading from 0.1.x
Exit any running Claude/Codex sessions, then:
npm install -g crispy-recall
recall install # run this FIRST, before any other recall commandYour indexed history is preserved — even without the original transcripts (Claude Code deletes session .jsonl files after 30 days by default; the migration never reads them). A rollback snapshot is written to ~/.recall/recall.db.pre-upgrade-<stamp>. The migration is one-way — don't downgrade to ≤ 0.1.6 afterwards. See the README for full upgrade notes.