github vshulcz/deja-vu v0.17.3

latest releases: nightly, v0.21.7, v0.21.6...
one month ago

Install

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

Changelog

Features

  • feat(assets): generate the SVG mark from the sprite, and wag the tail (#1243)
  • feat(assets): give the cat a cat's timing (#1253)
  • feat(assets): the cat breathes (#1254)
  • feat(brand): a new mark, and every surface that carries it (#1240)
  • feat(brief): read the terminal width instead of assuming 80 (#1367)
  • feat(cline,qwen): turn tool calls and results into work records (#1237)
  • feat(mark): the paws tuck in the air and spread on landing (#1259)
  • feat(search): --session narrows a search to one session (#1362)
  • feat(search): hand the ranking's own term weights down to the excerpt (#1267)
  • feat(search): rank the whole question and its rare part, and take the better (#1266)
  • feat(search): satisfying the AND is worth places, not everything (#1265)
  • feat(site): give the home page a rhythm and somewhere to land (#1251)
  • feat(site): repaint the site in the brand's colours, and put the mark on it (#1249)
  • feat(stats): draw the card in the terminal, keep the SVG for a path (#1247)
  • feat(zed): index the built-in agent's threads (#183) (#1281)
  • feat: say what makes memory arrive, at the two moments it is missed (#1277)
  • feat: ship a CLI skill for installs without MCP (#1371)

Fixes

  • fix(blame): quote what was said about the file, not the first mention (#1330)
  • fix(brief): the first screen named sessions the policy withholds (#1351)
  • fix(cjk): repeat questions, superseded and related notes were off in CJK (#1349)
  • fix(codex): doctor called a working hook untrusted, and an unrunnable one wired (#1262)
  • fix(completion): offer every harness, not the eleven of a year ago (#1368)
  • fix(ctx): the digest skipped the exchange that answered the query (#1323)
  • fix(cursor): resolve the Windows IDE root through %APPDATA% (#1239)
  • fix(digest): a conclusion cut to fit could arrive meaning the opposite (#1337)
  • fix(digest): a session written in Chinese, Japanese or Korean digested to nothing (#1341)
  • fix(digest): share and the handover tail said nothing when they cut (#1339)
  • fix(docs): the harness count said seventeen in five of the seven places it appears (#1290)
  • fix(doctor): reported embedding coverage search would not use (#1360)
  • fix(doctor): two rows under "Hooks" were not hooks (#1275)
  • fix(embed): refuse a vector sidecar built for an earlier index (#1356)
  • fix(files): a path synced from Windows was never trimmed (#1315)
  • fix(grok): index the run, not just the talk (#1361)
  • fix(hook): the per-prompt recall stopped looking before it found anything (#1274)
  • fix(index): a question in Chinese never counted as asked before (#1347)
  • fix(index): a rewritten records file kept the old generation (#1358)
  • fix(index): an id a session was synced under resolved to nothing (#1316)
  • fix(index): an incremental update deleted the mined sidecars (#1296)
  • fix(index): an incremental update wrote credentials into the mined pairs (#1300)
  • fix(index): hook-tool never saw a command that became a habit after the last full build (#1299)
  • fix(index): incremental updates never learned a new fix pair (#1297)
  • fix(index): the one sidecar write that overwrites a good file was not atomic (#1302)
  • fix(index): touched files stopped meaning worked-on-most after a batch (#1334)
  • fix(install): stop replacing a skill someone has edited (#1285)
  • fix(mark): drop the lean, give it a hop instead (#1258)
  • fix(mark): squash and stretch, not a sliding slab (#1257)
  • fix(mark): the blink was sliding the eyes down the face (#1255)
  • fix(mark): the cat was hovering, not breathing (#1256)
  • fix(mcp): how filtered by the CLI's trust policy, not the agent's (#1310)
  • fix(mcp): the server took the blocking index lock it had just avoided (#1305)
  • fix(recall): Chinese sessions were skipped as having nothing to say (#1343)
  • fix(recall): the session-start block opened with "let me look at that" (#1282)
  • fix(registry): the MCP registry description was six characters too long (#1271)
  • fix(search): a long message hid the phrase that answered the query (#1319)
  • fix(search): a project is its path segments, not any name containing it (#1276)
  • fix(search): ctx and the prompt digest dated sessions in UTC, not the reader's zone (#1314)
  • fix(search): length normalisation did nothing for Chinese sessions (#1345)
  • fix(search): measure the tightest window, not the span between first mentions (#1268)
  • fix(search): one decisive word is a match, not a weak one (#1261)
  • fix(search): project scoping matched only one separator, and windows uses the other (#1287)
  • fix(search): show the message that earned the rank, not the wordiest one (#1264)
  • fix(search): the excerpt slid off the match in text that lowercases shorter (#1332)
  • fix(search): the excerpt was cut around the first word, not the answer (#1328)
  • fix(search): the first excerpt showed repetition, not the answer (#1326)
  • fix(search): the relevance tier served records exact search hides (#1263)
  • fix(site): the phone layout, which I had never actually looked at (#1250)
  • fix(sources): a project is spelled the same on every platform (#1289)
  • fix(sources): report the files deja reads, not the tree around them (#1363)
  • fix(stats): the card was printing a line out of the reader's own history (#1252)
  • fix(suggest): the first-run phrase came from withheld sessions (#1353)
  • fix(sync): a bad import path came back as a raw syscall error on windows (#1288)
  • fix(update): clear staging files an interrupted run left behind (#1364)
  • fix: a greeting does not name the session (#1383)
  • fix: a hook running during a rebuild no longer decides there is no index (#1390)
  • fix: a recall payload does not pay twice for one answer (#1394)
  • fix: a session that grows updates what is derived from its text (#1381)
  • fix: agent tools say when the index is being rebuilt, instead of rebuilding inline (#1377)
  • fix: an excerpt near the end of a message spends its whole window (#1396)
  • fix: apply the exclude list where data leaves the machine (#1376)
  • fix: bound a title the source authored like a derived one (#1406)
  • fix: bound the status line in columns, not runes (#1398)
  • fix: budget hits, files and restore against the terminal width (#1386)
  • fix: budget the brief title in columns, not runes (#1401)
  • fix: check for the swap before the open, not after (#1378)
  • fix: count a wall's length in characters, not bytes (#1395)
  • fix: count the same-fact floor in characters, not bytes (#1402)
  • fix: cut agent-facing text on rune boundaries (#1391)
  • fix: cut the answer line on a character, not on the byte cap (#1410)
  • fix: do not print a negative age on the handoff receipt (#1404)
  • fix: embed only what every trust activation allows (#1372)
  • fix: excerpt the part of a message that discusses the term (#1387)
  • fix: give every atomic write its own temp name (#1389)
  • fix: impact credits honour the trust policy (#1380)
  • fix: keep Japanese words whole across the marks written inside them (#1392)
  • fix: keep an event from the future out of today and this week (#1409)
  • fix: keep the digest headers on their own lines (#1408)
  • fix: keep the evidence a fix pair needs until a second session confirms it (#1382)
  • fix: measure proximity against every place, not a sample of one word's (#1393)
  • fix: measure the files column in columns, not runes (#1399)
  • fix: readers wait out the index swap instead of reporting it (#1375)
  • fix: recognise the sentence ends Chinese and Japanese write (#1405)
  • fix: say when a role search found nothing because the store records none of that kind (#1370)
  • fix: scrub the show header like the context one (#1407)
  • fix: strip what the terminal acts on from the files rows (#1400)
  • fix: tell the agent how many sessions matched, not just how many came back (#1379)
  • fix: the brief obeys one trust rule across the whole screen (#1373)
  • fix: the greeting stops claiming an empty machine once history arrives (#1374)

Performance

  • perf(index): count co-occurring pairs a shard at a time (#1366)

Documentation

  • docs: changelog for 0.17.2 (#1270)
  • docs: changelog for 0.17.3 (#1423)
  • docs: name the windows download and say the binary alone is enough (#1369)
  • docs: record what the conclusions budget actually does (#1397)
  • docs: rework the README opening, and show the tool itself (#1242)
  • docs: the README listed four MCP tools; the server serves six (#1244)
  • docs: the no-hook harness count was stale and had inverted (#1293)

Other

  • chore(packaging): pin scoop and winget to 0.17.1 (#1238)
  • chore: drop smithery.yaml (#1241)
  • chore: ignore Python's pycache (#1279)
  • chore: pin the codex plugin version, drop one orphan asset (#1246)
  • chore: things nothing was checking (#1245)
  • ci: stop reinstalling shellcheck, cap the job at 10 minutes (#1324)
  • ci: take the windows leg off the per-commit path, and drop -race there (#1236)
  • refactor: the benchmark for the hook now runs the hook's own extraction (#1280)
  • test(e2e): walk the path a user actually takes (#1283)
  • test(index): pin session metadata to be the same whichever way the index got there (#1303)
  • test(mcp): pin the tools/list payload to a token budget (#1291)
  • test(mkcorpus): the corpus could not exercise friction, fix or restore (#1294)
  • test(recall): pin that only the agent's own refusals drop a session (#1335)
  • test(sync): hold a synced index to what a local one answers (#1278)
  • test(windows): a test's HOME never reached windows, so the suite shared one home (#1292)

Don't miss a new deja-vu release

NewReleases is sending notifications on new releases.