Highlights
- Project Scoping: Cypher queries are now correctly scoped to the active project in multi-project databases.
- Dead-Code Analysis: Improved detection of dead code, excluding generated paths and correctly handling root-level tests.
- Function References: Functions passed as values are now tracked with REFERENCES edges across JS/TS, Go, and Rust.
- C++ Improvements: Enhanced handling of template parameters and return types in C++ code.
- Rust Receiver Resolution: Improved resolution of receiver types in Rust, including guard and smart pointer receivers.
- Go Module Paths: Go module paths are now mapped to project qualified names for improved import resolution.
- JavaScript/TypeScript Enhancements: Better handling of JSX components, casts, and inline function callbacks in JavaScript/TypeScript.
- Windows Support: Enhanced robustness for Windows platforms, including improved git state handling and UTF-8 safety.
What's Changed
Highlights
- Multi-project query scoping — Cypher generation is now scoped to the active project in multi-project databases, with proper escaping of
project-name literals (v0.0.239). - Dead-code analysis improvements — new --exclude glob to suppress generated paths, plus smarter reachability roots: Go init/main, Rust main and
trait-impl methods, C++ operator overloads, and pydantic @computed_field methods are no longer flagged as dead. Root-level tests/ dirs are now
excluded correctly. - First-class function references — functions passed as values, bound to variables, or assigned inline are now tracked with REFERENCES edges across
JS/TS, Go, and Rust.
Language frontends
C++
- Return types recorded for out-of-class method definitions; chained calls resolved through factory-function return types.
- Template fixes: template-parameter receiver calls fan out to all interface implementers, template-qualified scopes normalized in return-type
paths, bodied templated classes registered once under their natural qualified name.
Rust
- Receiver-dispatch resolution via local, field, and call-return type inference, including imported associated calls, enum receivers, and reference
return types. - Guard/smart-pointer receivers (locks, borrows) now typed correctly through field-hop chains without losing the wrapper type.
- Closures are referenced from their enclosing scope, anonymous closure calls bubble up so captured-local receivers resolve, and match-arm bindings
are scoped per arm. - Receiver chains reconstructed from macro token streams for call resolution.
Go
- go.mod module paths mapped to project qualified names for import resolution, tolerating trailing comments and non-UTF-8 files.
- Struct field types inferred and call-bound locals typed for receiver resolution.
JavaScript / TypeScript
- .tsx files parsed with the tsx grammar variant.
- as/satisfies/non-null casts unwrapped when resolving function references.
- References emitted for JSX components (including class components) and handlers passed in JSX attributes.
- Inline arrow/function-expression callbacks (call arguments, object-literal values) now referenced under the correct enclosing scope;
.bind/.call/.apply targets referenced; subdirectory tsconfig path aliases resolved.
Python calls
- Constructor callable-argument bindings (positional and renamed) resolved to stored fields, including through inherited constructors and nested
classes.
Platform & indexing
- Windows support hardened: posix graph paths, OSError-safe git state handling, UTF-8-safe tests, and status bar survival when home is unresolvable.
- Gitignore excludes negated by exact-match unignores are cancelled at load time.
Full Changelog: v0.0.209...v0.0.245