github vshulcz/deja-vu v0.19.1

latest releases: nightly, v0.22.1, v0.22.0...
one month ago

A patch release about reach and honesty. Memory now arrives where an agent
actually works — inside the subagents that do the reviewing and the hunting —
and several surfaces stopped claiming more than they knew.

Added

  • A spawned agent gets the memory its parent has. Subagents receive no session
    start and send no user prompt, so nothing deja injected ever reached them:
    289 of 328 sessions on the store this was measured against were subagents,
    and 1% of them saw a recall. PreToolUse rewrites the instructions the
    parent wrote, which is the one place a subagent can still be reached. The
    same for opencode, through its plugin's tool.execute.before. (#2143, #2147)
  • The block says so when the question itself was asked before, rather than
    saying a session matched the subject. Matched on the question's terms rather
    than its wording: the exact-wording counter saw a fifth of the repeats this
    store holds, and 6.5% of substantial questions are asked again in a later
    session. (#2276)
  • A session start leads with what the project has not been told yet. (#2047)
  • A failing test is read as friction by its name. --- FAIL: TestName is the
    most common failure in a Go repository — 2,318 of 6,744 error lines here —
    and it was rejected with the summary lines that identify nothing. (#2180)
  • The policy file names the directories deja skips, so a scratch tree can be
    kept out of recall by rule rather than by hand. (#2060)

Changed

  • recall's description says what works. It asked for a single specific token
    and warned that several words are ANDed; measured over 760 real calls,
    nothing matched zero times at any query length and the longer questions came
    back with more. (#2342)
  • doctor stops reporting deliberate skips as files it could not read. The row
    said "1192 not recognised here" where 596 were subagent transcripts deja is
    written to leave alone and 452 sat in a .tmp directory. (#2345)
  • The relevance tokenisation moved to the package both index and prompt
    build on, which also took a cross-package dependency out. (#2136)

Fixed

  • A directory the trust policy says is not to be recalled is now out of reach
    everywhere. The rule was applied at one call site — the CLI's own search —
    so doctor printed "not recalled" while the per-prompt hook injected those
    sessions into every message. (#2323)
  • One rare word no longer decides which session answers. The gate that checks a
    session says the subject was given a single term, the rarest by corpus IDF,
    and a small corpus crowns ordinary nouns: the session that settled a question
    was dropped for saying "orders worker" where the question said "service". The
    block's two slots also stopped holding two copies of one answer. (#2328)
  • A cross-script CJK hit is scored on the text that matched it. It was counted
    through the fold and then scored against the surface text, where the query's
    words appear nowhere, so a record that matched twice ranked below one that
    matched once. (#2157)
  • Japanese grammar bigrams stop triggering auto-recall. The fallback dropped
    "pure grammar" through a Chinese closed class, while Japanese grammar lives in
    hiragana — and the bigram slide crosses word boundaries, so ての in すべて|の
    is not even a word. Contributed by
    @Sora-bluesky. (#2262)
  • The fix pair is held to what a remedy is: the error must stay gone for the
    rest of the session, the command must not have failed itself, and reading
    something is not fixing it — a grep for the symbol the compiler named
    satisfies "the command names what the error named" by construction. And
    deja fix's own output no longer counts as a fresh error, which had made
    asking about an error record that it happened again. (#2166, #2169, #2172,
    #2174)
  • An agent's own scratch sessions and the transcript's record of a deja call
    stay out of recall, so the tool stops answering with itself. (#2054, #2068)
  • The injection cooldown carries across agent sessions in a project, so a
    fleet of agents opened together does not re-serve one session to each.
    (#2041)
  • A whole transcript is no longer re-read to verify an append. The rewind guard
    hashed every byte before the append point on each search that saw the file
    change, which for the session being written is every search: 1.70s per call
    against a 250 MB transcript, now 0.36s. (#2154)
  • deja last, show, forget and remember complete their own flags.
    Contributed by @vaibhav8a. (#2148, #2021,
    #2027, #2028)
  • Six days of the bug hunt, 148 changes, went in behind these: the session
    start and the file line stay inside the checkout's own project rather than
    one whose name ends the same way, forget takes what it forgot out of the
    injection log, the usage log records which projects a digest was built from,
    and doctor, view and friction name the rule when a trust policy empties
    what they show. (#2351)

Changelog

Features

  • feat(hooks): give a spawned agent the memory its parent has (#2143)
  • feat(index): read a failing test as friction, by its name (#2180)
  • feat(log): record which sessions the session-start hook served (#2045)
  • feat(opencode): carry recall into a spawned agent (#2147)
  • feat(recall): lead a session start with what the project has not been told (#2047)
  • feat(recall): say when the question itself was asked before (#2276)

Fixes

  • fix(bench): give every instrument the whole firing bar (#2072)
  • fix(completion): complete --json and --from for deja last (#2148)
  • fix(completion): give deja show its own flag completions (#2021)
  • fix(completion): offer --all-matches for deja forget (#2027)
  • fix(completion): offer --tag for deja remember (#2028)
  • fix(doctor): stop reporting deliberate skips as files it could not read (#2345)
  • fix(index): a command that failed is not a fix (#2172)
  • fix(index): reading something is not fixing it (#2174)
  • fix(index): stop deja fix's own output counting as a fresh error (#2169)
  • fix(index): withhold a fix the error outlived, however much later (#2166)
  • fix(mcp): say no session is about it when nothing matched (#2076)
  • fix(policy): honour the ignore rule on every surface, not just deja search (#2323)
  • fix(recall): carry the injection cooldown across agent sessions (#2041)
  • fix(recall): stop Japanese grammar bigrams from triggering auto-recall (#2262)
  • fix(recall): stop one rare word deciding which session answers (#2328)
  • fix(search): keep an agent's own scratch sessions out of recall (#2054)
  • fix(search): score a cross-script CJK hit on the text that matched it (#2157)
  • fix(search): stop matching the transcript's record of a deja call (#2068)
  • fix: size the dedup map without summing two lengths (#2144)

Performance

  • perf(index): stop re-reading a whole transcript to verify an append (#2154)

Documentation

  • docs(index): the token counter is a lower bound, not the count (#2202)
  • docs(mcp): tell recall's caller what actually works (#2342)
  • docs: changelog for 0.19.1 (#2356)

Other

  • chore: repin the Windows manifests to the rebuilt 0.19.0 archives (#2019)
  • let the policy file name the directories deja skips (#2060)
  • put the flock helper behind a build tag (#2020)
  • refactor: move relevance tokenisation into query (#2136)
  • test(bench): ask every question again in someone else's words (#2126)
  • test(bench): make the tied arm measure the search rather than the fixture (#2338)
  • test(bench): measure the reworded question the store can actually answer (#2334)
  • test(bench492): keep the rig that measured the real store (#2124)
  • test(index): pin what keeps the mark-guard asymmetry out of the index (#2131)
  • the bug hunt's six days, into main (#2351)

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.1
brew install deja-vu

Don't miss a new deja-vu release

NewReleases is sending notifications on new releases.