Skip to content

v0.18.0

Choose a tag to compare

@github-actions github-actions released this 22 Aug 12:21
· 283 commits to main since this release
698ad18

Install

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

Changelog

Features

  • feat(bench): compare the gate's inputs with and without the answer present (#1513)
  • feat(bench): count answer words few sessions use, not any shared word (#1509)
  • feat(bench): measure whether the injected block carries the gold answer's words (#1508)
  • feat(bench): say where a recalled block lost the answer's words (#1510)
  • feat(hook): stop repeating the block, not the session it came from (#1497)
  • feat(log): record which agent session an injection went to (#1494)
  • feat(rank): fuse the two ranking views with reciprocal rank fusion (#1491)
  • feat(recall): quote what the session was about and what it settled (#1492)
  • feat(recall): take the answer that follows the mention (#1493)
  • feat(sync): a timer that keeps a machine in step without being asked (#1433)
  • feat(sync): carry the machine a memory came from (#1430)
  • feat(sync): one command for every machine, and a report that shows a sync going stale (#1432)
  • feat(zed): deja install zed (#1428)
  • feat(zed): index what a thread did, not only what it said (#1424)
  • feat(zed): record the paths the remaining file tools name (#1429)
  • feat: Zed reads the shared skill, and its skill is its command (#1526)
  • feat: admit a one-word question when the session keeps returning to that word (#1515)
  • feat: auto-recall for omp through an extension on its context event (#1525)
  • feat: carry two lines past the match in a quote, not one (#1507)
  • feat: deja resume reopens qwen sessions (#1528)
  • feat: quote 320 characters of a recalled line instead of 220 (#1505)
  • feat: quote the line after the match, not just the matched one (#1506)
  • feat: quote three lines from a session that never concludes anything (#1511)
  • feat: raise the per-prompt recall budget to 1536 bytes (#1504)
  • feat: read DeepSeek Harness sessions (#1518)
  • feat: read Grok's spawn tree instead of treating every session as unrelated (#1532)
  • feat: read omp's profile and XDG session roots, and give it a skill and a command (#1523)
  • feat: wire deja into DeepSeek Harness over MCP and give it the shared skill (#1524)

Fixes

  • fix(bench): apply the hook's own gates before measuring what a block carries (#1512)
  • fix(digest): "вывод" as a conclusion, not as program output (#1470)
  • fix(digest): a plan is not a decision (#1501)
  • fix(digest): decision markers for Russian too (#1465)
  • fix(digest): mirror three English decision markers in Russian (#1468)
  • fix(digest): read a stated outcome as a conclusion (#1478)
  • fix(hook): a word rare enough to identify something earns the memory, not a pointer (#1453)
  • fix(hook): don't recall a session that only a tool mentioned the subject in (#1487)
  • fix(hook): forget what a session was shown when its context is compacted (#1498)
  • fix(hook): lead with the session that concluded something (#1475)
  • fix(install): --auto skipped auto-recall for omp and DeepSeek Harness (#1544)
  • fix(opencode): send the session id with per-prompt recall (#1495)
  • fix(pi,openclaw): send the session id with per-prompt recall (#1496)
  • fix(prompt): a compound name with short halves is still a name (#1484)
  • fix(prompt): a hyphen inside a Russian word no longer drops it (#1459)
  • fix(prompt): an imperative names nothing to recall (#1480)
  • fix(prompt): keep short Russian subjects (#1462)
  • fix(prompt): keep three-letter acronyms, name the words that are work (#1460)
  • fix(prompt): keep two-character subjects like v3 and pr (#1472)
  • fix(recall): a full stop is not part of the word before it (#1441)
  • fix(recall): a term is a mention where a word begins (#1444)
  • fix(recall): catch the other wordings of an empty memory (#1502)
  • fix(recall): cut a shown line around the match, not from its start (#1442)
  • fix(recall): do not open the block with the message being typed (#1479)
  • fix(recall): do not recall the harness checks run against the tool (#1500)
  • fix(recall): filter Russian filler the way English filler is filtered (#1440)
  • fix(recall): ignore the scripted tool checks too (#1503)
  • fix(recall): lead with the session whose first shown line concluded something (#1467)
  • fix(recall): lower the idf floors to the scale a real store has (#1451)
  • fix(recall): narrow a long session by the same rule the block is built with (#1443)
  • fix(recall): never quote a past session saying it had no memory (#1499)
  • fix(recall): one bar for the hook and the benchmark (#1438)
  • fix(recall): open the block on the line that answers, not the one that echoes a word (#1458)
  • fix(recall): prefer the line that concluded something (#1463)
  • fix(recall): quote the line that settled it, not the densest mention (#1488)
  • fix(recall): stop framing a matched answer with the top of the transcript (#1439)
  • fix(recall): three fixes to which words a recall trusts (#1449)
  • fix(sync): a pull no longer shares a watermark with hand-run exports (#1431)
  • fix: a Claude sidechain is the subagent's own session, not a copy of its parent (#1533)
  • fix: read the answer and the tool output a dsh session actually holds (#1519)

Performance

  • perf(hook): do not read sessions this session already saw (#1477)
  • perf(hook): drop a candidate before narrowing it, not after (#1474)
  • perf(hook): lowercase a candidate's messages once, not twice (#1490)
  • perf(hook): lowercase a message once per prompt, not once per term (#1473)
  • perf: CLI search answers from the index instead of waiting for a rewrite (#1531)
  • perf: a growing Grok session appends instead of rewriting the index (#1530)
  • perf: give a single-rare-word match half the block (#1514)

Documentation

  • docs: bring the release surface up to what shipped since 0.17.3 (#1537)
  • docs: changelog entries for the rarity rule and the benchmark corpus (#1543)
  • docs: changelog entry for the --auto install fix (#1545)
  • docs: changelog for 0.18.0 (#1546)
  • docs: publish the session format registry as pages search engines can read (#1434)
  • docs: say what a subagent's run is, and what resume does per harness (#1540)
  • docs: the registry pages counted seventeen other formats (#1541)
  • docs: the roadmap pointed at four closed issues (#1542)
  • docs: the site still counted seventeen harnesses (#1539)

Other

  • A /deja command and auto-recall for DeepSeek Harness (#1527)
  • Add omp (Oh My Pi) harness (rebased #1455) (#1520)
  • Close the last resume gaps, and aider's skill cell (#1529)
  • Give the prompt benchmark a corpus big enough to judge rarity (#1535)
  • Measure the bar the hook actually applies, and drop the rule it ignored (#1517)
  • Rarity: the rarer of the two verdicts wins (#1536)
  • Revert "fix(recall): lower the idf floors to the scale a real store has" (#1452)
  • bench(prompt): ask the end-to-end arm from inside the answer's own session (#1486)
  • bench(prompt): run the hook itself, not a copy of its loop (#1485)
  • chore: pin scoop, winget and the codex plugin to 0.17.3 (#1426)
  • ci: raise the test job cap to 45m (#1427)
  • refactor: share the aboutness rule between the hook and the benchmark (#1516)
  • test(bench): a Russian question whose subject is three letters (#1461)
  • test(bench): a passing mention must not outrank the session that decided it (#1437)
  • test(bench): an English mention-before-conclusion case (#1471)
  • test(bench): an arm for the session that answers and also says an ordinary word (#1454)
  • test(bench): ask about another project's topic, not an invented word (#1446)
  • test(bench): count the questions this project was never going to answer (#1445)
  • test(bench): give the Russian fact a word the arm can look for (#1469)
  • test(bench): measure recall against a scope that cannot hold the answer (#1435)
  • test(bench): read the arms the report only printed (#1457)
  • test(bench): score the short-subject arm through the hook (#1489)
  • test(bench): the negative controls were being answered by the fixture (#1538)
  • test(bench): the words a long session is made of, not its subject (#1447)
  • test(hook): hold the cheap discards ahead of narrowing (#1476)
  • test(hook): hold the two guards nothing was holding (#1482)
  • test(hook): put the session's line where rotation can drop it (#1481)