chat-recall 0.5.10 → 0.5.12

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
@@ -25,19 +25,16 @@ session: a different tool, a different transcript format, one index.
25
25
 
26
26
  ![recall_smart_resume called from OpenCode with a Claude Code session id, returning that session's request, plan and completed work](docs/media/7-cross-claude.png)
27
27
 
28
- **Your assistant asks what you were doing, and picks the work back up.**
29
-
30
- ![recall_smart_resume returning the pending work, touched files and token budget of a past session](docs/media/1-resume.png)
31
-
32
- **Every file a session touched, and by how much.**
33
-
34
- ![recall_diff listing 28 files with per-file additions and deletions for one session](docs/media/4-diff.png)
35
-
36
28
  **Or just ask in plain English** — no tool names, no session ids. The agent picks
37
29
  the call itself:
38
30
 
39
31
  ![Claude Code answering a question about a past session by calling chat-recall itself](docs/media/A-claude-code.gif)
40
32
 
33
+ **It also finds the credentials you pasted, and checks which ones still work.**
34
+ A dead key is hygiene. A live one is an incident, and only live ones raise an alert.
35
+
36
+ ![The security view: leaked secrets grouped by rule, each with a masked preview, a live-or-dead verdict and the sessions it appeared in](docs/media/security-scans.png)
37
+
41
38
  ## Install
42
39
 
43
40
  ```bash
@@ -81,7 +78,7 @@ No API keys are required. Search is Postgres full-text search. AI summaries are
81
78
 
82
79
  ## Add your own AI tool
83
80
 
84
- A new backend is one file and one line — no changes to the engine. See [`docs/ADDING_A_TOOL.md`](docs/ADDING_A_TOOL.md). If a tool you use writes transcripts to disk, it can be indexed here, and a pull request is the fastest way to make that happen.
81
+ A new backend is one file and one line — no changes to the engine. If a tool you use writes transcripts to disk, it can be indexed here, and a pull request is the fastest way to make that happen.
85
82
 
86
83
  ### Optional: web dashboard
87
84
 
@@ -286,7 +283,7 @@ e2e/ Playwright tests for the dashboard
286
283
  Two extension points, both registry-driven:
287
284
 
288
285
  - **Adding a new content type** (e.g. another file format to index) — implement `MemorySource` (`discover` → `parse` → `extractLinks`) and register it in the `SourceRegistry`.
289
- - **Adding a new AI tool** (a seventh backend alongside Claude/Gemini/OpenCode/Codex/Antigravity/Cursor) — implement `ToolBackend` (paths, ID handling, `readEvents`, `fileToolMap`, `extractEditDelta`) and register it in `packages/engine/src/core/backends/index.ts`. Walkthrough: [`docs/ADDING_A_TOOL.md`](docs/ADDING_A_TOOL.md). All paths are env-overridable via `CHAT_RECALL_{CLAUDE,GEMINI,CODEX,AGY,CURSOR,CURSOR_IDE}_HOME` / `CHAT_RECALL_OPENCODE_DB`.
286
+ - **Adding a new AI tool** (a seventh backend alongside Claude/Gemini/OpenCode/Codex/Antigravity/Cursor) — implement `ToolBackend` (paths, ID handling, `readEvents`, `fileToolMap`, `extractEditDelta`) and register it in `packages/engine/src/core/backends/index.ts`. All paths are env-overridable via `CHAT_RECALL_{CLAUDE,GEMINI,CODEX,AGY,CURSOR,CURSOR_IDE}_HOME` / `CHAT_RECALL_OPENCODE_DB`.
290
287
 
291
288
  ## Requirements
292
289
 
package/dist/cli.js CHANGED
@@ -19694,7 +19694,7 @@ var init_http = __esm({
19694
19694
  CLI_VERSION = JSON.parse(readFileSync33(new URL("../package.json", import.meta.url), "utf-8")).version || CLI_VERSION;
19695
19695
  } catch {
19696
19696
  try {
19697
- if (true) CLI_VERSION = "0.5.10";
19697
+ if (true) CLI_VERSION = "0.5.12";
19698
19698
  } catch {
19699
19699
  }
19700
19700
  }
@@ -20206,7 +20206,7 @@ var init_telemetry = __esm({
20206
20206
  init_sync_client();
20207
20207
  cliVersion2 = () => {
20208
20208
  try {
20209
- return true ? "0.5.10" : "dev";
20209
+ return true ? "0.5.12" : "dev";
20210
20210
  } catch {
20211
20211
  return "dev";
20212
20212
  }
@@ -21978,7 +21978,7 @@ var init_sync_client = __esm({
21978
21978
  ownVersion = JSON.parse(readFileSync36(join44(dir, "../package.json"), "utf-8")).version || ownVersion;
21979
21979
  } catch {
21980
21980
  try {
21981
- if (true) ownVersion = "0.5.10";
21981
+ if (true) ownVersion = "0.5.12";
21982
21982
  } catch {
21983
21983
  }
21984
21984
  }
@@ -25624,7 +25624,7 @@ var init_intent_drain = __esm({
25624
25624
  ownVersion2 = JSON.parse(readFileSync45(join55(dir, "../package.json"), "utf-8")).version || ownVersion2;
25625
25625
  } catch {
25626
25626
  try {
25627
- if (true) ownVersion2 = "0.5.10";
25627
+ if (true) ownVersion2 = "0.5.12";
25628
25628
  } catch {
25629
25629
  }
25630
25630
  }
package/dist/mcp.js CHANGED
@@ -19006,7 +19006,7 @@ var init_http = __esm({
19006
19006
  CLI_VERSION = JSON.parse(readFileSync33(new URL("../package.json", import.meta.url), "utf-8")).version || CLI_VERSION;
19007
19007
  } catch {
19008
19008
  try {
19009
- if (true) CLI_VERSION = "0.5.10";
19009
+ if (true) CLI_VERSION = "0.5.12";
19010
19010
  } catch {
19011
19011
  }
19012
19012
  }
@@ -19518,7 +19518,7 @@ var init_telemetry = __esm({
19518
19518
  init_sync_client();
19519
19519
  cliVersion2 = () => {
19520
19520
  try {
19521
- return true ? "0.5.10" : "dev";
19521
+ return true ? "0.5.12" : "dev";
19522
19522
  } catch {
19523
19523
  return "dev";
19524
19524
  }
@@ -21222,7 +21222,7 @@ var init_sync_client = __esm({
21222
21222
  ownVersion = JSON.parse(readFileSync35(join45(dir, "../package.json"), "utf-8")).version || ownVersion;
21223
21223
  } catch {
21224
21224
  try {
21225
- if (true) ownVersion = "0.5.10";
21225
+ if (true) ownVersion = "0.5.12";
21226
21226
  } catch {
21227
21227
  }
21228
21228
  }
package/dist/watch.js CHANGED
@@ -19177,7 +19177,7 @@ var init_http = __esm({
19177
19177
  CLI_VERSION = JSON.parse(readFileSync33(new URL("../package.json", import.meta.url), "utf-8")).version || CLI_VERSION;
19178
19178
  } catch {
19179
19179
  try {
19180
- if (true) CLI_VERSION = "0.5.10";
19180
+ if (true) CLI_VERSION = "0.5.12";
19181
19181
  } catch {
19182
19182
  }
19183
19183
  }
@@ -19685,7 +19685,7 @@ var init_telemetry = __esm({
19685
19685
  init_sync_client();
19686
19686
  cliVersion = () => {
19687
19687
  try {
19688
- return true ? "0.5.10" : "dev";
19688
+ return true ? "0.5.12" : "dev";
19689
19689
  } catch {
19690
19690
  return "dev";
19691
19691
  }
@@ -21327,7 +21327,7 @@ var init_sync_client = __esm({
21327
21327
  ownVersion = JSON.parse(readFileSync36(join44(dir, "../package.json"), "utf-8")).version || ownVersion;
21328
21328
  } catch {
21329
21329
  try {
21330
- if (true) ownVersion = "0.5.10";
21330
+ if (true) ownVersion = "0.5.12";
21331
21331
  } catch {
21332
21332
  }
21333
21333
  }
@@ -24040,7 +24040,7 @@ try {
24040
24040
  ownVersion2 = JSON.parse(readFileSync40(join49(dir, "../package.json"), "utf-8")).version || ownVersion2;
24041
24041
  } catch {
24042
24042
  try {
24043
- if (true) ownVersion2 = "0.5.10";
24043
+ if (true) ownVersion2 = "0.5.12";
24044
24044
  } catch {
24045
24045
  }
24046
24046
  }
@@ -24384,7 +24384,7 @@ async function runCollectorMigration(opts) {
24384
24384
  init_sync_ledger();
24385
24385
  init_collector_health();
24386
24386
  import { existsSync as existsSync50, readFileSync as readFileSync45 } from "fs";
24387
- var CLI_VERSION3 = true ? "0.5.10" : "0.0.0";
24387
+ var CLI_VERSION3 = true ? "0.5.12" : "0.0.0";
24388
24388
  var DEBOUNCE_MS = 5e3;
24389
24389
  var CLAUDE_DIR = claudeBackend.projectsDir();
24390
24390
  var PLANS_DIR = claudeBackend.plansDir();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chat-recall",
3
- "version": "0.5.10",
3
+ "version": "0.5.12",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/munhq/chat-recall.git"