Releases
v2.31.0
Compare
Sorry, something went wrong.
No results found
2.31.0 (2026-09-29)
Bug Fixes
binders: bind a call site by its receiver, imports and package (1252319 )
cache: reject a persisted ref whose soft flag is not true (52a858d )
ci: read pre-epoch --since windows on newer git, detect ripgrep directly (f80c222 )
cli: warn when a read command answers from an empty scan (2188218 )
complexity: count code only, skip containers, score nested functions apart (5a593f1 )
deadcode: per-symbol reference evidence, callables by default, manifest roots (21042be )
delta,complexity: review the first commit, and refuse unknown file targets (5e5beac )
delta: trace importers of deleted and renamed files (6d0b296 )
edit: follow operator continuations in regex-tier spans (50e605e )
edit: never insert above Rust inner docs and attributes (2b15c03 )
edit: verify symbolic edits instead of splicing guessed spans (ee6ad1c )
embed: degrade a broken model.json to lexical instead of exiting 2 (e06391f )
extract: choose capped call sites in source order, not name order (e0393e8 )
extract: declare every name of a multi-name declaration (9b794c0 )
extract: index bundles without their copies of the sources' symbols (42eb965 )
extract: index Elixir definitions with a when guard (48e50b2 )
extract: index minified JavaScript without its symbols, and flag it (8ffefb5 )
extract: index Ruby singleton-class, inline-visibility and factory-class methods (f3c31c2 )
extract: keep comments and bodies out of signatures (8e59545 ), closes #define
extract: keep one-letter callees in the AST tier (a251b76 )
extract: make a Lua table function a member of its table (58f5cb1 )
extract: name CommonJS default exports and walk anonymous default classes (6343f9c )
extract: read declarations, docs and spans on the regex tier (7c4a77f )
extract: read Python strings and non-leaf strings in the AST tier (feb54a3 )
extract: read setext headings and skip indented code in markdown (49b9125 )
extract: record each config scalar once, as a number or a string (8877c5c )
extract: recover declarations the AST walk dropped or misread (bedb420 ), closes #define
extract: scan imports from code only, in linear time, on both tiers (37ad6d6 )
extract: scope export { … } lists to the bindings they name (42cab94 )
extract: stop indexing Dart call sites and keywords as functions (0074519 )
extract: summarize a file from its description, not its license (57ad935 ), closes #pragma
git: read history and diffs relative to --repo, immune to user config (48810e5 )
grep: bound time and output, share one universe and dialect across backends (abaebb9 )
grep: pass rg only exclusions it reads the way the engine does (a99cb56 )
impact: no impossible Go dependents, and a package's files have importers (e8646c5 )
index: make persisted-index reuse honour everything it depends on (814af1f )
integration: a symbolic edit also revokes the --watch proven walk (1230771 )
integration: align navigation's tests with resolve, extract-imports and mcp (6379aa6 )
integration: delta's narrowing hint and churn's path filter (8e6ca4b )
integration: drop mcp.ts searchIndex import left over from the merge (a08497f )
integration: edit-safety's regex-tier premise after extract-imports (a74af0f )
integration: keep two tests' premises true after extract-imports (15ac352 )
integration: one --scope reading and one universe for grep (0eaa51b )
integration: retry a pooled LSP query whose server died unseen (7ea4710 )
literals: read Go build variants as one holder, drop CI and manifest boilerplate (088aa5e )
lsp: anchor requests on the declared identifier (b1516c8 )
lsp: report the server's own stderr when it fails to start (789ce11 )
mcp: answer ping during a tool call and honour cancellation (c8ddfa4 )
mcp: keep deleted files out of watched sessions (6f4f137 )
mcp: look symbols and profiles up by own key only (91f5edc )
mcp: make every result honour the official SDK's schema contract (17f41cd )
mcp: normalize file arguments and enforce enum-like options (f169fa0 )
mcp: offer a persisted artifact only when it is the answer (a608060 )
mcp: validate every tools/call before the repo is walked (13fd914 )
neighbors: report every relation to a neighbour, strongest first (eeb9241 )
onboard: take the tagline from the top of the README, not a release banner (87763ea )
playground: give the rules command the scan, so the literals gate is complete (f8081e8 )
repomap: rank production code, and show each file's public surface first (4052c52 )
resolution: count the new language resolvers as supported (268151e )
resolve: fix Python roots and TS, Go and doc-link resolution gaps (a79e1ef )
resolve: Rust lib names, renamed deps, uniform paths and #[path] mods (c7b3611 )
rewrite: restate grep/rg/git grep faithfully, or refuse (6e963bb )
rewrite: smart case on fixed strings, refuse an empty path (e825db7 )
rules: gate literals on the full list and reject configs that check nothing (9017eae )
rules: stop reporting live package files and unimportable languages as orphans (e64d0af )
scan: apply --scope/--include/--exclude inside the walk, as an intersection (22894f7 )
scip: nest symbols by their real parent and map every kind (ffd4b61 )
search: demote fixture and snapshot trees below tests (e69e12f )
search: index re-exports as prose, not as declarations (6adce9d ), closes #1
search: let the stem bridge reach a word that is its own stem (84385f4 )
search: make --rank graph a real, scale-free prior, and say it is a wash (7e299f6 )
search: make --semantic honour --exact/--rank/--explain and keep lexical fields (3bef7ff )
search: search a stopword that is the whole query or a declared name (d46a603 )
search: whole-number result limits everywhere, and "appears" for one term (43b875f )
symbols: keep symbols named proto in symbols.json (47807d9 )
tests-map: Go tests cover their package, and a test its namesake (907158a )
viz: keep mermaid node ids clear of flowchart keywords, label nodes by path (e495d11 )
walk: keep build/out/target/tmp directories that git tracks (3117448 )
walk: skip in-repo file symlinks as aliases of their target (2c83d25 )
Features
analytics: couple indexed files by confidence, rank only changed hotspots (6f84f1e )
callers: opt-in caller id per site (--with-caller, MCP withCaller) (6adfefc )
callgraph: overrides edges and dispatch, and deadcode honours them (ba8bc68 )
cli: add status, a freshness report for the persisted index (2de09cc )
cli: find, refs and outline commands (b44fe61 )
delta: serve the review over MCP and gate CI with --fail-on (dfcced9 )
embed: embed each symbol's doc comment and skip re-exports (29da123 )
extract: extract Vue, Svelte and Astro components from their script (0f01302 )
extract: honour a Python module's __all__ (4f1d3f6 )
extract: index reStructuredText docs like markdown (40ccbde )
extract: index TypeScript parameter properties and PHP promoted properties (d22432e )
graph: resolve soft refs only when they land on an in-repo file (e97f12b )
graph: resolve soft refs only when they land on an in-repo file (cbf64ac )
grep: export grepRepoEx and keep a timed-out answer consistent (40a0f65 )
hierarchy: Go interface implementations by assertion and method set (cd3499e )
mcp: add a memory profile and place every tool in one (414a39a )
mcp: impact and neighbors tools (a30c442 )
mcp: keep a member's parent in concise declarations (868a900 )
mcp: send progress notifications during a call's scan phases (5c47083 )
navigation: callpath and MCP call_path ( 370cc78 )
navigation: one symbol syntax, explained misses, honest CLI flags (5632500 )
navigation: symbol-at file:line, on the CLI and as MCP symbol_at (f52cb83 )
resolve: import edges for Kotlin, Scala, Dart, Lua, shell and Elixir (11c26f1 )
review every feature for correctness, performance and new capabilities (#22 ) (3ea8183 )
scan: explain skipped paths with scan --why and scan --skipped (6ae0363 )
scip: emit implementation relationships and package identity (420ddf7 )
search: split all-lowercase compound file names into corpus words (c99098d )
workspaces: check declared deps, report resolution health, fix detection gaps (aafde96 )
Performance Improvements
binders: group defs once and intersect with import targets (8d758a9 )
delta: read the diff before the index, and leave the index out of it (7cd5760 )
edit: skip the outline re-extraction for capped files (113cfb3 )
embed: reuse stored vectors instead of re-embedding the corpus per search (263d652 )
ignore: answer gitignore rules without a full-path regex (0edc2d5 )
index: prove freshness from freshness.json, not the 142MB cache.json (0ec52df )
index: restamp graph.json when only the commit moved (a925f7b )
lsp: pool language-server sessions for the MCP server's lifetime (88424cc )
mcp: forget only the edited file after a symbolic edit (5369d44 )
mcp: key every call on one canonical spelling of its repo (f1e66cf )
mcp: let --watch prove freshness instead of re-walking every call (764e960 )
pool: hash before extracting a stat-changed file (ad9ae3a )
preload: read a fresh index one artifact at a time (4f25b51 )
resolve: index Java types and C# namespace prefixes (756f8b7 )
resolve: sort only the manifests, not the whole file set (23465aa )
scan: let docs take the stat fastpath and read their text lazily (b3170cf )
search: score only candidate files and dress only the kept rows (1e8c781 )
You can’t perform that action at this time.