What's changed
13 fixes and improvements merged in this release.
Correctness
- Fix: LLM
callsedges now have correct direction. The extraction prompt never stated source = caller / target = callee — the LLM systematically emitted callee→caller. Explicit direction rule added to prompt. Ghost-node merge extended to collapse LLM bare-stem duplicates onto AST canonical nodes even when the LLM node has asource_location. Post-fix annotation:callsprecision 100% (n=6), overall INFERRED precision 94% (n=16). - Fix: JS/TS default imports/exports now produce symbol-level edges.
export default class Fooimported asimport Foo from './foo'previously got only a file→file edge. The class node now receives a properimportsedge and call resolution through renamed bindings works correctly. - Fix: tsconfig
pathsaliases resolved relative tobaseUrl. NestJS, monorepo, and similar layouts usingbaseUrl: "./src"now resolve@/*aliases correctly. - Fix: dedup pass 2 picks winner only from the verified pair. Unrelated same-named nodes from different files were being dragged into merges and supplanting the correct winner.
- Fix: global-graph edges rewired to deduplicated external nodes. Dangling edge references after external node dedup are now remapped before insertion.
- Fix: ghost-merge skips ambiguous
(basename, label)keys. Two same-named symbols in different files (e.g. tworenderfunctions) no longer get mis-merged. - Fix:
resolve_seedmatches bare names against callable-decorated labels. A query forrendernow finds nodes labelled.render().
Performance
- Fix:
collect_filesis now a single prunedos.walk. Replaces ~85 redundantrglobpasses; noise directories are pruned before descent.
Cache
- Fix: AST cache namespaced by graphify version. Stale cache from previous releases no longer silently produces wrong output after upgrade.
- Fix: extraction cache anchored at
--outroot.graphify extract ./src --out /tmp/outno longer leaksgraphify-out/into the scanned project. - Fix: frontmatter delimiter requires whole
---line. Thematic breaks (----) and YAML title lines (--- title: foo) no longer trigger false frontmatter parsing.
Platform
- Fix:
claude-clispawnsclaude.cmdon Windows headless installs. AddsCREATE_NO_WINDOWto both subprocess spawn sites. - Fix:
claude-clihandles JSON-array envelope from Claude Code CLI ≥ 2.1.
Features
- Feat: Cargo workspace dependency extraction.
graphify extract ./my-workspace --cargomaps Rust workspace crates and internalcrate_depends_onedges. - Fix: SystemVerilog class-level extraction improved. Dart
with MyMixinnow correctly emitsmixes_in(notimplements).
Docs
- README grammar count updated: 28 → 36 tree-sitter grammars.