- Fix: Rust trait method declarations (signature-only, and default-bodied) are now extracted as nodes — trait bodies were never walked, so both were silently dropped; a trait-declared method stays a distinct node from its impl definition (#3366, thanks @santoshpy).
- Fix: the atomic-write temp filename is now bounded, so exporting to a path near the Windows MAX_PATH / 255-char component limit no longer fails with a temp-file
FileNotFoundError(#3351, thanks @hopstreax). - Fix: when graphify's git hook decides to skip (no graph, rebase/merge/worktree,
GRAPHIFY_SKIP_HOOK), it no longer terminates the whole hook — the block runs in a subshell so chained hooks and later steps still execute (#2986, thanks @abhay-codes07). - Fix: JS/TS
@/project-root alias imports now resolve when no tsconfigpathsmapping exists — an explicit mapping still wins,@scope/pkgpackages are untouched, and only existing files are linked (#3357, thanks @hopstreax). - Fix: an MCP
query_graphseeded on a node with only incoming edges (e.g. a leaf function that is called but calls nothing) now traverses undirected, so it reaches that node's callers — matching the CLI's behavior (#3373, thanks @kuchtgpt-svg). - Fix: a member call whose method name collides with a language builtin (e.g.
.open,.get,.map) is now handed to cross-file resolution instead of being short-circuited, so a genuine user-defined method with that name links — without fabricating an edge to an actual builtin (#3381, thanks @ayushcodes10). - Fix: when the rebuild watchdog times out, spawned extraction workers are now killed before it exits (both the SIGALRM and the
os._exitfallback paths) instead of being orphaned (#3396, thanks @ayushcodes10). - Fix: Node subpath imports (
#services/foovia apackage.jsonimportsmap, including*wildcards and condition objects) now resolve to the mapped file — previously every#-specifier resolved to nothing (#3382, thanks @julien-e). - Fix: TS import-type normalization no longer scans every type-argument range per match (an O(matches × ranges) blowup that pinned extraction at 100% CPU on large mixed files); the filter is now a sorted-index lookup with byte-identical output (#3359, thanks @Sagexd08).
- Fix: Dart extraction now stamps
source_location(1-basedL{line}) on nodes and edges, matching every other extractor, instead of leaving it null (#3365, thanks @ayushcodes10).