এখানে deja-vu-এর ১৪টি সংস্করণ আছে, ২৭ সেপ্টেম্বর, ২০২৬ থেকে বর্তমান 0.23.5 পর্যন্ত। প্রতিটির লিংক যায় প্রকাশকের নিজস্ব ইনস্টলার ফাইলে।
| সংস্করণ | তারিখ | সাইজ | ফাইল |
|---|---|---|---|
| 0.23.5সর্বশেষ | ৩ নভেম্বর, ২০২৬ | — | ৬৪-বিট ZIPARM64 ZIP রিলিজ নোটAdded
- VS Code, Cursor, Windsurf, and Antigravity extension (vshulcz.deja-status, extensions/vscode). Shows a live session memory counter in the status bar and runs deja stats or deja install --auto on click (#5859).
- Raycast extension (extensions/raycast). Adds Search Sessions and Recent Sessions commands on macOS for searching across all indexed coding agent sessions and copying deja resume <id> (#5829).
- deja-reflect skill (skills/deja-reflect/SKILL.md). Standalone end-of-session reflection skill that inspects deja notes and deja friction, distills durable project invariants, and stores confirmed notes via deja remember (#5841).
- Incremental offset parsing for Antigravity and Cursor transcripts and symbol-level blame in deja blame (#5863).
Fixed
- Status line multi-harness audit across OpenCode, Antigravity, Claude Code, and Cursor (statusline), plus recall_context tool name alignment in hook-context and deja doctor self-version check (#5850, #5851, #5864).
- Claude Code and Codex plugin hooks (claude-plugin/hooks/deja.sh, codex-plugin/hooks/deja.sh). Require explicit confirmation before acting on recalled User said (this project) lines or running deja rules sync, and point missing-binary hints solely at brew install deja-vu (#5838, #5860, #5865).
Changelog
Features
- feat(sources,search): incremental offset parsing for antigravity/cursor and symbol blame (#5863)
- feat: resolve remaining open issues across recall, statusline, stats, docs and extensions (#5864)
Fixes
- fix(claude-plugin,codex-plugin): drop moving @latest from missing-binary hint (#5865)
- fix(claude-plugin,hooks): require confirmation on recalled user lines and rules sync (#5838) (#5860)
Performance
- perf(index,digest): cut relevance allocations 4x, cache worktree roots, and enforce wiring invariants (#5835)
Documentation
- docs(changelog,extensions): prepare 0.23.5 release and align extension READMEs (#5878)
- docs(guide): put index-before-delete and write-back commands at the top of cleanup and recovery guides (#5834) (@shu-chen-dot-ca)
- docs(readme,extensions,site): symmetric conversion, nav star CTA, CITATION.cff, and context7.json (#5848) (#5861)
Other
- chore: pin the manifests to 0.23.4 (#5828)
- refactor(cli,index,digest,search): split hook/store/digest domains and fix Unicode word boundaries (#5844)
- refactor(cli,index,search,redact): split 10 domain files into cohesive units under 1,980 lines (#5845)
- refactor(cli,index,search,sources): split 9 domain files so zero files exceed 1,359 lines (#5846)
- refactor(cli,sources,digest): unify hook envelope adoption, word-form counting, and duplicate helpers (#5840)
- refactor(index,deja): unify synced convention conversion and OrigID identity lookup (#5853)
- refactor(index,search,cli): split bounded domains and enforce cross-package invariants (#5839)
- refactor(model,index,deja): unify session lineage and decision lifecycle resolution (#5852)
- refactor(model,query): introduce DDD domain value methods, unify ProjectInScope, and enforce AST invariants (#5849)
- refactor: unify harness wiring, parser project ACL, and index sidecar updates (#5855)
- refactor: unify identity resolution, handover filters, and sidecar scope (#5854)
- refactor: unify manifest visibility, index exclusion gate, and composite identity (DDD Stages E-K) (#5858)
Install
curl -fsSL https://raw.githubusercontent.com/vshulcz/deja-vu/main/install.sh | sh
go install github.com/vshulcz/deja-vu/cmd/deja@v0.23.5
brew install deja-vu |
| 0.23.4 | ১ নভেম্বর, ২০২৬ | — | ৬৪-বিট ZIPARM64 ZIP রিলিজ নোটReverse commit attribution (deja origin), shell-layer recall (deja shell)
for agents whose MCP or hook channel is absent or broken, full CJK recall and
decision extraction parity, and expanded harness wiring and session-deletion
guides across the 43 supported agents.
Added
- deja origin [rev|range] traces commits back to the coding agent session and
user prompt that produced them across all 43 harnesses, matching git author
timestamps and changed file paths against indexed tool edits (--json,
--harness, --project, --limit) (#534).
- deja shell adds a shell-level recall channel independent of harness MCP or
hook support: eval "$(deja shell zsh|bash|fish)" installs preexec/postexec
hooks that surface prior command warnings and post-failure fix pairs,
deja shell -c "<cmd>" wraps command execution directly (SHELL=deja), and
deja shell --verify [--json] probes live MCP stdio initialize and
tools/list call-through across every wired harness (#1214).
- Continue CLI (cn) hook wiring (UserPromptSubmit, SessionStart, Stop,
PreToolUse, PostToolUse, PreCompact) in ~/.continue/config.yaml and
~/.continue/settings.json (#5798).
- Guide pages for deleting session history in Goose, Gemini CLI, Aider, Hermes
(with @beiryu) and Crush (with @Kasa-Harendra), plus updated deja delete
guides (#5571, #5643, #5645, #5646, #5647, #4968).
Changed
- CJK (Chinese, Japanese, Korean) queries, decision markers, correction cues,
and error signatures now tokenize and rank on par with English and Russian:
punctuation-free CJK prompts keep query tokens intact, CarriesDecision and
HasFact recognize Chinese architectural and root-cause markers (决定,
改成, 根因, 排查, 修复, 原因, 方案, 不能, 必须), and
cross-session recall surfaces Chinese decisions and fix pairs (#5777, #5791,
#5804).
- VS Code fork family (Cursor, Windsurf, Trae, Antigravity, CodeBuddy, Qoder,
PearAI, Void, Melty, Aide) shares unified state.vscdb and workspaceStorage
session discovery (#5797).
Fixed
- deja install and deja doctor handle symlinked harness config paths,
custom CLAUDE_CONFIG_DIR / CODEX_HOME roots, Qwen Code settings.json
hook coexistence, and Cursor workspace database WAL locks cleanly (#4971,
#3784, #4976, #528).
Changelog
Features
- feat(claude): ingest claude-mem SQLite observations and summaries
- feat(cli): add deja origin commit provenance command (#5819)
- feat(cli): show one-time star hint after 25 recalls in stats and install
- feat(docs): add install method tabs, full-guide search, and top-page index callouts (#5788)
- feat(embed,search): fuse vector-first RRF hits, rerank 64 pool, and skip regex (#5777)
- feat(hook,fix,doctor): surface co-changed companions, edit fix diffs, and stale plugin scripts (#5779)
- feat(hooks): carry Claude auto-memory to non-Claude sessions and fix Hermes/mcode (#5818)
- feat(index,sources,handoff): add shared index perms, DEJA_HOME_ROOTS, and handoff state (#5780)
- feat(recall): tighten prompt hook subject gates and lift marathon session-start coverage (#5781)
- feat(recall,search,prompt): surface code edit diffs, diversify uncovered terms, and mark touched-file supersession (#5778)
- feat(scripts): add amlserve HTTP adapter for AML evaluation (#5755)
- feat(shell): add shell-layer recall and MCP call-through verification (#1214) (#5824)
- feat(sources): resolve Gemini workspace for changes and refresh live-verified registry entries (#5821)
- feat(sources,cli): add project-scoped .deja/notes.jsonl store and --repo promotion (#5816)
- feat(statusline): wire status bar item across VS Code forks
- feat: add CJK episode classification and cross-script retrieval (#5802)
- feat: collapse worktree file paths and inherit Antigravity subagent projects (#5811)
Fixes
- fix(brief,recap,ci): clean recap cuts and brief noise, group codeql bumps (#5790)
- fix(digest): skip home and root directories in ProjectNameCandidates
- fix(digest,how,redact): clean handoff output and rank direct how commands first (#5787)
- fix(digest,sources): unwrap handoff prompts, scope standing |
| 0.23.3 | ২৯ অক্টোবর, ২০২৬ | — | ৬৪-বিট ZIPARM64 ZIP রিলিজ নোটRecalled code changes keep library edits ahead of *_test.py files and leave
out scratch *_test.py files written outside a test directory.
Fixed
- FinalChanges classifies *_test.py files alongside test_*.py as tests,
so library edits appear before test edits in a recalled session's code changes
and scratch *_test.py files outside a test directory are left out (#5751).
Changed
- The README, architecture guide, roadmap and site lead with codex,
opencode, cursor and claude on equal footing, and internal benchmark
stands were removed from scripts/ (#5751).
- The release follow-up workflow opens the manifest and extension version
catch-up pull request automatically when RELEASE_PIN_TOKEN is set (#5749).
Changelog
Other
- chore: drop one-off measurement probes and local harness stands (#5751)
- chore: pin the manifests to 0.23.2 (#5746)
- ci: release follow-up opens the manifest pin PR itself (#5749)
Install
curl -fsSL https://raw.githubusercontent.com/vshulcz/deja-vu/main/install.sh | sh
go install github.com/vshulcz/deja-vu/cmd/deja@v0.23.3
brew install deja-vu |
| 0.23.2 | ২৮ অক্টোবর, ২০২৬ | — | ৬৪-বিট ZIPARM64 ZIP রিলিজ নোটRecall is twice as fast and the index a third smaller, with the same answers.
On a 19k-session store against 0.23.1, MCP recall p50 goes from 170 to 85 ms
and the index from 277 to 185 MB, and LongMemEval-S hit@1 is 88.9 against
88.1. Agents get less noise: the per-prompt block is injected for 51 unrelated
prompts in 240 instead of 171, and pages with nothing to find are a third of
their size. A recall that misses the deadline still reaches the agent, and
recall answers during an upgrade's rebuild. Cold builds cost 31% more CPU than
0.23.1 because the index now records the commands and edits behind each
conclusion. The index rebuilds once on upgrade.
Added
- deja mcp --context-search serves Qwen Code's External Context MCP
Profile v1: one context_search({query}) tool that answers from the local
index with at most five items in the profile's untrusted envelope, checked
against the profile's published schemas and test vectors. deja mcp itself
is unchanged. Register it with qwen mcp add deja-context deja mcp --context-search --timeout 8000 --include-tools context_search (#5662).
- DEJA_RECALL_GLOBAL=1 makes MCP recall, deja recall and deja mcp --context-search rank every project the same instead of putting the current
one first. Unset, nothing changes, and the hooks and the TUI keep their
scope. From @Terminator637 (#5674).
Changed
- Recall labels who wrote each line (Model said (no record backs it),
Prompt written by a parent agent, Output with an instruction to agents …)
and shows the command or edit a model's conclusion rests on above the
conclusion, from receipts written when the index is built or updated. A check or build
rule a person typed in an interactive Claude Code session of the current
project is shown as User said (this project), and the frame header and MCP
instructions say to follow those lines and nothing else. An instruction to
run something that no person in the project typed (tool output, a paste, a
parent agent's prompt, a claude -p run, another project) is cut to
[instruction to agents left out]; a rule the person took back is not
shown. The index version is now 109, so the store rebuilds once on the
first run.
- Recall no longer heads a page "No session is about this" when a session on
it holds most of a long query. The page says which session holds how many of
the query's words and which it lacks. A page that shares only filler words
with the query, or lacks the path or identifier it names, keeps the old line.
A word-form match that had to drop query words no longer outranks the
sessions that hold them.
- The instructions, skills and extensions ask for 1-3 exact terms on recall (a
file path, an error string, a flag or identifier) instead of the task's key
nouns. Queries of six or more words almost never matched.
- The instructions, skills and extensions no longer tell the agent that a
recalled rule outranks its defaults. Recall is untrusted reference data from
past transcripts: the agent names the rule in one line and asks before it
changes a command, a file write or a config. The standing-decisions block
says the same (#5676).
- The per-prompt line names the agent the memory came from and how long ago:
deja-vu — from Codex CLI, 4 months ago: "<quote>" (via <terms>), where it
used to say only "you have been here" and a date. The gates are unchanged:
a confident match only, at most once in twenty minutes per session. The dsh
card and the OpenClaw chat line read both shapes (#5660).
- A spawned subagent's instructions are no longer extended with recall, except
in Grok, whose main-thread hooks print to nobody. Over 60 days on one
machine, 1339 Claude Code subagents were handed a block and none used it,
and those blocks were 55% of all per-prompt recall. opencode task sessions
are not searched on their turns either, since the agent that wrote them had
the recall already (#5660).
- The per-prompt block is injected only when the prompt names something the
history holds: two of its lead words said in one message, |
| 0.23.1 | ২৪ অক্টোবর, ২০২৬ | — | ৬৪-বিট ZIPARM64 ZIP রিলিজ নোটBig stores build and search for less. A cold build peaks at half the memory
it did (4.7 GB instead of 9.4 GB on 40,000 sessions, 2.4 GB instead of 4.0 GB
on a 12,000-session Codex store), redacts with 17x less CPU, reads each
transcript line once and writes a quarter of the scratch data. The slowest
searches answer in under 200 ms in process instead of up to 800, and a search
over many copies or look-alike sessions is no longer quadratic, a slowdown
0.23.0 made worse. MiniMax Code is the forty-third harness, a directory tree
can be named as one project in ~/.config/deja/projects, and
deja search --sort date lists the newest match first. A friction wall that
was fixed leaves the session-start block. deja secrets --scrub
no longer breaks the transcripts it rewrites. The index is rebuilt once on
upgrade.
Added
- MiniMax Code: sessions under ~/.minimax/v2/sessions are indexed with the
person's own words rather than the runtime's reminders, deja resume prints
mcode --session <id>, and deja install mcode / mcode-auto write the MCP
entry and a hook plugin. From @yangala (#5415, #5593).
- ~/.config/deja/projects names a directory tree as one project, one
<path> = <name> per line. Every checkout and worktree under a listed path
is indexed under that name, and the hooks and recall standing anywhere in it
scope to all of them. Editing the file renames nothing already indexed:
deja index and deja doctor say a rebuild is due, deja index --rebuild
renames the sessions whose transcripts are still on disk, and sessions
indexed before the file existed still match from their own checkout until
then. The exclude file wins over an alias, so a repository excluded by its
own name stays out. From @Maweill (#5097, #5373).
- deja search --sort date lists the newest match first, in the text and in
--json, and ^s in the search screen turns the list newest first under
day headings and back. On a common word the page is the newest of the whole
match, not the newest of the best-ranked thousand (#5577, #5587).
- Guides for deleting Antigravity and Junie history. From @notsubash (#5604)
and @Kasa-Harendra (#5624).
- A friction wall whose cause was fixed no longer stays in the session-start
block for good. It drops out after 30 days without a hit while its projects
keep getting new sessions, and deja friction --settle <id> takes it out at
once, using the id each row of deja friction now prints. A session started
after the settle that hits it again brings it back; --unsettle undoes it.
Reported by @SmoothSailingMusic (#5628, #5631).
Changed
- A cold build reads each transcript line once instead of handing it to six
readers that each decoded it again, and checks tool output for known errors
in one pass per line: 60 s instead of 87 s and 353 CPU-seconds instead of
551 on 40,000 sessions (#5586). It also keys messages without allocating a
string per word, which halves the indexing phase: 9.3 s to 4.2 s on a
12,000-session Codex store, and the whole build from 273 to 215
CPU-seconds (#5567).
- A cold build peaks at half the memory: 4.7 GB instead of 9.4 GB on a
40,000-session store. The message count and the rebuild's dedupe set key on
a hash instead of the text, and a full build runs the collector at GOGC=25
unless GOGC or GOMEMLIMIT is set (#5498). A store under 20,000 sessions no
longer holds every session's words at once to count which words go
together: a 12,000-session Codex store peaks at 2.4 GB instead of 4.0 GB
(#5533).
- Redacting secrets during a build takes 17x less CPU with the same output: on
a 12,000-session Codex store the cold build went from 109 s to 45 s wall and
904 s to 285 s of CPU (#5512).
- A cold build derives each session's row on every core instead of in the
write loop: 189-202 s to 157-169 s on a 40,000-session store (#5524).
- A cold build writes a quarter of the scratch data it did, so a busy disk
no longer stalls it: 2.47 GB to 0.59 GB on a 12,000-session Codex store, and
indexing messages took 15-20 s instead of 32-35 s with the dis |
| 0.23.0 | ২১ অক্টোবর, ২০২৬ | — | ৬৪-বিট ZIPARM64 ZIP রিলিজ নোটBig stores are cheap to keep up to date. A pass that replaces a few sessions
appends their records instead of writing the whole log again and reads only
what changed: on a 40,000-session store 20 rewritten transcripts take 1.7 s
instead of 24 s, and peak memory drops from 7 GB to under 1 GB. A search for a
word most sessions hold answers in about a second instead of 24. Text taken
out of a transcript leaves the index on the next pass. For busy machines there
are DEJA_NO_AUTO_INDEX and DEJA_SEARCH_ONLY, and deja index exits 3 on a
partial run. Sub-agents are sessions of their own in every reader that marks
one, forks no longer take credit for what they copied, and recalled history
can no longer run a command in opencode or end a dsh turn. The index is rebuilt
once on upgrade.
A search for a word most sessions hold no longer reads all of them to show a page. Past 1,000 matches it ranks them first from the postings and the manifest, then reads the 1,000 that can reach the page and 200 more that check its length estimate; the total still counts every match, and --all scores every one as before. On a 40,000-session store a word in every session takes 1.1 s and 370 MB instead of 24 s and 2.6 GB, and MCP recall 2.5 s instead of 30 s (#5467).
The first index pass after a full build that rewrites, deletes or renames transcripts no longer reads the whole record log for the command-failure table: on a 40,000-session store, 20 rewritten transcripts take 4.0 s instead of 21 s, and the build leaves the table's state for that pass to start from (#5465). Renaming a transcript that shares its session with another file reads the session again only when the rename moves it past another of its files; 20 renames on the same store take 3.2 s instead of 20 s (#5466).
deja --re anchors ^ and $ at each line, as grep does. They anchored the whole message, so ^panic: missed a panic printed after any other tool output (#5448).
deja embed no longer sends a whole Cursor, Continue or Cline session again each time it grows. Those harnesses date unstamped turns from the file's modification time, and the vector identity held the time; it now holds only the session, role and text, so a session grown by one exchange embeds 2 records instead of every one. A version 2 sidecar is rekeyed on the next run without embedding again (#4976).
A search excerpt keeps the line that matched when it looks like tool noise. Searching assignment to entry in nil map showed the stack frames of a Go test panic and dropped the panic: line itself; panic:, goroutine N, npm ERR! and numbered lines are still left out when they do not hold the match (#5456). A --re search that finds nothing suggests a looser pattern, dropping ^/$, or plain words, instead of "try fewer words or --re" (#5457).
deja sync import also leaves out a peer's records for a store DEJA_EXCLUDE_HARNESSES (or a harness: line) excludes and for a project the policy ignore rule covers, and says how many; a relay no longer sends an excluded store's sessions on (#5435). The sync-timer unit carries the DEJA_* and XDG_* settings of the shell it was installed from, so a timer run syncs into the same index under the same switches (#5436).
A dsh turn no longer fails when recalled history contains {{...}}. dsh read deja's project digest and recall as prompt templates, so a past session quoting {{cwd}} ended every new turn with unknown prompt variable before the model was called; both contexts now pass interpolate: false and split the braces ({ {cwd} }), which dsh before 0.2.1-alpha.2 needs, in the npm plugin and in deja install dsh-auto (#5421).
deja sync holds a peer's records to this machine's switches: DEJA_INDEX_TOOL_OUTPUT=0, DEJA_INDEX_COMMANDS=0, DEJA_INDEX_PATHS=0, DEJA_INDEX_EDITS=0, DEJA_INDEX_WRITES=0 and DEJA_INCLUDE_SUBAGENTS=0 leave the same records out of an import as out of a local read, and the import says how many (#5425).
Recalled history can no longer make opencode run a command or attach a file. opencode expa |
| 0.22.2 | ১৭ অক্টোবর, ২০২৬ | — | ৬৪-বিট ZIPARM64 ZIP রিলিজ নোটdeja now reads Windsurf / Devin Desktop: Cascade's encrypted conversation
files are decrypted, authenticated and indexed, and deja install windsurf
adds the MCP server, a global rule, the skill and a /deja workflow. That
makes 42 harnesses. Grok Build installs the plugin from this repository's own
marketplace, and a Spec Kit extension ships with each release. The person sees
more of what deja did: the first session names an error the machine keeps
hitting, the weekly note names the session agents used, and dsh, Hermes,
OpenClaw and Gemini show deja's line where the person reads it. Kimi Code and
Qwen Code edit calls are pinned by fixtures from @beiryu.
deja delete and D in the TUI erase a session from its agent and from
deja after asking. Claude Code sessions whose transcript is gone come back as
their prompts from history.jsonl, and without zstd a compressed rollout no
longer makes every search rewrite the index.
Changed
- deja's lines for the person fit on one line each, and a session start shows the recall receipt plus at most one once-only note (the built note, what changed, the week note, the GitHub line), so a fresh install no longer opens with four lines. The receipt drops its byte count and the docs line folds into the built note. What the model receives is unchanged.
Added
- DEJA_THEME=dracula paints the interactive screen in the Dracula palette, for terminals themed that way. light and dark work as before, and a name deja does not know still falls back to the terminal background. From @demrom (#5106).
- deja delete <id> and D in the TUI erase a session from its agent and from deja's index, after asking; there is no undo. --dry-run lists the files. Claude Code, Codex, Cursor CLI, Gemini CLI, Qwen Code, Copilot CLI, Cline CLI, Kimi Code, Grok, dsh, pi, Senpi, OpenClaw and Antigravity are removed as files, opencode through opencode session delete. Running sessions, shared stores and unchecked agents are refused.
- A guide on deleting Copilot CLI session history: find the session by the id in session.start, not the directory name, and what copilot --resume loses. From @beiryu (#4965).
- A guide on deleting Qwen Code chat history: the chat file, its sub-agent logs, and what qwen -r loses. From @beiryu (#4966).
- Claude Code sessions whose transcript is gone come back as their prompts. ~/.claude/history.jsonl keeps every typed prompt and paste with its session id after the cleanup deletes the transcript, so those sessions are searchable again, filed under the directory they ran in. Only the prompts: deja show says so, and deja resume refuses one. A session with its transcript on disk, or one deja kept after it was deleted, is left to the transcript. DEJA_CLAUDE_HISTORY_FILE moves the file (#5046).
- The guide on deleting old Claude Code sessions in Chinese, with the same commands and numbers: 368 of 1,320 files are older than 30 days and hold 4% of the bytes, while the ten largest hold 86%. From @beiryu (#4970).
- The Claude Code and Cursor memory guides in Chinese, with the same commands and numbers. From @Quartex246 (#5019, #5020).
- The Codex CLI history guide in Chinese: where the rollouts live, why a plain grep stops seeing sessions older than a week, the jq and sqlite3 recipes, and search and SSH sync. From @ursasi (#5085).
- Five more guide pages in Chinese, with their commands and paths kept verbatim: deleting Codex sessions, deleting Cursor chats, Codex resume and its two errors, the Claude Code "No conversation found with session ID", and the full context window with its measured 77% / 0.2%. From @ursasi (#5080, #5081, #5082, #5083, #5084).
- Shell completion for deja recall: --project, --harness with the harness names, and --limit in bash, zsh, fish and PowerShell, where it used to offer search flags recall refuses. zsh's command list now offers recall too. From @orshih6 (#5015).
- A Spec Kit extension: /speckit.deja-vu.recall searches past agent sessions for the current feature's spec and plan and reports what |
| 0.22.1 | ১২ অক্টোবর, ২০২৬ | — | ৬৪-বিট ZIPARM64 ZIP রিলিজ নোটReading a session back now shows the code it changed, each edit as the lines
it removed and added, for Claude Code, Codex and every harness whose
transcript holds its edit calls. A Codex session opens in the ChatGPT desktop
app with deja resume <id> --app, and the screen gets find in a session,
filters in the box and cards that lead with the question. Session start takes
0.38 s instead of 1.46 s and the per-prompt hook 0.59 s instead of 1.65 s on a
19k-session index, and an opencode 2.x store no longer stalls a new session's
first request. Secrets that slipped past redaction are masked, and the index
holds up under crashes and concurrent use. The index version is now 70, so the
store rebuilds once on the first run after upgrading.
Added
- Reading a session back shows the code it changed, each edit as the lines it removed and added. MCP recall_context and the session resource put it ahead of the conversation, deja ctx after the digest. Drafts the session rewrote are folded into their final form, the project's code comes before its tests, and the agent's reproduction scripts and notes are left out. On 48 SWE-ContextBench tasks the session that fixed the same code used to arrive with none of its fix; now 14 show most of it. Read from the transcript when asked, so the index stays the same size and keeps the written side as hashes. Claude Code, Codex and any harness whose transcript holds its edit calls as JSON, one session per file (#4935, #4950, #4955).
- deja resume <id> --app opens a Codex CLI session in the ChatGPT desktop app on macOS and Windows, and the screen's continue picker offers the app first for a Codex session (#4907).
- The screen's cards lead with the question asked, the home list is grouped by day, and dates count calendar days. The preview shows how the session went, turn by turn, with the commands and the files it edited. In the reader / finds a word in the session, n and N step through the matches, ] and [ jump between the turns you asked, and t unfolds long messages. The box takes filters: an agent with a colon (codex:), today, yesterday, week, month and in:<project>. A search that finds nothing names the other projects that have it, or the spelling your history uses. The Kept tab is now Deleted, headed "Deleted by their agent, kept by deja", and tab cycles this project, all projects and Deleted. The continue picker preselects and marks the agent used last and folds agents not installed into one line. ^k also copies the session id or project path and forgets a session, after asking, and ? lists every key (#4911).
Changed
- Reading one session back no longer walks the whole record log: a table beside it says where each session's records are, and the first line of each repeated error is kept at build time. On a 19k-session index session start takes 0.38 s instead of 1.46 s, MCP recall 0.95 s instead of 1.29 s and deja show 17% less, for 0.33% more index. A full rebuild there takes about 3 s longer to write the error lines (#4940).
- Hooks answer faster on a large history: on a 19k-session index the per-prompt hook takes 0.59 s instead of 1.65 s and a cold session start 0.74 s instead of 1.42 s, with the same output. Worktrees are listed once per hook instead of once per name lookup, projects are scoped once per name, long sessions are scanned on all cores, and repeated errors are read back in one pass over the record log. The session-start hook runs git status without taking the repository's optional lock (#4934).
- Switching tabs on the screen takes 7 ms instead of 46 for this project and 21 instead of 74 for all projects on 27k sessions, and Deleted is instant: the count of every session is read again only after the index changes, and the newest 60 are picked without sorting all of them (#4915).
- The screen's first run shows the index being built: the stage, a bar, each agent ticking in with its session count and the seconds so far, and it lets you in once the newest sessions are searchable. The first open a |
| 0.22.0 | ৯ অক্টোবর, ২০২৬ | — | ৬৪-বিট ZIPARM64 ZIP রিলিজ নোটBare deja at a terminal now opens a search screen over every agent's
history: type to search, read a session at the hit, resume it, or carry it
into another agent. It opens on the sessions behind your uncommitted change.
Junie and JetBrains AI Assistant are read, deja rules sync writes to 42
agents instead of 8, and recall called by an agent puts the project it works
in first, which took a planted answer from 20 to 43 of 56 real queries. A
transcript its agent deleted no longer makes every search answer stale. The
index version is now 69, so the store rebuilds once on the first run after
upgrading.
Added
- Bare deja at a terminal opens a search screen over every agent's history. Type to search, read a session at the hit, resume it, or carry it into another agent with ctrl-o. It opens on the sessions behind your uncommitted change, and on a first run it builds the index behind the screen instead of before it. Pipes, TERM=dumb and DEJA_TUI=0 keep the text summary.
- The first run of a new version says once what it brings: the top three changes in the terminal, one line in the session-start note.
- An empty search in a terminal shows the surprised cat, and the first search that finds something shows the ready one, once per index.
- An interactive command says, at most once a day, when a newer deja release is out, with the upgrade command for whatever installed it (deja update, brew, npm, scoop). The look at GitHub runs in a detached process and the next interactive command prints what it found, so no command waits on the network. Hooks, the MCP server, pipes, dev builds, deja update, deja doctor and deja version never start it, and DEJA_OFFLINE=1 or DEJA_NO_UPDATE_NOTICE=1 turns it off with no request made (#4622).
- After a search that finds something, in a terminal, deja shows one short tip at most once a day, naming a command you may not have met: blame, fix, how or view, in rotation. It goes to stderr and never appears in a pipe, a script, a hook or --json (#4629).
- Kimi Code and Kiro get the line about a file before an edit, and CodeWhale the fix pair for a failed command. None of them shows the model what that hook prints, so the line waits for the next hook that does: the next prompt on Kimi and Kiro, the next tool call or message on CodeWhale. CodeWhale also hands over the pre-tool line of a call that failed to run, which it sends back without it.
- deja resume <id> --write-back puts a session the agent deleted back where the agent can reopen it, rebuilt from deja's index in the agent's own format. The file holds the user and assistant turns; tool calls and their output stay in deja, which keeps them and reads only what the agent appends later. Works for Claude Code, Codex, Gemini CLI, Qwen Code, pi, omp, gjc, Kimchi, Senpi, Kimi, Copilot CLI, CodeBuddy, Command Code, CodeWhale, Cline, OpenClaw, Continue, Grok Build and Kiro CLI, each checked by resuming the written file in the real CLI. For agents that keep sessions in a database, or whose format needs something the index lacks, it says what is missing. It never replaces a file and writes only inside the agent's store (#4617).
- aider edits record both sides, read from the SEARCH/REPLACE block, unified diff or patch in the reply once aider says it applied them, so deja restore and line-level deja blame answer for aider sessions (#595).
- VS Code Copilot Chat edits record the replaced text, read from the edit call's arguments, so deja restore and line-level deja blame answer for them. On one machine's store that is 638 spans where there were none. The extension's agent transcripts record both sides of an edit and its file (#595).
- Junie and JetBrains AI Assistant are read. Junie gets junie and junie-auto (hooks, MCP, skill, /deja, rules, resume); AI Assistant gets jetbrains, the MCP server in ~/.ai/mcp/mcp.json. Agent chats that run Junie, Claude, Codex or another agent with its own store are left to that store (#3104).
- deja rules sync writes to 42 agents, up from 8. |
| 0.21.7 | ৬ অক্টোবর, ২০২৬ | — | ৬৪-বিট ZIPARM64 ZIP রিলিজ নোটAgents now look up past decisions before they change code, config, a
dependency or a schedule, not only when asked about history. On Claude Code
that took a test set from 0/10 to 10/10. Recall got more reliable where it was
quietly failing: it no longer answers empty when the only full match is the
agent's own session (23 of 255 real calls did), and a file path finds the rule
written for its directory. A first build on a store of long sessions answers
at 19 s instead of 44 s. New harnesses: TRAE CLI and TRAE IDE, CodeBuddy Code,
WorkBuddy and Muse Code. The index version is now 67, so the store rebuilds
once on the first run after upgrading.
Added
- TRAE CLI 2.0 sessions are read from ~/.trae/cli (TRAE_HOME, DEJA_TRAE_ROOT) as harness trae, with their own doctor row and traex resume. Prompts come only from TRAE's user events, so the runtime context it writes under the user role is not indexed as something you said (#4680).
- CodeBuddy Code sessions are read from ~/.codebuddy/projects, WorkBuddy's from ~/.workbuddy/projects, and Muse Code's from ~/.local/share/muse/sessions; deja install codebuddy and codebuddy-auto wire recall into CodeBuddy (#4681, #4679).
- deja install workbuddy and workbuddy-auto wire recall into WorkBuddy, whose agent reads its config from the WorkBuddy home rather than ~/.codebuddy; a new MCP file there is the app's own mcp.json (#4720).
- deja install trae adds the MCP server to TRAE CLI's traecli.toml, and trae-auto adds the session-start, per-prompt, tool and compaction hooks to its hooks.json; TRAE runs them once you trust them at start-up (#4702).
- deja install trae-ide wires TRAE IDE: the MCP server in User/mcp.json and the skill in ~/.trae/skills (Trae CN and ~/.trae-cn for the CN build; with both builds installed, each gets its own). trae-ide-auto adds hooks to ~/.trae/hooks.json, which TRAE IDE runs only after you turn hooks on in Settings > Hooks; install and doctor both say so. Its chats are encrypted and not indexed (#4731).
Changed
- A first build on a store of long sessions answers sooner: the early slice of newest sessions stops at 20,000 messages as well as 200 sessions. On 3,871 sessions and 370k messages, recall comes online at 19 s instead of 44 s and the build ends at 45 s instead of 64 s (#4768).
- Agents call deja before they change code, config, a dependency or a schedule, not only when asked about past work. The line is in the MCP server instructions, every skill and guidance file, and the npm plugins' deja_recall. On Claude Code the instructions also say how to load the deferred tool. On 10 synthetic change tasks with a recorded decision, Opus on Claude Code went from 0/10 to 10/10 (#4760).
Fixed
- Recall no longer comes back empty when the only sessions holding every word of the question are filtered out, most often the agent's own live session. It falls through to the ranking. Replayed on 255 real recall calls, 23 had come back empty this way (#4766).
- Recall by file path finds what was settled for the file's directory: cmd/reconcile/match.go used to miss a session that set the rule for cmd/reconcile, or rank it under one sharing a single word. Those sessions now come first, and recall says they are about the directory rather than "No session is about this" (#4762). They stay below a session that already answers two of the query's other words (#4764).
- The session-start note about a limit hit in another agent fires on Claude Code's real wording ("You've hit your session limit", "You've hit your limit", "API Error: 529 Overloaded"), and reads the newest session of this project from another harness; a parallel session anywhere on the machine used to hide it (#4758).
- The per-prompt hook searches on the question even when an instruction comes before it on the same line ("without reading any files: what jitter constant…"); the instruction used to take all six search terms and the hook stayed silent (#4751).
- Kilo CLI: a store where a few sessions went through Kilo's /api/sessi |
| 0.21.6 | ৪ অক্টোবর, ২০২৬ | — | ৬৪-বিট ZIPARM64 ZIP রিলিজ নোটThis release is mostly about what reaches the model, and when. After a
compaction, opencode, Kilo, Hermes and Gemini CLI now get the recovery packet
Claude Code already had, and the packet carries the user's standing
instructions and first request. deja handoff builds from the end of a
session instead of the start, and agents can fetch it over MCP. Hermes and
Copilot CLI get the after-failure fix line. The per-prompt hooks send less:
spawned agents get a one-line pointer, the line before a Bash command is now
opt-in with DEJA_COMMAND_HINTS=on, and the file line before an edit speaks
only when it has something about the file. Telegram bot tokens are redacted,
and a secret ending in punctuation is masked whole. The index version is now
64, so the store rebuilds once on the first run after upgrading.
Added
- Compaction recovery packet for opencode, Kilo, Hermes and Gemini CLI: after a compaction the next turn gets the commands, errors and state from before it, as in Claude Code. Run the matching deja install <client>-auto again to update the plugin. Also fixes a Gemini parser bug where a resume dropped earlier commands (#4641).
- The compaction packet carries the user's standing instructions from any turn ("never", "do not", "always", "use X instead of Y", "не трогай" and the like, up to 8 lines), and the session's first request when the latest one is just a step. On 60 days of real transcripts, 276 of 2,486 sessions get rules (#4656).
- deja handoff takes its body from the compaction packet, so conclusions come from the end of the session (median position 0.88-1.00 on 12 real sessions, was 0.00-0.37). The MCP tool has a handoff mode, and a session whose first prompt asks to continue another one by id or harness name gets the packet (#4674).
- After a failed terminal command, Hermes and Copilot CLI get the fix this machine found for the same error before, through Hermes' transform_tool_result and a Copilot postToolUse hook. Run deja install hermes-auto or copilot-auto again to get it (#4660).
- deja doctor follows every hook, plugin and MCP entry to the deja binary it runs and prints one row per binary older than the one running doctor, with the update command (#4658).
- show, resume and handoff accept a Claude Code remote-control id (session_01…) or its claude.ai/code URL (#4668).
Changed
- The line before a Bash command is off unless DEJA_COMMAND_HINTS=on, and a spawned agent gets the one-line pointer instead of the full digest. On 200 real Task prompts that went from 257,769 B to 67,217 B (#4644).
- The file line before an edit only speaks when it carries something about the file: a note or decision naming it or its directory, or a command that passed there. On 480 replayed edits, 20 lines (7,290 B) went to 2 (659 B) (#4646).
- Full per-prompt digests are capped at four per session, later matches get the pointer line. On 120 real prompts, 129.8 KB to 50.5 KB injected (#4637).
- The opencode session digest goes after opencode's system prompt, so the provider cache reuses the base prompt. Uncached input on the first request went from 3,988 to 1,941 tokens (median) (#4650).
- MCP calls run in parallel (up to 4 read the index at once), honour cancel, and a call still running at 20 s (DEJA_MCP_DEADLINE) returns a note instead of a client timeout. p95 on batches of 4 went from 11.4 s to 6.3 s (#4639).
- Claude Code compaction summaries and Gemini state snapshots are filed under the summary role, as opencode and Hermes already were, so recall stops quoting them as the user's words (#4678).
- Install resolves far fewer paths: a 39-target install goes from 2,435 to 268 symlink walks, uninstall from 857 to 312 (#4635).
Fixed
- Telegram bot tokens are redacted and named in deja secrets. On a rebuilt real store, raw tokens in the index went from 11 copies to 0. The Russian filler rule no longer re-masks an earlier marker into [redacted:[redacted:credential]] (#4676).
- A key-value secret that ends in punctuation is masked whole. --passwor |
| 0.21.5 | ২ অক্টোবর, ২০২৬ | — | ৬৪-বিট ZIPARM64 ZIP রিলিজ নোটMost of this release came from two rounds of running every supported harness
live, about 40 clients, and fixing what deja got wrong in each. Sessions it
could not read are indexed, tool calls and exit codes it dropped are kept,
deja resume prints a command that reopens the session, install and uninstall
stop breaking client configs, and a session no longer gets its own work back
from recall. copilot-auto, kilocode-auto and kiro-auto start those
clients' sessions with the project digest, and deepseek-auto gives dsh the
notes on reads, edits and failed commands other harnesses get. Kimi /btw
side questions and dsh 2.0.15's v4 logs are indexed. deja index and
deja doctor warn about sessions a harness's own cleanup will delete this
week (#4604), and an interrupted deja embed keeps what it already computed
(#4568). Release checksums are now signed as a sigstore bundle, checked with
cosign verify-blob --bundle checksums.txt.sigstore.json.
Added
- deja install copilot-auto adds a sessionStart hook to Copilot CLI, so a new or resumed session starts with the project digest, as in Claude Code and Gemini CLI. The hook goes under hooks in ~/.copilot/settings.json (or config.json while your own hooks are still there, since Copilot moves them on start), and uninstall gives the file back byte for byte. It also wires preMcpToolCall and sessionEnd, so MCP recall leaves out the session asking however long it runs (#4231, #4551).
- deja install kilocode-auto starts each Kilo CLI session with the project digest. Kilo kept opencode's plugin loader, so it writes opencode's plugin, in the 1.x shape Kilo loads, into ~/.config/kilo/plugins (#4398).
- deja install kiro-auto writes a deja agent for kiro-cli whose agentSpawn hook puts the project digest in front of the model and whose userPromptSubmit hook adds recall for each prompt. Start it with kiro-cli chat --agent deja, or make it the default with kiro-cli agent set-default deja. deja leaves your default agent alone (#4304).
- deja install deepseek-auto gives dsh the point-of-action notes: after a read, edit or write the model hears what past sessions settled about that file, and after a failed bash, the fix this machine found for the same error before. It uses dsh's tools/post-execute seam, so run the install again to get it (#4293).
- deja install grok-auto wires PostToolUse, so a Grok Build command that fails gets the earlier fix, as Claude Code and Codex do (#4499).
- deja index and deja doctor say how many sessions Claude Code, Gemini CLI or Hermes will delete with its own cleanup in the next 7 days, read from that harness's retention setting (cleanupPeriodDays, general.sessionRetention, sessions.retention_days). deja keeps them searchable after the files go. Nothing is printed when nothing is due (#4604).
- A Kimi Code /btw side question is indexed with its answer, from Kimi 0.28 through 2.x, as its own session naming the one it was asked in, without the copy of the session context the fork opens with. deja resume on it points at that session, and doctor no longer counts it as a skipped sub-agent (#4484).
- More of what clients keep is indexed: ZCode's older snapshots under ~/.zcode/v2/sessions (#4432), Cherry Studio agents that run on pi or dsh (#4342), prime-agent rlm.spawn children as sub-agents of the session that spawned them (#4407), and kiro-cli chat --no-interactive runs kept only in data.sqlite3 (#4300). DEJA_INCLUDE_SUBAGENTS=1 now takes Kimi Code and Qwen Code sub-agent logs, where it did nothing (#4483).
Changed
- Releases are signed with cosign 3 and carry checksums.txt.sigstore.json in place of checksums.txt.sig and checksums.txt.pem. Verify with cosign verify-blob --bundle checksums.txt.sigstore.json as SECURITY.md shows (#4577).
- One directory is one project whichever agent ran there. Codex, opencode, goose, Cursor, Gemini CLI, Grok, Amp, aider, Copilot Chat, Zed and others named a session in /tmp/w/my-app my-app where Claude Code says w/my-app, and Cline, Roo, Continue, Kiro |
| 0.21.4 | ২৯ সেপ্টেম্বর, ২০২৬ | — | ৬৪-বিট ZIPARM64 ZIP রিলিজ নোটOne rules file for every agent: deja rules sync copies yours into the global
rules file of each installed agent, and deja rules candidates finds the
corrections you keep repeating so your agent can suggest them as rules. On
Windows, Claude Code's hooks run again; they had been exiting 127 on every call
while doctor said they were wired, and doctor now says so. Chats deleted from
Cursor's database, or left behind when a bloated one is moved aside, stay
searchable through a full rebuild. deja also installs as a Hermes memory
provider straight from Hermes, and from winget on Windows.
Added
- deja rules keeps the rules you give your agents in one file, ~/.config/deja/rules.md, and deja rules sync copies it as a marked block into the global rules file of each installed agent that has one deja knows: Claude Code, Codex, opencode, Gemini, Qwen, Kimi, Grok and goose. A rule given to one agent used to stay there; on the machine this was measured on, seven were given again in other agents. doctor names an agent whose copy is behind, and uninstall takes the block out.
- deja rules candidates lists the turns where you corrected an agent, and the deja skill tells your agent how to group them into suggested rules, with the turns behind each one, and to write only the ones you pick. deja leaves the grouping to the agent because it measured badly without one: three word-based groupings found 0 real rules in their top 10, while a frontier model given the same list found 10 of 10. A small local model did not manage it, so this wants a strong agent.
- hermes plugins install vshulcz/deja-vu/extensions/hermes installs deja as a Hermes memory provider without deja install. It is the provider deja install hermes-auto writes, with deja taken from PATH, and a test keeps the two identical.
- On Windows, winget install vshulcz.deja-vu installs deja from the winget community repository, next to scoop install deja-vu.
Fixed
- A full rebuild keeps the chats Cursor deleted from state.vscdb, and the ones left behind when a bloated database is moved aside and Cursor starts over. The incremental pass already kept them; a rebuild read the database and wrote only what is in it now, so they went at the next content-version bump. The same holds for the other database-backed stores (#4128).
- On Windows, Claude Code's hooks run again. deja wrote the binary's path with backslashes, Claude Code hands hook commands to Git Bash, and bash strips unquoted backslashes, so every hook exited 127 without a word (#4116). Hook commands now name the path with forward slashes, which bash, cmd.exe and PowerShell all run (a path with a space stays double-quoted, as before). Existing configs are rewritten on the first run after upgrading.
- deja doctor says when Claude Code's hooks cannot start, not only when their binary is gone. It asks the shell Claude Code runs hooks in (Git Bash on Windows) for the binary as the settings file spells it, the check that would have caught #4116's 127 on every hook while doctor printed wired (#4125).
- deja warmup and deja version refuse arguments instead of ignoring them. deja warmup --rebuild ran the ordinary incremental build and exited 0; it now fails and names deja index --rebuild, which is where the rebuild lives (#4109, contributed by @Sharawey74).
- The OpenClaw plugin reaches ClawHub with each release again. ClawHub mints a publish token only for a workflow_dispatch run and refused every tag push since 0.21.0, so the tag run now dispatches release.yml with the tag and that run publishes.
Changelog
Features
- feat(hermes): the memory provider installs with hermes plugins install, from extensions/hermes (#4122)
- feat(rules): deja rules candidates lists your corrections, and the skill groups them into rules you pick (#4093)
- feat: deja rules copies one rules file into every installed agent's global rules file (#4089)
Fixes
- fix(doctor): say when the shell cannot start Claude Code's hooks, not only when the binary is gone (#4127)
- fix(ind |
| 0.21.0 | ২৭ সেপ্টেম্বর, ২০২৬ | — | ৬৪-বিট ZIPARM64 ZIP |