v0.8.38
parruda/swarmv0.8.38Jun 11, 2026by safishamsi
AI Summary
graphifyy v0.8.38 includes 13 fixes and improvements, focusing on LLM extraction accuracy, cache management, and performance optimizations, while adding support for Cargo workspaces and improving SystemVerilog extraction.
Key Highlights
- Fixed LLM `calls` edge direction and precision, achieving 100% precision for calls.
- Improved JS/TS import/export handling to produce symbol-level edges instead of just file-level edges.
- Performance optimization: `collect_files` now uses a single pruned `os.walk` instead of redundant `rglob` passes.
- Fixed AST cache namespacing by graphify version and anchored extraction cache at the `--out` root.
- Added Cargo workspace dependency extraction and improved SystemVerilog class-level extraction.
New Features
- Cargo workspace dependency extraction
- Improved SystemVerilog class extraction (mixes_in support)
- Fix for `tsconfig` paths aliases resolved relative to `baseUrl`
- Fix for LLM extraction prompt to ensure correct source/callee direction
Full Release Notes
## 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](https://pypi.org/project/graphifyy/0.8.38/) · [CHANGELOG](https://github.com/safishamsi/graphify/blob/v8/CHANGELOG.md)