github vshulcz/deja-vu v0.19.4

latest releases: nightly, v0.23.0, v0.22.2...
one month ago

The release where every agent on the machine gets the same memory. Amp,
prime-agent and VS Code Copilot Chat are wired from nothing — the last of them
joining as the twenty-third harness — and the ones that were already wired now
reach the moments recall is worth most: the first prompt, the failing command,
the file about to be edited, the turn after a compaction. The agent now says
"déjà vu" with a date and a session id when it reuses what it was handed.

Added

  • VS Code Copilot Chat: its chat sessions are indexed (chatSessions/*.jsonl, the append log VS Code writes since 1.109), the twenty-third harness — contributed by @Sora-bluesky. (#3088)
  • VS Code: deja install vscode writes the mcp.json Copilot Chat reads in agent mode, one per host present (Code, Insiders, VSCodium), and a deja.instructions.md applied to every chat so recall arrives without being asked for; measured on VS Code 1.134.0 from the MCP traffic. (#3102, #3107)
  • Amp: deja install amp writes the MCP server the way amp mcp add does; amp-auto adds a plugin under ~/.config/amp/plugins that hands the project digest to the first turn, per-prompt recall after it, and the repair beside a failed command in the same turn. (#3118)
  • prime-agent (PrimeIntellect): deja install prime writes the MCP server into ~/.prime/agent/settings.json and an extension that opens a session with the project digest, recalls on each prompt, forgets on compaction, and adds /deja. Its tool_call and tool_result events never fire on 0.9.1, so the fix pair is deliberately not wired there. (#3125)
  • Kimi Code: the session digest rides the first prompt and a compaction forgets what it threw away, measured on 0.28.1 — UserPromptSubmit is the one event whose output reaches the model. (#3121)
  • Roo Code: deja install roo names deja's own tool in the entry's alwaysAllow, so Roo stops asking before every recall — without it a non-interactive run waits at the first one forever. deja resume prints roo --session-id <uuid> for tasks the Roo CLI created, with the workspace it must run in; editor tasks still reopen from the editor. Measured against a recording endpoint on @roo-code/cli 0.1.17 with the 3.53 extension. (#3130)
  • deja files --json: the ranked rows a caller had to parse out of padded columns, with the three counts the ranking is built from. (#3106, #3124)
  • pi and omp: @vshulcz/pi-deja, the recall extension as a pi package — pi install npm:@vshulcz/pi-deja — session-start digest, per-prompt recall and /deja. (#3095)
  • pi and omp: a failed command gets its repair in the same turn (tool_result is the event whose return reaches the model; omp's bash tool reports the exit code in details.exitCode), a compaction forgets, and a file's history arrives when the agent reads it — the step before the edit, since neither harness has a pre-edit hook. (#3112, #3113)
  • Cline: the repair for a failed command arrives in the same turn, appended to the tool result by the message builder; hook-tool-after learns cline's run_commands and grows --plain. (#3098)
  • OpenClaw: @vshulcz/openclaw-deja, the recall plugin as a package — openclaw plugins install clawhub:@vshulcz/openclaw-deja — and a local session opens with the project digest via before_agent_start (74 ms and 1.6 KB on the first turn, nothing after). A compaction now forgets what it threw away, and the digest moved to the phase hook that fires once a turn. (#3058, #3087, #3123)
  • DeepSeek Harness: a session opens knowing what the project settled — a second systemPrompt.context contributor ahead of per-prompt recall, once per session. (#3094)
  • Antigravity: PreInvocation answers the question instead of only opening with the digest (the invocation counter is zero-based and restarts every turn); the repair arrives at the failing command; what a compaction threw away is served again; and the project is recalled when the payload names no workspace, read from cache/last_conversations.json. Measured on antigravity-cli 1.1.13. (#3059, #3063, #3077, #3078)
  • Install: the proof opens with the questions this machine asked more than once, and one of them — 26 questions asked more than once on this machine — one of them: "…". (#3071)
  • The first session after an index build hears what was indexed — deja indexed 1,444 sessions from 19 agents on this machine — 27 questions asked more than once — once per index. (#3074)
  • Once a week, session start says what the week looked like: deja this week: 41 recalls, 3 déjà vu — deja stats --card. (#3070)

Changed

  • The line an agent says when it reused a recall is now déjà vu: <what you asked then> (<agent>, <date>, deja:<id>) — reusing it., on every surface that asks for one; a question this machine already asked is quoted back in its own words. The line names the session the digest shows, not the top of the ranking. deja stats counts the new shape alongside "deja-vu recalled". (#3108)
  • deja stats --card leads with the questions asked more than once, the week moves to the supporting row, and the footer links to the repository. (#3069)
  • The README, the site and the npm page lead with what the harness count is for: one memory every agent on the machine reads. (#3109)

Fixed

  • Qwen Code: the repair sat on PostToolUse, which qwen fires only when the tool succeeded — the one event that never comes at a failure. It moves to PostToolUseFailure, whose return is appended to the tool result the model reads, and the old entry is dropped on install. The failing output arrives under error inside qwen's own Command: / Output: / Exit Code: block, which is unwrapped before the signature is taken. Measured on qwen-code 0.20.0. (#3126)
  • Qwen Code: install qwen-auto reported "unchanged" while it rewired the hooks, because it returned only the MCP half of the same file. (#3127)
  • Grok Build: SessionStart and PreCompact matchers that grok never fired are dropped and corrected on machines that already installed deja; hook inputs read grok's camelCase; agents it spawns are reached. (#3085)
  • Codex: the plugin manifest carries its icon, spells the URL keys the way the spec does, and names its hooks file as one path. (#3132)
  • DeepSeek Harness: the plugin declares the DSH release it was measured on. (#3129)
  • Zed: the /deja fix from #3020 never shipped because extension.toml still said 0.1.0; the version moves and CI fails when a change outruns it. (#3081)
  • pi: the generated /deja command declared args twice, so pi loaded the extension with no deja at all. (#3096)
  • A compiler error is one wall wherever the line moves: the position is masked on the repair signature, so adding an import no longer turns one recurring error into a new one on every edit. (#3080)
  • Search: offer --limit in bash, zsh, fish, and PowerShell completions. (#1929)
  • The README GIF recipe is complete and reproducible. (#1832)
  • Release scripts run npm, tar and unzip without a shell, and the digest marker constants are named as markers — the plugin scanner the Codex plugin catalogue pins reports nothing on main. (#3114, #3116)

Changelog

Features

  • feat(amp): wire Amp — MCP server, plugin, skill and command (#3118)
  • feat(antigravity): answer the question, not just open with the digest (#3059)
  • feat(antigravity): serve again what a compaction threw away (#3078)
  • feat(antigravity): the repair arrives at the failing command (#3077)
  • feat(cli): --json for files (#3106) (@vaibhav8a)
  • feat(cline): the repair for a failed command, in the same turn (#3098)
  • feat(deepseek): a dsh session opens knowing what this project settled (#3094)
  • feat(dsh): declare the DSH release the plugin was measured on (#3129)
  • feat(hook): once a week, session start says what the week looked like (#3070)
  • feat(hook): the first session after a build hears what was indexed (#3074)
  • feat(hook): the recall credit is a déjà vu line that opens the reply (#3110)
  • feat(install): the proof opens with the questions this machine asked more than once (#3071)
  • feat(kimi): the session digest rides the first prompt, and compaction forgets (#3121)
  • feat(openclaw): a local session opens knowing what this project settled (#3087)
  • feat(openclaw): forget on compaction, and move the digest to the phase hook (#3123)
  • feat(openclaw): the recall plugin as a package OpenClaw can install by name (#3058)
  • feat(pi): the recall extension as a pi package (#3095)
  • feat(pi,omp): a file's history arrives when the agent opens it (#3113)
  • feat(pi,omp): repair a failed command in the same turn, and forget on compaction (#3112)
  • feat(prime): wire prime-agent — MCP server, extension, skill and command (#3125)
  • feat(roo): resume CLI tasks and stop Roo asking before every recall (#3130)
  • feat(sources): index VS Code Copilot Chat sessions (#3088) (@Sora-bluesky)
  • feat(vscode): recall that arrives without being asked for (#3107)
  • feat(vscode): wire deja MCP into VS Code Copilot Chat (#3102)

Fixes

  • fix(antigravity): recall the project when the payload names no workspace (#3063)
  • fix(codex): the plugin manifest carries its icon and spells the URL keys as the spec does (#3132)
  • fix(friction): a compiler error is one wall wherever the line moves (#3080)
  • fix(grok): read grok's payload, and reach the agents it spawns (#3085)
  • fix(pi): the /deja command no longer redeclares its own argument (#3096)
  • fix(qwen): move the fix pair to PostToolUseFailure and unwrap qwen's report (#3126)
  • fix(qwen): report the hooks qwen-auto rewired, not just the MCP half (#3127)
  • fix(stats): the card leads with the questions asked more than once, and its rows stop sharing the footer line (#3069)
  • fix(zed): ship the /deja fix, and fail CI when a change outruns the version (#3081)
  • fix: search --limit exists and the word never appears in any completio (#1929) (#3091) (@keii-2596)
  • fix: the README GIF recipe ends in an ellipsis, so nobody can rebuild (#1832) (#3090) (@keii-2596)

Documentation

  • docs(packages): homepage points at the page that documents each package (#3083)
  • docs(packages): the openclaw and pi packages count twenty-three, and a test that keeps extensions/ counted (#3100)
  • docs(readme): say what redaction strips and what it cannot promise (#3068)
  • docs(site): say how to delete Claude Code sessions, not only whether to (#3120)
  • docs: a per-agent guide for VS Code Copilot Chat (#3105)
  • docs: changelog and site for 0.19.4 (#3133)
  • docs: changelog for the unreleased harness pass (#3122)
  • docs: lead with the memory every agent shares, not memory for one agent (#3111)

Other

  • chore(scripts): run npm, tar and unzip without a shell (#3115)
  • chore: name the digest markers as markers, and keep test suites out of the plugin scan (#3117)
  • chore: pin the manifests to 0.19.3 (#3057)
  • test(files): pin the ranked rows of files --json, and name the flag in help (#3124)
  • test(index): cover BuiltSummary's gate and missing-manifest paths (#3076)

Install

curl -fsSL https://raw.githubusercontent.com/vshulcz/deja-vu/main/install.sh | sh
go install github.com/vshulcz/deja-vu/cmd/deja@v0.19.4
brew install deja-vu

Don't miss a new deja-vu release

NewReleases is sending notifications on new releases.