Skip to content

v0.16.6

Choose a tag to compare

@github-actions github-actions released this 02 Aug 01:35
c605f7c

Install

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

Changelog

Features

  • feat(codex): read commands, output, files and edits from rollouts (#629)
  • feat(cursor): read files, commands and edits from Cursor transcripts (#628)
  • feat(opencode): index what commands printed, and whether they succeeded (#621)
  • feat(stats): say what restore could hand back, before anyone needs it (#644)
  • feat(statusline): what earlier sessions decided about the file in hand (#634)
  • feat: add deja friction, the errors that recur across sessions (#622)
  • feat: name the memory agents keep coming back to (#638)
  • feat: name the wall the agents keep hitting on the first screen (#626)
  • feat: tell the agent what this machine is missing, before it trips (#632)

Fixes

  • fix(antigravity): tool steps are not speech, and sessions have a project (#651)
  • fix(codex): do not panic on a tool result without a call_id (#631)
  • fix(codex): duplicate turns with wrong roles; two documented flags that did nothing (#652)
  • fix(codex): thread identity and injected preamble (#639)
  • fix(files): distinguish a filtered file from a file that was never recorded (#665)
  • fix(redact): remove a secret named in prose and quoted (#658)
  • fix: a misspelled search flag is an error, not part of the query (#756)
  • fix: a promoted note serves its latest correction first (#813)
  • fix: a rejected attempt ranks below the decision that replaced it (#685)
  • fix: an ambiguous elided id is refused, not silently doubled (#860)
  • fix: an empty result names the states the user created (#687)
  • fix: at equal rank the local session comes before an imported one (#712)
  • fix: blame and forget report the state the tool is in (#650)
  • fix: blame keeps a session that both mentions and edits the file (#724)
  • fix: blame sees the sessions that edited the file, not only those that named it (#689)
  • fix: bound the covering line by when the oldest work began (#787)
  • fix: count a promoted note that has no source session (#815)
  • fix: ctx rejects flags instead of searching for them (#722)
  • fix: defer to the package manager that owns the binary in update (#776)
  • fix: deja help names search (#754)
  • fix: deja last and the first screen keep their order when timestamps tie (#714)
  • fix: derive a title for imported sessions (#671)
  • fix: doctor counts the transcripts it cannot place (#702)
  • fix: doctor lists git alongside sqlite3 (#797)
  • fix: doctor names a permission problem instead of blaming the store (#803)
  • fix: doctor names the missing sqlite3 CLI instead of blaming the store (#793)
  • fix: doctor reports a damaged index instead of calling it up to date (#736)
  • fix: document the six flags deja help was missing (#758)
  • fix: files names the project filter and marks truncated paths (#728)
  • fix: files, ctx and restore point at the stores on an empty index (#835)
  • fix: forget --before refuses an age of zero or less (#740)
  • fix: forget --project clears borrowed note titles and names what it dropped (#691)
  • fix: forget clears the title a promoted note borrowed from the session (#667)
  • fix: forget says when it could not clear a borrowed title (#805)
  • fix: forget says where the session was already pushed (#789)
  • fix: friction distinguishes an empty store from one with no tool output (#706)
  • fix: friction recognises the errors machines actually hit (#730)
  • fix: handoff no longer warns that a session is '11d old old' (#744)
  • fix: hooks ask for a rebuild when the index is damaged (#801)
  • fix: hooks ask for a rebuild when the index is from another format version (#778)
  • fix: hooks carry the rejection with the session it belongs to (#762)
  • fix: hooks use the cwd the harness sends (#760)
  • fix: impact stops calling a larger digest 'distilled (0x less)' (#732)
  • fix: index explains a denied write instead of passing the syscall through (#799)
  • fix: index reports a directory it could not read (#819)
  • fix: index says when there is nothing to do (#825)
  • fix: index says which harness it skipped for a missing sqlite3 (#795)
  • fix: index the end of a long tool output, not just its head (#643)
  • fix: install names the targets it found instead of just asking for one (#831)
  • fix: keep notes without a project and promoted notes without a state (#772)
  • fix: keep result-line ids distinguishable and resolvable (#708)
  • fix: keep the tombstone until unforget's rebuild succeeds (#811)
  • fix: last --role tool matches tool output (#718)
  • fix: last prints a dash instead of 0001-01-01 (#766)
  • fix: log --json returns [] on an empty log, and a number is not a flag (#734)
  • fix: name a session after the assistant when no user turn can (#693)
  • fix: name the cause when a borrowed title cannot be cleared (#809)
  • fix: name the filter that emptied a search, and stop hinting on short words (#716)
  • fix: name the rebuild window instead of the missing manifest (#823)
  • fix: nine audit findings across privacy, dates, uninstall and the docs (#851)
  • fix: point at --harness when two sessions share an id (#720)
  • fix: point at the command when an empty search looks like a typo (#675)
  • fix: point at the stores when a search finds an empty index (#833)
  • fix: promote explains a locked notes file (#807)
  • fix: re-derive session titles left over from older rules (#785)
  • fix: reattach the signalLines doc and pin the splice order (#646)
  • fix: recalled text cannot close the frame that quotes it (#656)
  • fix: record blame calls so deja log covers what the agent was given (#683)
  • fix: relative dates use the reader's zone (#768)
  • fix: repair wiring when the binary moved (#774)
  • fix: report a store that is only partly readable (#817)
  • fix: restore refuses to overwrite, including the file the span came from (#726)
  • fix: resume and handoff name a session that exists (#742)
  • fix: say what period 'Recalls served' covers (#764)
  • fix: say when a query has nothing to look up (#829)
  • fix: say when a rejected session was moved below the rest (#695)
  • fix: say when the trust policy is why an answer is empty (#681)
  • fix: say which words matched on their own when nothing matched together (#827)
  • fix: sessions stamped in the future are not today's work (#697)
  • fix: shell completion offers deja search (#750)
  • fix: show honours --offset and --limit without --json (#710)
  • fix: show names the missing id before the missing flag (#821)
  • fix: singular counts in the lines a first run prints (#738)
  • fix: sources rejects arguments instead of ignoring them (#748)
  • fix: stats says what an old store covers instead of drawing twelve empty bars (#704)
  • fix: statusline names the same earlier session on every refresh (#669)
  • fix: strip the harness preamble in cursor and gemini too (#649)
  • fix: sync export rejects an unknown flag instead of exporting nothing (#746)
  • fix: sync import fails on a path that is not a batch directory (#679)
  • fix: the environment block arrives once, not once per path (#663)
  • fix: the environment block obeys the policy table (#660)
  • fix: the fallback title takes the earliest turn, matching import (#770)
  • fix: three status messages report a state the tool is not in (#642)
  • fix: two transcripts sharing an id are attributed the same way every build (#700)
  • fix: unforget reports what it restored and rebuilds so the session comes back (#673)
  • fix: uninstall no longer creates configs it was asked to clean (#677)
  • fix: update leaves a source build alone unless forced (#752)

Performance

  • perf(index): skip the CJK scan on bodies that contain no CJK (#640)
  • perf: cut the first screen from 3.2s to 0.6s (#627)
  • perf: read friction in one pass over the record log (#624)

Documentation

  • docs: changelog for 0.16.6 (#836)
  • docs: the rest of what 0.16.6 fixes (#858)

Other

  • chore(packaging): pin scoop/winget manifests to 0.16.5 (#620)