Skip to content

v1.13.0

Choose a tag to compare

@giancarloerra giancarloerra released this 07 Sep 00:04
· 74 commits to main since this release

1.13.0 (2026-09-07)

Features

  • add manual indexing mode (1e6fb5d)
  • embeddings: make task prefixes configurable per model (cd4c8b0)
  • embeddings: make the embedded file path optional (87b677d)
  • gdscript: symbol graph — AST symbols, call graph, incremental updates (a9f1fbe), closes #130
  • graph: decide Rust cases by one rule, and read include! because it passes (76720b6)
  • index: add Elixir AST support (#113) (bd19922)
  • indexing: make the per-chunk character cap configurable (a7c8ed6)
  • lmstudio: accept OpenAI-compatible servers without /v1/models (e1d8034)
  • native GDScript (Godot) support — loader, TSCN/TRES, import extraction (b6a6fcb)

Bug Fixes

  • apply CodeRabbit auto-fixes (339ed45)
  • complete manual-mode status reporting (0262477)
  • config: reject partial file-size values (b2b4df7)
  • context: exclude binary and ignored files from directory artifacts (e703244), closes #116
  • embeddings: bound the Ollama connection pool (#119) (5be07fd), closes #114
  • gdscript: complete portable graph support (eea0736)
  • gdscript: preserve call graph semantics (40c47a2)
  • gdscript: preserve escaped raw-string quotes (bb018ed)
  • gdscript: preserve script ownership during resolution (3fc216d)
  • graph: address CodeRabbit review feedback on leases, lock cleanup, and ast grammars (fb5eb0e)
  • graph: answer a 2015 leading :: from the crate root, never from the file's scope (a8dd239)
  • graph: apply review — semver prerelease precedence, group modifiers, unknown builder (1d4de16), closes #120
  • graph: bind generation leases to operations (c57aa30)
  • graph: carry the file a declaration gives a module, not just its name (c681c33)
  • graph: close impact analysis compatibility gaps (838579f)
  • graph: count a path attribute inside an inline mod from the module dir (10ffb80)
  • graph: exact symbol impact traversal and declaration extraction for non-function exports (#132) (16cc29d)
  • graph: fence by the name rustc knows the crate by, and let the 2015 root branch reach its crates (8586b88)
  • graph: forgive an earlier pass its ERRORs, not its regions (a13d90c)
  • graph: generational symbol storage, canonical reverse shards, and safe rebuild guards (a2c2346)
  • graph: handle aliased/namespace imports, same-file ambiguity, and incomplete graph signal (22d6e64)
  • graph: inherit the edition a workspace declares, and gate the root prefix (9d7b8ee)
  • graph: keep an unwrapped macro pass only while recovery stays inside it (8f0472e)
  • graph: keep the declaration gate off edition 2015, where the path is absolute (7e4ad18)
  • graph: keep the three markers a use declaration writes (8e71990)
  • graph: rank the governing manifest by depth, where the root is no depth at all (8bbf02a)
  • graph: reach only the crates the importing package declares (a7af716)
  • graph: reach the crate root through super::, gate the unanchored path on a declaration (0d0423e)
  • graph: read a leading :: by the edition that wrote it (2ebc04e)
  • graph: read PHP includes from their AST nodes, and three smaller fixes (027e7b1), closes #120
  • graph: read Rust paths from where the source writes them (230825f)
  • graph: read what a macro body, a cfg_attr and a manifest actually declare (43137bc)
  • graph: resolve PHP requires and mapless-autoloader use imports, stamp the builder (ac7fec0), closes #120
  • graph: resolve PR blockers for traversal, lifecycle, export lookup, and lexical shadowing (4aea1f7)
  • graph: resolve Python imports through pyproject-declared import roots (#112) (f836e99), closes #107
  • graph: resolve Rust imports through Cargo-declared crate roots (6d9cf35)
  • graph: schema-v1 compatibility, single watcher rebuild, and generation lifecycle cleanup (96729d9)
  • graph: stop reading [workspace] exclude as unimportable, follow two inline forms (e717d94)
  • graph: take the name a module declaration puts in scope from the declaration (fa68f4c)
  • graph: write the NUL separator as an escape, not a literal byte (da9dd83)
  • ignore: anchor the pattern a detected environment writes (9cdc404)
  • ignore: compare an environment root in forward slashes, whatever the caller wrote (136a5ea), closes #136
  • ignore: keep a discovered environment as the literal prefix it is (4492299)
  • ignore: read an environment marker as what it is, not as what it links to (0b823f8), closes #136
  • ignore: read each environment marker in the shape its tool writes (043599f)
  • ignore: recognise environments by their marker, not their name (39aad31)
  • impact: direct reverse symbol traversal, disambiguation parameters, and schema guard (a729b94)
  • incremental: use exact calleeId for reverse shards, add atomic pre-check, and fix test types (c54fe6e)
  • indexing: complete effective profile compatibility (77ee3c3)
  • indexing: keep legacy profile reads non-mutating (082758c)
  • indexing: preserve effective index profiles (af9ebd9)
  • qdrant: make collection setup concurrency-safe (be82ba0)
  • qdrant: stop concurrent callers from racing to create the metadata collection (646c15c)
  • resolution: preserve dotted path components and require unique suffix matches (6e17e2f)
  • resolution: resolve cross-file calls using module identity, default exports, and transitive barrel chains (5a3390c)
  • review: address PR feedback on resolution, schema upgrade, and AST extraction (7a4d911)
  • store: persist exact reverse symbol index with same-file edges and fail-closed storage errors (69de45a)
  • store: propagate typed StorageReadError from loadFilePayload and deleteFilePayload (93c2bdf)
  • symbols: a name a file's top level imports is reachable from its module (083b410)
  • symbols: answer a file-scoped path with the file's top level only (6c911ab)
  • symbols: answer with the file when a path never leaves the inline mods (4a5dffa)
  • symbols: climb one module per leading super (d45caf8), closes #147
  • symbols: complete Rust qualified-call resolution (7bdf1c8)
  • symbols: count the inline mod a super:: path is written in (616b3d6)
  • symbols: extract top-level variable declarations, unpack destructuring, and track edge kinds (502299b)
  • symbols: give a binary its own crate:: (0e112fe)
  • symbols: include importedName and localAlias in seenCalls deduplication key (e211221)
  • symbols: leave a path rooted in an inline mod unresolved (3520786)
  • symbols: order Rust symbols by source offset, not by name (978e841)
  • symbols: read a crate-rooted binding from the crate root too (0e06095)
  • symbols: read a super-rooted path in the parent's scope (f0d6d70), closes #147
  • symbols: read a Cargo target's root by its shape, not by a prefix (3b3c72f), closes #147
  • symbols: read a type qualifier in the type namespace only (c67e1d1)
  • symbols: read Rust qualified calls, and resolve them by their qualifier (f8a6cda), closes #143 #140
  • symbols: read the Rust items that are not functions (99d838e), closes #132 #135 #135
  • symbols: refuse an inline-mod symbol by the path, not by the spelling (9e5a73f), closes only_inside#4
  • symbols: start a crate:: path at the crate root, and fix a root-level file's parent (ca64100)
  • symbols: support namespace reexports, filter declared identifiers, and pre-flight removals (a283099)
  • symbols: take the Swift declaration kind from its keyword (1db3b27)
  • symbols: three answers rustc refuses, found by review (44e7547)
  • symbols: walk a Rust module path one segment at a time (fd71b8e)
  • watcher: ask every created path whether it is a directory, before reading its name (626c388)
  • watcher: block queued updates during shutdown (6b612b7)
  • watcher: classify environment marker roots (827da28)
  • watcher: let an environment marker through, and rebuild the filter after each update (d43816f)
  • watcher: reconcile once more when an environment reverses under a running update (8d6f8e2)
  • watcher: see an environment moved, drop the marker churn, keep the negation (0429ccf)
  • watcher: serialize deferred reconciliation (37e46a8)

Refactors

  • graph: ask only for the declared name, since only a declaration has one (f5fad14)

Documentation

  • changelog: correct scraped issue references in the 1.12.0 entry (c8d1e15)
  • clarify compatible editor guidance (1569802)
  • clarify native agent prerequisites (7c84392)
  • clarify updates and host configuration (f4cfdbb)
  • developer: document the resolveImport parameter tail and the build map helpers (c1d0181), closes #111
  • readme: quote the task-prefix defaults so the trailing space is visible (c2fd929)
  • refresh host integration instructions (0d0b74f)
  • scope editor verification steps (ae1560e)
  • symbols: correct why a path rooted in an inline mod is dropped (b89100f)
  • symbols: say where the module-stem rule is still read by name (ae6940b)
  • types: refine SymbolEdge.localAlias documentation for imports and re-exports (403fab2)

Tests

  • context: cover ensure-time artifact regressions (aa73217)
  • e2e: wait for explicit index completion (7704cce)
  • gdscript: exercise parser fallback dispatch (039089b)
  • gdscript: require unique project resolution (7951e77)
  • graph: a path attribute naming a file that starts with self (d1739bc)
  • graph: assert the unanchored path where it is read, and keep the fixtures off the platform separator (7fb1d18)
  • graph: cover a leading :: on a head with nothing below it (c4dd12f)
  • graph: cover the guards a mutation run found unchecked (ccf8d6c)
  • graph: cover the targets a manifest declares by name alone (4b7a611)
  • graph: drive the 2015 declaration-versus-use difference through the graph (382e9e6)
  • graph: hold the three scope rules nothing was holding (ee81aed)
  • graph: let cargo judge the Rust graph, inside the suite (6291048)
  • graph: pass the crate map past the two parameters main added (56141d1)
  • graph: prove [replace] redirects a registry name to a project crate (5cafe70)
  • graph: prove a [patch] keyed by a git remote leaves the registry name alone (1a44bda)
  • graph: prove a dash-named dependency inherits under the name the source writes (05d3b2c)
  • graph: prove a member's own entry inherits nothing from the workspace (9ddf8e9)
  • graph: prove the workspace decides where an inherited dependency comes from (8d572a8)
  • ignore: prove the venv half of the anchoring, which nothing held (1a217ea)
  • qdrant: make symbol graph retry coverage deterministic (6277fc4)
  • symbols: add end-to-end contract tests on disk for symbol graph pipeline (2d1c928)
  • symbols: name the walk that decides which Type a path means (7484713)
  • symbols: reach the crate boundary the walk can cross (628c445)
  • watcher: pin the environment reversal that arrives on its own (1fd3219)
  • watcher: switch fake timers inside the call that needs them, not in the hooks (bc0360e)