crispy-recall 0.1.6 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -6,6 +6,43 @@ Searchable memory for your Claude Code and Codex sessions. Local, fast, no daemo
6
6
 
7
7
  A standalone spin-off of the recall feature from [Crispy](https://github.com/TheSylvester/crispy). See the parent project for the broader multi-agent orchestration GUI.
8
8
 
9
+ ## What's new in 0.2.0
10
+
11
+ - **Native SQLite engine with real WAL.** The database now runs on
12
+ better-sqlite3 with write-ahead logging instead of the previous WebAssembly
13
+ binding — which never actually engaged WAL and could silently corrupt the
14
+ index when multiple processes wrote at once. That failure mode is eliminated
15
+ at the root. `recall doctor` gains a SQLite-binding health section.
16
+ **Node.js ≥ 22.16 is now required.**
17
+ - **Git provenance: `--commit` and `--blame`.** `recall --commit <hash>` lists
18
+ the session(s) that produced a commit; `recall --blame <path>[:line[-line]]`
19
+ traces a file or line range back to the conversations responsible. Matching
20
+ is structural (your sessions' actual edits vs the commit's diff), not
21
+ timestamp-based. These flags were documented in the skill but missing from
22
+ the shipped CLI; they now work as documented.
23
+ - **Better semantic retrieval (embedding v3).** Stored messages and queries now
24
+ carry the task prefixes the embedding model was trained on, and short turns
25
+ (one-line answers, approvals, decisions) are embedded together with their
26
+ preceding context so they're finally findable by meaning. Measurably improves
27
+ retrieval on the LoCoMo benchmark (recall@5 54.9 → 58.4).
28
+ - **Semantic search stays available during migrations.** Upgrading re-embeds
29
+ your history in the background; until it finishes, search transparently
30
+ blends old- and new-format vectors and tags output with
31
+ `(migrating: N% re-embedded)` instead of going dark.
32
+ - **Relevance-first ranking.** The hidden age penalty is off by default —
33
+ older sessions now rank purely by relevance (previously the right old result
34
+ could rank 2× worse just for being old). Pass `--recent` to prefer newer
35
+ sessions explicitly.
36
+ - **Faster indexing on large databases.** A new index removes a full-table
37
+ scan from every embedding batch and end-of-turn catch-up (~0.3 s → ~0.05 s
38
+ at ~287K messages). Created automatically on first run.
39
+ - **Safe in-place upgrade for existing installs.** `recall install` migrates
40
+ an existing database in place: rollback snapshot → WAL conversion →
41
+ integrity check with auto-repair → background re-embed. See
42
+ [Upgrading from 0.1.x](#upgrading-from-01x).
43
+ - **New scripting flags.** `--raw-messages` (full ranked per-message JSON) and
44
+ `--no-idf` (keep common words in keyword search), both off by default.
45
+
9
46
  ## Install
10
47
 
11
48
  Install the command globally, then run the one-time setup:
@@ -34,12 +71,46 @@ Windows-native are separate installs.** If you use both, run the install in each
34
71
  > installed skill's command contract have nothing to call. Use the global
35
72
  > install above.
36
73
 
37
- Prerequisites: Node ≥ 20 and Claude Code installed. If Codex is detected
74
+ Prerequisites: Node ≥ 22.16 and Claude Code installed. If Codex is detected
38
75
  (`~/.codex/` exists), recall installs the `recall` skill into Codex (so the
39
76
  agent can search) and you can index your Codex history with
40
77
  `recall backfill --vendor codex`. Real-time per-turn Codex indexing is **not
41
78
  yet** supported.
42
79
 
80
+ ### Upgrading from 0.1.x
81
+
82
+ ```bash
83
+ npm install -g crispy-recall
84
+ recall install # run this FIRST, before any other recall command
85
+ ```
86
+
87
+ Exit any running Claude/Codex sessions first, then make `recall install` the
88
+ first recall command you run after the npm upgrade — it performs a one-time,
89
+ in-place migration of your existing database (rollback snapshot → WAL
90
+ conversion → integrity check → background re-embed). If a live session is
91
+ still holding the database the installer aborts cleanly and asks you to
92
+ re-run; re-running is always safe and picks up where it left off.
93
+
94
+ What to expect:
95
+
96
+ - **Your indexed history is preserved — even without the original
97
+ transcripts.** Claude Code deletes session `.jsonl` files after 30 days by
98
+ default; the migration never reads them. It works on the database in place,
99
+ and the re-embed sources text from the database itself.
100
+ - A rollback snapshot is written to `~/.recall/recall.db.pre-upgrade-<stamp>`
101
+ (needs free disk roughly equal to your DB size; delete it once you're
102
+ satisfied).
103
+ - A background re-embed upgrades your vectors to the new format — roughly an
104
+ hour per 20K messages on CPU, minutes on GPU. Search works the entire time
105
+ (output shows `migrating: N% re-embedded`); watch progress with
106
+ `recall status`. It resumes automatically after reboots.
107
+ - The migration is one-way: **don't downgrade** to ≤ 0.1.6 afterwards — the
108
+ old engine fails closed on the converted database.
109
+ - **Avoid `recall repair --full` unless you accept losing older history** — it
110
+ rebuilds the index from the transcripts still on disk, which for most
111
+ machines means only the last 30 days. Your database is the store of record;
112
+ the pre-upgrade snapshot is the rollback path if anything looks wrong.
113
+
43
114
  ## What it does
44
115
 
45
116
  - A **Stop hook** ingests every turn into a local SQLite DB the moment a session ends — no daemon, no background polling.
@@ -96,6 +167,22 @@ output. `recall install` also takes `--offline` (use a pre-staged binary +
96
167
  model instead of downloading) and `--no-backfill` / `--auto-backfill` to control
97
168
  the initial history index. Run `recall --help` for the full flag set.
98
169
 
170
+ ### Commit attribution (`--commit` / `--blame`)
171
+
172
+ Find the session(s) that produced a commit, or the session(s) responsible for
173
+ the current state of a file or line. Matching is structural — session
174
+ Edit/Write/MultiEdit tool calls are compared against the commit's diff via
175
+ tri-gram intersection, not clock proximity. `--blame` is HEAD-relative: it runs
176
+ `git blame` to find the commits behind the current file (or line range) and
177
+ attributes each; sessions overwritten by a later commit won't appear. Results
178
+ list top-level sessions and subagent leaves chronologically (oldest first).
179
+
180
+ ```bash
181
+ recall --commit 25dd0f8 # sessions that produced a commit
182
+ recall --blame src/paths.ts:82-84 # sessions behind a line range
183
+ recall --blame src/foo.ts:42 src/bar.ts:10-20 --limit 20 # union of specs
184
+ ```
185
+
99
186
  ## Where things live
100
187
 
101
188
  - `~/.recall/` — the DB, model, binary, logs, and `config.json` (the resolved GPU/CPU embedder mode).