v0.19.3 #3056
v0.19.3
#3056
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
A release about the moment memory is worth most: the turn a command fails, the
turn after a compaction, the first prompt of a session. Four harnesses were
wired for less than they can take, and the measurements that found it are in
each line.
Added
UserPromptSubmitcarries the same payload Claude sends, sohook-promptreads it unchanged; measured on codex 0.149.0, the answer reached the model in
every request with the event wired and in none without it. (feat(codex): recall the prompt itself, not just the session digest #3041)
instead of treating it as already shown. (feat(codex): let recall serve again what compaction threw away #3044)
AfterToolhookreturns is appended to the tool result, which is exactly where the repair
belongs. Its shell tool is
run_shell_commandand its output arrives asllmContentinside a frame whoseOutput:marker stopped a build failurereading as an error — all three are handled.
BeforeToolis deliberately notwired: it fires, and what it returns never reaches the model. (feat(gemini): the repair arrives where the command failed #3049)
qwen-code 0.20.0
SessionStartis consumed, where an older build ignored it,and
PostToolUseis too: measured against a stub endpoint, 0 of 2 requestscarried a deja block before and 2 of 2 after. (feat(qwen): the digest and the repair both reach the model #3050)
onto its own and reads
~/.claude/settings.json, so it has been runningdeja's pre-tool, post-tool and pre-compact hooks for anyone who also has
Claude Code and none of them for anyone who does not; its own
hooks.jsonnow carries the same three. (feat(cursor): recall at the moment of the action, not only at the start #3052)
qwen both ask an MCP server for
prompts/liston startup and put what comesback behind a slash; deja answered
-32601. It now offers one command thatruns the recall and hands back the result. (feat(mcp): a slash command for the harnesses deja ships no command file into #3051)
spawned agent, and its npm package ships the same channels the installed
plugin has. (feat(opencode): recall the repair when a command fails #3033, fix(opencode): a spawned agent gets its memory, not a quoted string #3027, feat(opencode): bring the npm package up to the installed plugin's channels #3036)
deja sync export --include-importedhands over what arrived from othermachines, under the names it had where the work happened, so a machine in the
middle of a chain is no longer a dead end and a migration off it carries
everything. Off by default; an export that holds work back now says so
instead of reporting nothing changed. (Synched data cannot be re-exported to a 3rd machine #2962, feat(sync): a machine in the middle of a chain can hand over what it holds #3053)
deja install hermes-autowrites a Hermes memory provider (deja-memory):hermes memory setuplists it beside mem0 and supermemory, and withmemory.provider: deja-memorythe model gets deja's recall before each turnplus
deja_recall,deja_fixanddeja_blameas tools. (Hermes (240k★) picks one memory provider at setup, and deja is not on the menu #3035)~/.local/share/amp/threadsor$XDG_DATA_HOME;DEJA_AMP_ROOToverrides. (parser: Amp (Sourcegraph) thread history #1714, feat(sources): add Amp thread parser #2986)transcripts older than
cleanupPeriodDays(30 by default), and the nextincremental pass used to drop the session with the file. A file that is gone
while its store is still there is now kept and stays searchable;
deja forgetremains the way to drop one on purpose. A store that vanishes wholeis dropped as before, and a full
deja index --rebuildstill reads only whatis on disk. (Claude Code deletes transcripts after 30 days, and the next reindex deletes them from deja too #2970)
deja install --autoopens with the error this machine keepshitting — "this machine has hit
command not found: timeoutin 18 sessions"— above the recent-sessions list. The same rule and threshold as
friction;nothing is claimed when nothing recurs. (the install proof lists three recent sessions; the thing worth showing is the error this machine keeps hitting #2966)
DEJA_TRACE=1names where a slow search spent its time — the lock, the storewalk, the ingest — on the path every CLI search takes, not only in the
session-start hook. (searching the rest of memory waits on ingesting the long session still being written #3021, feat(search): DEJA_TRACE names where a slow search spent its time #3054)
than by the whole transcript. (feat(search): on a large store, rank a session by the turn that holds the fact #3017)
deja statsgives the card a way onto a social post. (feat(stats): give the card a way onto a social post #2959)inside the monorepo. (feat(dsh): a root manifest so the catalogs see the plugin in the monorepo #2981)
plugin.jsonat the root the layout directoriesread, and the keywords the directory search needs. (plugin(claude): a plugin.json at the plugin root, the layout directories read #3011, plugin(claude): keywords for the directory search #3005)
Changed
The index format moved: this release rebuilds the index once on first run.
Arabic, Hebrew, Thai and the Indic scripts are tokenized as words rather than
as single letters, Thai gets the bigrams the other unspaced scripts have,
grammar-only CJK bigrams are no longer stored, and a posting's session id is
written as a delta — measured at 5.9% to 16.1% smaller
buckets/across fourstores.
A read-only index directory needs its index replaced by hand. deja serves
a directory it cannot lock without a version check, by design, so it cannot
rebuild one in place: an index written by an earlier deja inside a read-only
image will make
deja searchexit withindex written by another version of dejauntil the directory is rebuilt somewhere writable and copied in. Thealternative was reading old posting bytes under the new rule, which returns
session ids that are wrong without saying so.
Fixed
against, the candidate pool was three deep and a digest serves three, so
every candidate had just been served and the novelty ordering had nothing to
promote — and the builder sorted by recency again on the way past. Measured on
a seeded store of 300 sessions, five consecutive starts named 3 distinct
sessions before and 12 after, at 1 ms of a 22 ms session start. (fix(recall): a session start stops repeating the last one #3048)
SessionStartagain with sourcecompactafter everycompaction, which the matcher
startup|resumenever matched — onecodex execrun compacted 12 times and the agent came out of each with nothing.2 of 13 requests carried a recall block before, 13 of 13 after. Install now
rewrites the matcher on an entry it owns, so the fix reaches machines that
already have one. (fix(codex): the digest comes back after a compaction #3046)
Shell,the output arrives under
tool_outputas a JSON document inside a JSONstring, and
cwdis empty with the project named inworkspace_roots. dejaread none of the three, so the fix pair had no error to match and recall
answered for whatever directory the hook was spawned in. (feat(cursor): recall at the moment of the action, not only at the start #3052)
started, one failed call no longer costs the session its memory, and a query
naming one of deja's own flags reaches the store. (fix(opencode): the plugin asks from the project, not from wherever opencode started #3028, fix(opencode): one failed call no longer costs the session its memory #3024, fix(opencode): a query that names one of deja's flags reaches the store #3014)
/dejaruns a search instead of deja's first word, across the harnessesthat ship the command. (fix(harness): every /deja runs a search, not deja's first word #3020, fix(dsh): /deja searches for a word instead of running the command it names #2988, fix(goose): /deja takes a query #2958)
than only under the wrapper, puts the session-start recall where goose reads
it, and indexes the command it ran with what the command printed. (fix(goose): honour the recall kill switch #2980,
fix(goose): refresh the recall on every prompt, not only under the wrapper #2963, fix(goose): put the session-start recall where goose reads it #2954, fix(goose): index the command it ran and what the command printed #2951)
agents/<agent>/agent/openclaw-agent.sqlite; deja read only the JSONL filesit left behind, so nothing written since the upgrade reached the index. The
store is read now, including the sessions an earlier reset window kept.
(OpenClaw moved live sessions into SQLite; deja still reads only the JSONL files, so new sessions never enter the index #2994)
just,taskandmiseare recorded, so the pre-tool hook can speak aboutthe commands a repo actually runs. (fix(sources): record just, task and mise so the pre-tool hook can speak about them #2999)
(fix(hook): the environment block stops blaming a missing tool for every wall #3012)
whole profile. (fix(dsh): a duplicate registration stands down instead of failing the profile #2990)
deja installends the flags before the query for cline, pi and hermes too.(fix(install): cline, pi and hermes end the flags before the query too #3015)
cause. (fix(doctor): the subagent row names the variable as the remedy, not the cause #3008)
(fix(release): keep plugin tags out of goreleaser's version templates #3013)
Changelog
Features
Fixes
Performance
Documentation
Other
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.3 brew install deja-vuThis discussion was created from the release v0.19.3.
All reactions