Skip to content

Releases: safishamsi/graphify

v0.4.19

17 Apr 11:50

Choose a tag to compare

What's fixed

  • #390 — AST/semantic node ID mismatch: edges were dropped when the LLM generated slightly different casing or punctuation than the AST extractor. build_from_json now normalises IDs before dropping edges.
  • #298 — Cross-file call resolution extended to Go, Rust, Zig, PowerShell, and Elixir. Unresolved callees are saved as raw_calls and resolved globally in a post-pass.
  • #410 — Windows graphify-out/graphify-out nesting bug. cache_dir and _rebuild_code now call .resolve() on the root path.
  • #401graphify hook install now respects core.hooksPath git config (Husky and similar tools).
  • #385 — Kiro skill YAML description field now quoted — fixes parse error in Kiro's YAML loader.

Docs

  • Windows PATH tip and macOS pipx ensurepath tip added to install section (#413)
  • Team workflow section: committing graphify-out/, .graphifyignore usage, recommended .gitignore additions (#369)

Upgrade

pip install --upgrade graphifyy

v0.4.18 -- cross-file call resolution + semantic/AST ID fix

16 Apr 06:25

Choose a tag to compare

  • Cross-file call resolution for Go, Rust, Zig, PowerShell, and Elixir (raw_calls saved and resolved globally)
  • Fix semantic/AST node ID mismatch: build.py now reconciles mismatched IDs so LLM-generated edges survive the merge
  • skill.md: explicit node ID generation rules with example to reduce LLM ID drift

v0.4.17 -- llm.py removed from wheel

16 Apr 06:25

Choose a tag to compare

  • Move llm.py out of graphify package into scripts/ so it is not shipped in the PyPI wheel

v0.4.16 -- crash fixes

16 Apr 06:25

Choose a tag to compare

  • Fix NameError: name 'sys' is not defined in graphify watch (v0.4.15 regression)
  • Fix .mjs files detected but producing 0 nodes (missing _DISPATCH entry)
  • Exclude llm.py from wheel

v0.4.15

15 Apr 22:09

Choose a tag to compare

What's new

  • VS Code Copilot Chatgraphify vscode install configures VS Code Copilot Chat with a Python-only skill (works on Windows PowerShell) and writes .github/copilot-instructions.md for always-on graph context (#206)
  • Fix: OpenCode plugin path used backslashes on Windows causing duplicate opencode.json entries — fixed via .as_posix() (#378)
  • Fix: Gemini CLI on Windows now installs skill to ~/.agents/skills/ (correct higher-priority path) instead of ~/.gemini/skills/ (#368)
  • Fix: .mjs and .ejs files now recognised by the AST extractor as JavaScript (#365)
  • Fix: god_nodes() return field renamed edgesdegree for clarity
  • Fix: graphify watch on macOS now uses PollingObserver by default to avoid missed events with FSEvents (#373)

Upgrade

pip install --upgrade graphifyy

v0.4.14

14 Apr 23:28

Choose a tag to compare

What's new

Cross-file call resolution for all languages

AST extraction now emits cross-file calls edges for Swift, Go, Rust, Java, C#, Kotlin, Scala, Ruby, PHP, and every other supported language. Previously only Python had this. Unresolved call sites are saved per file and resolved against a global label map after all files are processed. Cross-file edges are marked INFERRED with confidence 0.8.

PHP static method calls and constant references

Two node types were missing from the PHP extractor. scoped_call_expression (static calls like Helper::format()) now emits calls edges. class_constant_access_expression (enum and constant references like Status::ACTIVE) now emits references_constant edges.

Wiki flag implemented

--wiki now actually runs. Step 6b added to the skill pipeline (before the cleanup step so community labels are still available). Calls to_wiki() and writes graphify-out/wiki/ with index.md and one article per community and god node.

Performance: betweenness centrality on large graphs

edge_betweenness_centrality now returns early for graphs over 5000 nodes. betweenness_centrality in suggest_questions uses k=100 approximate sampling for graphs over 1000 nodes. Eliminates hangs on large repos.

OpenCode plugin installed on both install paths

graphify install --platform opencode now also writes .opencode/plugins/graphify.js and registers it in opencode.json. Previously only graphify opencode install did this.

Cache root fix for subdirectory runs

extract() accepts an explicit cache_root parameter. When graphify narrows to a subdirectory on a large repo, the cache stays at ./graphify-out/cache/ instead of /graphify-out/cache/.

Windows stability

os.replace in the cache writer falls back to shutil.copy2 on PermissionError (WinError 5). graphify update exits with code 1 when rebuild fails instead of silently returning. All generated config files now use graphify update . instead of a hardcoded python3 invocation.

Kiro package data

skill-kiro.md was missing from pyproject.toml package-data, causing graphify kiro install to fail on fresh pip installs. Fixed.

Upgrade

pip install -U graphifyy

v0.4.13

14 Apr 08:30

Choose a tag to compare

What's new

Verilog / SystemVerilog support

  • .v and .sv files now extracted via tree-sitter-verilog
  • Extracts modules, functions, tasks, package imports, and instantiations

HiDPI hyperedge fix

  • Hyperedges now render correctly on high-DPI displays (Retina, 4K)
  • Fixed double-applied view transform in the afterDrawing canvas callback

Null label guards in MCP server

  • Fixed crashes when nodes have null label or source_file fields in query_graph, get_neighbors, and get_node tools

AGENTS.md / GEMINI.md rebuild rule

  • Replaced hardcoded python3 invocation with graphify update .
  • Uses the correct interpreter (pipx, venv, system) and is properly scoped to the project subfolder

Upgrade

pip install -U graphifyy

v0.4.12 — Kiro IDE/CLI support, portable cache

13 Apr 22:04

Choose a tag to compare

What's new

Kiro IDE/CLI support (#319, #321)

graphify kiro install writes:

  • .kiro/skills/graphify/SKILL.md — the /graphify slash command skill
  • .kiro/steering/graphify.md — always-on steering with inclusion: always, injected into every Kiro conversation automatically

Portable cache (#311)

file_hash() now uses the path relative to the project root instead of the absolute path. Cache entries are now portable across machines, CI runners, and different checkout directories.

Note: this is a cache-breaking change. Delete graphify-out/cache/ once after upgrading — it will be rebuilt on the next run.

pip install --upgrade graphifyy
rm -rf graphify-out/cache/   # one-time after upgrading

v0.4.11 — Bug fixes: query crash, MCP CWD, .graphifyignore subfolder

13 Apr 22:03

Choose a tag to compare

Bug fixes

  • graphify query crashes with ValueError on MultiGraphG.edges[u, v] replaced with G[u][v] + MultiGraph guard (#305)
  • AttributeError: 'NoneType' has no attribute 'lower' in serve.py when a node has a null source_file (#307)
  • MCP server launched from a different directory now correctly derives the graphify-out base from the absolute path, not CWD (#309)
  • .graphifyignore patterns from a parent directory now fire correctly when graphify is run on a subfolder (#303)
pip install --upgrade graphifyy

v0.4.10 — Dart/Flutter, Hermes, 6 new CLI commands, PHP improvements

13 Apr 22:03

Choose a tag to compare

What's new

Dart/Flutter support

.dart files extracted via regex — classes, mixins, functions, imports. graphify now supports 23 languages.

Hermes Agent platform

graphify install --platform hermes writes the skill to ~/.hermes/skills/graphify/SKILL.md.

6 new terminal CLI commands

graphify path "AuthModule" "Database"   # shortest path between two nodes
graphify explain "SwinTransformer"      # plain-language node explanation
graphify add https://...                # fetch URL, save to ./raw, update graph
graphify watch ./src                    # rebuild on code changes, no LLM needed
graphify update ./src                   # re-extract code files only
graphify cluster-only .                 # rerun clustering on existing graph.json

PHP extractor improvements

Static property access, config() helper calls, service container bindings, event listener arrays.

Other fixes

  • graspologic python_version < '3.13' marker (#290)
  • matplotlib declared in [svg] extra (#288)
  • norm_label in graph.json for diacritic-insensitive search (#293)
  • prune_dangling_edges() utility (#294)
  • cursor install crash fixed (#281)
  • agents uninstall platform-aware (#276)
  • Codex skill: waitwait_agent (#273)
  • Windows hook tests platform-aware (#279)
  • Antigravity: YAML frontmatter injection + MCP config snippet (#268)
pip install --upgrade graphifyy