Skip to content

v0.16.0

Choose a tag to compare

@github-actions github-actions released this 28 Jul 13:05
3f6524d

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.0
brew install vshulcz/tap/deja-vu

Changelog

Features

  • feat(aider): install target and a deja aider wrapper (#396)
  • feat(bench): add the context readiness experiment (#168)
  • feat(bench): score per-prompt recall, and lower the term floor to four (#424)
  • feat(cli): deja view — browse memory in one local HTML (#334)
  • feat(cline): install a plugin that recalls at session start (#400)
  • feat(doctor): --deep proves the index against the sources (#282)
  • feat(embed): add optional semantic recall (#135)
  • feat(goose): add Goose CLI session history harness (#341)
  • feat(handoff): cursor as an exec target via cursor-agent chat (#203)
  • feat(handoff): paste mode without --to, cleaner digests, opencode TUI prompt (#202)
  • feat(handoff): source receipt and staleness warning (#214)
  • feat(handoff): start cline, goose and kimi directly (#452)
  • feat(hermes): install a plugin and MCP, read the flat store layout (#389)
  • feat(hermes): resume sessions by id (#450)
  • feat(hooks): rank session-start recall by files the repo is touching (#283)
  • feat(identity): worktrees of one repo resolve to one project (#286)
  • feat(index): ingestion health counters in the manifest and doctor (#213)
  • feat(install): add user-level harness guidance (#127)
  • feat(install): extend user-level guidance targets (#133)
  • feat(install): wire deja into Copilot CLI over MCP (#211)
  • feat(last): add --since and --role filters matching search (#207)
  • feat(mcp): browsable sessions resource + recall offset (#289)
  • feat(mcp): trigger-phrase tool descriptions and annotations (#155)
  • feat(notes): tags and conflict surfacing for curated memory (#309)
  • feat(opencode): index the transcript before compaction (#390)
  • feat(opencode): recall on every prompt, not just at session start (#383)
  • feat(opencode): toast the recall receipt, not just the build (#381)
  • feat(pi): add /deja and keep recall stats in the footer (#392)
  • feat(policy): trust scopes for what memory activates where (#284)
  • feat(privacy): add forget, ingest exclusions and redaction reports (#142)
  • feat(redact): gated entropy pass (#246)
  • feat(roo): install target and the CLI storage root
  • feat(search): CJK bigram indexing (#337) (#338)
  • feat(search): Russian conversational stopwords (#339)
  • feat(search): Russian inflection folds in relevance (#340)
  • feat(search): add confidence tiers (#160)
  • feat(search): co-occurrence rescue from the user's own corpus (#270)
  • feat(search): dev-synonym and russian suffix folds in the stem tier (#266)
  • feat(search): flag earlier attempts, show age in recall (#244)
  • feat(search): fold Traditional to Simplified so CJK recall is bidirectional (#369)
  • feat(search): fold stem forms for corpus-absent terms in relevance (#324)
  • feat(search): index the inner words of compound identifiers (#265)
  • feat(search): natural queries fall through junk substring hits to relevance (#318)
  • feat(search): normalize natural language queries (#149)
  • feat(search): proximity and title signals in ranking (#268)
  • feat(search): rank candidates with BM25 (#130)
  • feat(search): rank sessions by their best message (#317)
  • feat(search): relevance tier when the exact ladder finds nothing (#298)
  • feat(search): resolve relative-time phrases into month tokens (#325)
  • feat(search): sessions agents keep recalling rank a little higher (#269)
  • feat(search): smarter relevance ranking — tf saturation, message co-occurrence, weak tail (#300)
  • feat(search): support quoted phrases and fuzzy fallback (#132)
  • feat(search): understand month names in time queries (#456)
  • feat(share): smarter selection for tool-heavy sessions (#290)
  • feat(site): CRT terminal redesign with live search demo (#235)
  • feat(sources): Cline harness — both store generations (#253) (#306)
  • feat(sources): Kimi Code is the twelfth harness (#250)
  • feat(sources): OpenClaw harness (#312)
  • feat(sources): Roo Code harness (#307)
  • feat(sources): index Hermes Agent sessions (#376)
  • feat(stats): activity-grid stats card (#199)
  • feat(stats): add interactive html timeline (#141)
  • feat(stats): headline metrics and an embeddable card (#164)
  • feat(stats): measured impact report (#287)
  • feat: DEJA_AUTORECALL_LOCAL_ONLY keeps synced sessions out of auto-recall (#59)
  • feat: GitHub Copilot CLI as the eleventh harness (#204)
  • feat: add bounded recall policy accounting (#112)
  • feat: add deja blame (#136)
  • feat: add deja doctor self-diagnosis command (#91)
  • feat: add durable notes via deja remember (#139)
  • feat: add qwen-code session support (#123)
  • feat: add reproducible recall benchmark (#145)
  • feat: add self-update command (#80)
  • feat: add semantic search fallback (#153)
  • feat: add session format registry (#116)
  • feat: add shareable stats card (#125)
  • feat: add shell completions (#195)
  • feat: auto-recall SessionStart hook (#16)
  • feat: auto-recall in every harness that can inject context (#362)
  • feat: capability matrix generated from the registry, copilot resume (#212)
  • feat: capture before compaction and re-inject after (#162)
  • feat: close the handoff loop, honest recall metrics, parser panic guards (#208)
  • feat: deja handoff — continue a session in another agent (#201)
  • feat: deja index command, rebuild progress (#89)
  • feat: deja log — audit what was served to agents (#243)
  • feat: deja promote — curated note layer (#285)
  • feat: deja resume — reopen a found session in its native harness (#53)
  • feat: deja stats (#18)
  • feat: deja statusline — recalls served to agents, at a glance (#47)
  • feat: deja sync ssh — one-command sync between machines (#35)
  • feat: doctor --json and onboarding states (#111)
  • feat: felt memory — déjà vu moments, the living brief, service receipts (#273)
  • feat: full install across all harnesses (#78)
  • feat: honor upstream config-relocation variables (#103)
  • feat: index Antigravity transcripts (#68)
  • feat: index Cursor chats and CLI transcripts (#62)
  • feat: index Gemini CLI chat history (#61)
  • feat: index Grok Build chat history (#71)
  • feat: index aider chat history (#60)
  • feat: install from the Claude Code and Codex marketplaces (#367)
  • feat: limit-aware handoff tip and one-time ssh sync tip (#219)
  • feat: make onboarding build memory on install (#151)
  • feat: personal first-query greeting and the served-vs-replayed ratio (#258)
  • feat: recall narration protocol and install proof moment (#218)
  • feat: redact credentials at ingest (#14)
  • feat: respect CLAUDE_CONFIG_DIR for read and install paths (#82)
  • feat: security honesty in command output (#288)
  • feat: session-start auto-recall for Codex and opencode (#48)
  • feat: share and sync (#20)
  • feat: ship the MCP server in the plugin bundle (#394)
  • feat: show the first build as a moving bar, and in pi's footer (#384)
  • feat: skip subagent transcripts, never lose a torn tail line (#52)
  • feat: visible recall receipt and weekly recall numbers (#205)
  • feat: windows path audit, scoop and winget manifests (#114)
  • feat: wordmark on install and first index build (#90)

Fixes

  • fix(blame): color the human output like search results (#263)
  • fix(cli): openclaw install detection and resume guidance (#320)
  • fix(codex): adopt an existing hook entry instead of leaving it stale (#385)
  • fix(doctor): find the MCP server whatever it was named (#433)
  • fix(doctor): hook wiring check matched only bare commands (#291)
  • fix(doctor): report the codex hook as untrusted when its hash no longer matches (#428)
  • fix(doctor): warn when index is stale relative to source stores (#194)
  • fix(gemini): hook SessionStart so the receipt is visible (#382)
  • fix(goose): honour GOOSE_PATH_ROOT and keep subagent runs out of recall (#410)
  • fix(handoff,resume): correct commands verified against real installed CLIs (#222)
  • fix(hook): project-scoped IDF ranking instead of query reconstruction (#221)
  • fix(hook): session-start must never index synchronously (#315)
  • fix(hooks): calibrate deja vu triggering (#293)
  • fix(hooks): codex session-start hang + trust visibility (#294)
  • fix(hooks): deja vu needs real overlap and a human topic (#292)
  • fix(hooks): let auto-recall fire for CJK prompts (#370)
  • fix(index): Ensure honors its harness scope (#319)
  • fix(index): bound a bucket's posting block by the file size (#432)
  • fix(index): crash-harden in-place writes (#181) (#206)
  • fix(index): do not append onto a rewritten prefix (#454)
  • fix(index): keep untouched cursor sessions on incremental update (#177)
  • fix(index): missing bucket shard is no-postings, not an error (#323)
  • fix(index): read paths no longer wait out a rebuild (#380)
  • fix(index): reject corrupt record length prefixes instead of allocating gigabytes (#180)
  • fix(index): serve a read-only index instead of refusing (#472)
  • fix(install): adopt an existing deja hook instead of adding a second (#373)
  • fix(install): gemini hooks live in an extension, not settings.json (#378)
  • fix(install): spawn the MCP server through cmd on windows (#170)
  • fix(kimi): hook UserPromptSubmit and read prompts sent as parts (#388)
  • fix(magic): ranked recalls, dedupe, pre-written citation, attribution metric (#220)
  • fix(mcp): accept numeric arguments sent as strings (#423)
  • fix(privacy): atomic tombstone writes (#209)
  • fix(privacy): keep a second copy of tombstones beside the index (#442)
  • fix(privacy): recall kill switch and policy bind every path (#347)
  • fix(qwen): hook UserPromptSubmit with a millisecond timeout (#386)
  • fix(recall): answer from long and recent sessions (#438)
  • fix(redact): stop xai- pattern matching kebab-case prose (#156)
  • fix(roo): stop cline claiming roo task files
  • fix(search): CJK questions reach the relevance tier (#345)
  • fix(search): apply scope before truncation, keep session Ords unique (#348)
  • fix(search): don't label an exact token match as a variant (#193)
  • fix(search): multi-token terms match all sub-tokens, not the first (#313)
  • fix(search): quote context messages per-term, never return a bare header (#158)
  • fix(search): recover natural-language queries the AND used to kill (#245)
  • fix(search): relevance results no longer render "0 matches" (#352)
  • fix(search): score fuzzy/stem hits and keep stop words out of retrieval (#179)
  • fix(search): total order on relevance ties; deterministic test (#302)
  • fix(search): treat Traditional and Cantonese function words as grammar (#368)
  • fix(share): count secrets redacted at index time too (#444)
  • fix(sources): parse Gemini CLI $set message snapshots (#316)
  • fix(sources): resolve Claude project dirs encoded with a Windows drive letter (#217)
  • fix(sources): stop reporting a failed query as an empty store (#474)
  • fix(stats): keep the card's name honest, and cover log and view (#470)
  • fix(sync): acknowledged-delivery watermarks for ssh push (#215)
  • fix(sync): six defects in cross-machine sync (#346)
  • fix(sync): unstamped messages could never reach a peer (#349)
  • fix: MCP recall robustness and index write durability (#223)
  • fix: dedup search-path builds, safe forget ordering, unbounded aider reader (#175)
  • fix: default message time to session start when the harness omits per-message timestamps (#65)
  • fix: deterministic tie-break in the greeting suggestion (#264)
  • fix: hide the nightly tag from goreleaser (#412)
  • fix: preserve sync-imported records across rebuilds and index updates (#27)
  • fix: rebuild automatically when a bucket file is corrupt (#33)
  • fix: redact session titles before they reach the index (#104)
  • fix: registry caps server.json description at 100 chars (#51)
  • fix: repair wiring written by an older deja on the next session start (#431)
  • fix: resolve claude project names against the filesystem (#34)
  • fix: say something on an empty index instead of nothing (#448)
  • fix: shorten server.json description to the registry 100-char limit (#191)
  • fix: skip unreadable sources for a pass instead of failing the update (#70)
  • fix: split Grok config home from session root (#122)
  • fix: torn lines longer than the SafeSize window lost messages (#107)
  • fix: uninstall --all removes hooks and plugins too (#421)
  • fix: warn in deja sources when sqlite3 CLI is missing (#32)

Performance

  • perf(doctor): probe the newest opencode session instead of the whole database (#460)
  • perf(hook): serve stale digest instantly, refresh detached (#330)
  • perf(hooks): skip-decode foreign records, overlap git probes (#295)
  • perf(index): carry derived file state forward, 650ms to 6ms (#458)
  • perf(index): parallel harness parsing and redaction on cold builds (#303)
  • perf(search): cache bucket directories within a query (#350)
  • perf(search): fetch postings for up to 8 query tokens (#267)
  • perf(search): shard non-ASCII tokens across buckets (#351)
  • perf: buffer record and bucket writes, batch token jobs, prefilter redaction (#88)
  • perf: index size and search latency (#360)
  • perf: manifest cache for long-lived processes; 60s hook digest cache (#301)

Documentation

  • docs(grok): note the second CLI that shares ~/.grok
  • docs(security): say what deja update verifies, and what it does not (#446)
  • docs(site): wide tables scroll in place; compare page drops the broken nav strip (#333)
  • docs: 0.14.2 changelog and site notes (#247)
  • docs: 0.14.3 changelog, kimi in the install lists and demo corpus (#251)
  • docs: 0.15.1 surface — impact/promote/trust-scopes rows, hook latency number (#297)
  • docs: 0.15.2 surface — public benchmark numbers, 50ms hook (#304)
  • docs: add security model and contributor guidance (#119)
  • docs: agent strip on the site, current install targets in README (#74)
  • docs: changelog and site for 0.7.0 (#49)
  • docs: changelog and site for 0.9.1 (#69)
  • docs: changelog for 0.13.1 (#169)
  • docs: changelog for 0.14.1 (#231)
  • docs: changelog for 0.14.4 (#271)
  • docs: changelog for 0.15.7 (#361)
  • docs: changelog for 0.16.0 (#477)
  • docs: changelog for 0.5.1-0.6.0, warmup in CLI table, sync notes in architecture (#37)
  • docs: changelog for 0.8.0 (#55)
  • docs: changelog, README and site for 0.9.0 (#64)
  • docs: comparison page and 14-harness site refresh (#311)
  • docs: complete the network list, add rotation note, position vs engram (#242)
  • docs: deja view surfaces; changelog for 0.15.5 (#335)
  • docs: demo gif runs index before searching (#99)
  • docs: document JSON output schemas and add schema_version (#233)
  • docs: déjà vu moments and the brief across site, readme, guides (#274)
  • docs: fix doctor copilot row, stale exclusion FAQ, manifest name (#210)
  • docs: fix unbalanced div, 3-column feature grid (#24)
  • docs: honest positioning vs cass and memory platforms
  • docs: live badges, drop retired go report card
  • docs: mention sync ssh on the site (#36)
  • docs: name Goose in the agent lists (#344)
  • docs: nine harnesses on the site, og image and tagline (#128)
  • docs: one bundle installs into five harnesses (#391)
  • docs: paste-ready agent instructions block in README (#38)
  • docs: pi as the tenth harness, 0.13.1 changelog, refreshed site and og image (#182)
  • docs: re-record the demo gif, contract home dir in progress paths (#97)
  • docs: real agent marks on the site (#76)
  • docs: refresh benchmark numbers — hit@k naming, evidence-recall, LoCoMo 69.8 (#326)
  • docs: refresh copy before the release (#105)
  • docs: release prep for 0.13.0 (#146)
  • docs: reposition around retroactive cross-agent memory, honest bench baseline (#200)
  • docs: search-by-time section and README mention (#329)
  • docs: show the four registry installs, count Hermes (#387)
  • docs: sixteen harnesses; changelog for 0.15.6 (#342)
  • docs: sync the site copy of the demo gif (#106)
  • docs: unify demo gif across readme and site, add full SEO pass (#197)
  • docs: update site performance numbers

Other

  • A query that names a subcommand no longer runs it (#430)
  • Add MCP Toplist rank badge (#464)
  • Add filters to deja last (#121)
  • Add pi session support (#173)
  • Goose: MCP extension and session-start hints (#405)
  • Launch demo gif (#25)
  • Nightly snapshot build (#398)
  • Raise usage and sources coverage (#463)
  • Refresh site with new features (#21)
  • Roo: follow the customStoragePath setting (#426)
  • assets: square icon for directory listings (#56)
  • bench(locomo): real session dates and a JSONL miss report (#321)
  • bench(locomo): real session dates and a JSONL miss report (#322)
  • bench: LoCoMo harness + extended LongMemEval metrics (#299)
  • brand: neofetch-style rewind-loop mark (#94)
  • brand: per-agent breakdown in the first-index greeting (#95)
  • brand: quadrant-resolution mark, install results in the info column (#96)
  • brand: rewind-loop terminal mark, site og image (#93)
  • chore(packaging): pin scoop/winget manifests to 0.14.1 (#232)
  • chore(packaging): pin scoop/winget manifests to 0.14.2 (#249)
  • chore(packaging): pin scoop/winget manifests to 0.14.3 (#252)
  • chore(packaging): pin scoop/winget manifests to 0.14.4 (#272)
  • chore(packaging): pin scoop/winget manifests to 0.15.0 (#275)
  • chore(packaging): pin scoop/winget manifests to 0.15.1 (#296)
  • chore(packaging): pin scoop/winget manifests to 0.15.2 (#305)
  • chore(packaging): pin scoop/winget manifests to 0.15.3 (#328)
  • chore(packaging): pin scoop/winget manifests to 0.15.4 (#332)
  • chore(packaging): pin scoop/winget manifests to 0.15.5 (#336)
  • chore(packaging): pin scoop/winget manifests to 0.15.6 (#343)
  • chore: Dockerfile and richer MCP tool descriptions (#58)
  • chore: add a Dockerfile for the MCP server (#166)
  • chore: changelog for 0.15.3 (and backfill 0.15.1/0.15.2) (#327)
  • chore: changelog for 0.15.4 (#331)
  • chore: drop committed bench binary, ignore harness builds
  • chore: manifests for MCP registry, Glama and Smithery (#50)
  • chore: point windows manifests at v0.13.0 (#147)
  • chore: point windows manifests at v0.13.1 (#189)
  • chore: publish server.json to the MCP registry on release (#165)
  • chore: remove goose's own documentation from the repo root (#437)
  • chore: remove harness test artefacts from the repo (#435)
  • ci: e2e smoke, coverage, govulncheck, goreleaser check, codeql, scorecard
  • ci: errcheck exclusions for print and cleanup calls
  • ci: install syft for the nightly build (#407)
  • ci: resolve registry publish version from the latest release on manual runs (#190)
  • ci: skip signing in the nightly build (#408)
  • ci: trigger MCP registry publish on tag push, not release event (#188)
  • ci: windows shell, govulncheck go version, scorecard pin, sc2155
  • ci: windows test env, bump actions, golangci v2 config
  • doctor: report every auto-recall integration (#417)
  • doctor: stop warning about unused sessions (#440)
  • grok: write the config both shipping CLIs read (#402)
  • redact: catch modern provider keys, env/JSON shapes, and more token families (#81)
  • refactor(sources): rename sqlQuote to sqlEscape (#475)
  • refactor: dispatch subcommands via table (#226)
  • refactor: extract internal/query so index stops importing search (#230)
  • refactor: move share/handoff digest building to internal/digest (#229)
  • refactor: move stats computation to internal/stats (#228)
  • refactor: resolve index dir once in run() (#225)
  • refactor: source registry for harness dispatch (#224)
  • refactor: split index.go into ingest, retrieval, manifest, store_io (#227)
  • security: close redaction gaps for basic auth, empty-user urls, pgp keys, torn secrets (#172)
  • security: harden config modes, resume ids and recall framing (#143)
  • security: job-level codeql permissions, pin runtime alpine digest (#102)
  • security: owner-only permissions for the index and usage files (#108)
  • security: scorecard hardening (#100)
  • share: filter JSON, diff and CLI dumps from digests (#23)
  • site: documentation section, SEO and refreshed demo (#192)
  • site: sharper hero, metric chips, animated polish, denser demo gif (#196)
  • style: check cleanup error returns
  • style: explicit close in defers
  • v0.9.2: field fixes and QA-sweep fixes (#73)