v0.9.5

Graphify-Labs/graphifyv0.9.5Jul 2, 2026by safishamsi

AI Summary

Correctness fixes addressing regressions in indirect calls, stale community labels, and case-sensitive name resolution, alongside robustness improvements for `merge-graphs` and `cluster-only`.

Key Highlights

  • Cross-file `indirect_call` now resolves via the CLI, fixing a 0.9.4 regression.
  • `graphify cluster-only` no longer reuses stale community labels after graph changes.
  • Cross-file name resolution respects case in case-sensitive languages.
  • `merge-graphs` now tolerates mixed directed/multigraph inputs.

New Features

  • CLI-based indirect call resolution.
  • Stale community label prevention in cluster-only mode.
  • Case-sensitive cross-file name resolution.
  • Robustness fixes for graph merging.
  • Fixes for Swift, C#, C++, and PHP extractors.

Full Release Notes

## graphify 0.9.5

`pip install -U graphifyy==0.9.5`

### Correctness (two 0.9.4 regressions + a false-hub fix)
- Cross-file `indirect_call` now resolves via the `graphify extract` CLI, not just the `extract()` API — a 0.9.4 regression where the callable-target guard went stale after id relativization dropped every cross-file indirect edge on the CLI path.
- `graphify cluster-only` no longer reuses stale community labels after the graph changed — a re-scoped/re-clustered graph kept old labels on a different community set. It now writes per-community membership signatures and hub-relabels changed communities with a warning.
- Cross-file name resolution respects case in case-sensitive languages (#1581) — `from pathlib import Path` no longer resolves to a shell `export PATH=...` node (one variable had become the #1 god-node with 266 false edges). Only PHP/SQL/Nim still fold.

### Language extractor fixes (thanks @Synvoya, @jerryliurui)
Ruby & Groovy inheritance edges; Elixir multi-alias imports; Fortran function calls; Rust enum-variant + tuple-struct references; Julia qualified/relative/scoped imports; SystemVerilog qualified fields; Scala `var` fields; PowerShell class base types; ObjC protocol-to-protocol adoption; PHP promoted constructor properties; C# auto-properties; C++ base-class template args; Swift enum associated values; and Swift singleton-into-local resolution (`let x = Type.shared; x.method()`, #1604).

### Incremental `--update` data fixes
Hyperedges from unchanged files no longer dropped (#1574); deleted files no longer leave ghost nodes, with symlinked-root hardening (#1571).

### Robustness & tooling
`merge-graphs` tolerates mixed directed/multigraph inputs (#1606); corrupt `graph.json` gives an actionable error (#1537/#1536); cross-chunk node-ID collisions warn instead of silently dropping (#1508); the skill accepts Homebrew `python@3.x` interpreters (#1586); git-hook foreground stalls eliminated (#1601); direction-aware skill-version warning (#1568); deterministic hub community labels; Windows hook worker limit (#1554).

### Serve / MCP
Question/filler stopwords dropped from query terms (#1597); optional `project_path` lets one MCP server back a whole workspace of projects (#1594).

Thanks to all contributors: @sheik-hiiobd, @Synvoya, @jerryliurui, @AdrianRusan, @SUDARSHANCHAUDHARI, @socar-tender, @goodjira, @TPAteeq, @guyoron1, @nuthalapativarun, @matiasduartee, @joanfgarcia, and the #1601/#1597 authors.