github safishamsi/graphify v0.8.38

6 hours ago

What's changed

13 fixes and improvements merged in this release.

Correctness

  • Fix: LLM calls edges 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 a source_location. Post-fix annotation: calls precision 100% (n=6), overall INFERRED precision 94% (n=16).
  • Fix: JS/TS default imports/exports now produce symbol-level edges. export default class Foo imported as import Foo from './foo' previously got only a file→file edge. The class node now receives a proper imports edge and call resolution through renamed bindings works correctly.
  • Fix: tsconfig paths aliases resolved relative to baseUrl. NestJS, monorepo, and similar layouts using baseUrl: "./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. two render functions) no longer get mis-merged.
  • Fix: resolve_seed matches bare names against callable-decorated labels. A query for render now finds nodes labelled .render().

Performance

  • Fix: collect_files is now a single pruned os.walk. Replaces ~85 redundant rglob passes; 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 --out root. graphify extract ./src --out /tmp/out no longer leaks graphify-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-cli spawns claude.cmd on Windows headless installs. Adds CREATE_NO_WINDOW to both subprocess spawn sites.
  • Fix: claude-cli handles JSON-array envelope from Claude Code CLI ≥ 2.1.

Features

  • Feat: Cargo workspace dependency extraction. graphify extract ./my-workspace --cargo maps Rust workspace crates and internal crate_depends_on edges.
  • Fix: SystemVerilog class-level extraction improved. Dart with MyMixin now correctly emits mixes_in (not implements).

Docs

  • README grammar count updated: 28 → 36 tree-sitter grammars.

Install: uv tool install graphifyy · PyPI · CHANGELOG

Don't miss a new graphify release

NewReleases is sending notifications on new releases.