This release adds 3 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
+5 more
Summary
AI summaryInstall safety fixes prevent data loss and node identity improvements preserve cache across moves.
Full changelog
A large maintenance release: install-safety fixes, node-identity/canonicalization fixes, cross-file resolution improvements, and a batch of community contributions.
Install and data safety
claude/gemini/codex/codebuddy installno longer overwrite a settings/hooks file they cannot parse (#2167). On any JSON parse error they used to fall back to an empty config and rewrite the whole file, destroying the user's settings (most often triggered by a UTF-8 BOM). They now readutf-8-sig, refuse to modify a non-JSON-object file, and back up to<name>.graphify-bakbefore any write.- Incremental
extract --no-clusterno longer overwrites the full graph with just the changed files (#2169). It now merges the existing graph forward with the same replace/prune semantics as the clustered path and canonicalizes cross-file edge targets. - Running the test suite no longer touches the developer's real
~/.claude/~/.gemini/~/.codebuddy/~/.copilot(#2168).
Node identity and caching
stat-index.jsonis stored with root-relative keys (re-anchored on load, mirroringmanifest.json) and pruned of deleted-file entries, so a moved or cloned corpus keeps its cache hits instead of re-extracting everything (#2199).- JavaScript/TypeScript regex-rescued imports (Svelte/Astro/Vue) no longer create ghost target nodes with absolute-path ids (#2195).
- Cross-file
conceptnodes with identical normalized labels now merge, matching the behavior already applied to near-identical labels (#2182). - Absolute
source_filepaths (for example from a Windows scan) no longer break node identity (#2197), andbuild_from_jsonfolds legacy field aliases (name/path/type/confidence_score) so alias-carrying nodes stop entering the graph invisible and unmergeable (#2194).
Resolution
- C# member calls on a typed receiver now resolve namespace-aware, with
base./this.fieldreceivers, inherited-member lookup through theinheritschain, and shadow-poisoning so a local shadowing a field of a different type no longer produces a wrong edge (#1609, adapted from #1620 by @TheFedaikin). - Python decorators now create graph edges so
affected <decorator>finds what a decorator touches, with builtin/stdlib decorators excluded (#2154, thanks @Rishet11). - JavaScript/TypeScript non-relative imports resolve through
jsconfig.json/tsconfig.jsonbaseUrlandpaths(#2153, thanks @Rishet11). - Swift/Foundation/SwiftUI builtins are filtered from call resolution and god-node ranking (#2147, thanks @MasterFede5).
graphify query/explainno longer fabricateindirect_calledges to class definitions (#2137, thanks @Rishet11).- Bash calls into a
sourced file resolve for extensionless scripts and baresource lib.sh(#2171), andsource "${VAR}/lib.sh"resolves against the variable's real directory (#2172). Both thanks @Souptik96. - SQL routines with PL/pgSQL-only bodies that tree-sitter cannot parse are recovered by a raw-text scan, gated on a failed parse (#2180, thanks @Souptik96).
Windows and hooks
- The git-hook interpreter allowlist accepts Windows backslash paths (#2126, thanks @Rishet11) and interpreter paths containing a space (#2166, thanks @Souptik96); the rebuild timeout is armed on Windows via a threading fallback (#2148, thanks @Rishet11); the extraction process pool is skipped when only one worker is available (#2173, thanks @Souptik96).
- The Codex
PreToolUsehook is documented as an intentional no-op (#2165, thanks @Souptik96).
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About graphify
AI coding assistant skill (Claude Code, Codex, OpenCode, Cursor, Gemini CLI, OpenClaw, Factory Droid, Trae). Turn any folder of code, docs, papers, images, videos, or YouTube links into a queryable knowledge graph
Beta — feedback welcome: [email protected]