Bug-fix release. pip install -U graphifyy / uv tool install graphifyy@0.8.41.
Fixes
-
Swift cross-file class relationships now resolve through member calls and constructors. A per-file type table (from property/parameter declarations + constructor inference) types the receiver of
recv.method(),Type.staticMethod(),Singleton.shared.method(), andself.prop.method(), and property/field initializers (let vm = VM()) are walked for constructor calls. Edges emit only when the receiver's type resolves to exactly one definition (preserving the god-node guards) and are taggedINFERRED. (#1356) -
/graphify <path> --updateprunes stale nodes correctly. The update runbook calledbuild_mergewithoutroot=, so absolute prune paths never matched the graph's relativesource_filevalues — nothing was pruned and changed/deleted files left ghost nodes that compounded every run. (#1361) -
export obsidianno longer writes an empty 32-bytegraph.canvason a populated graph.to_canvasnow falls back to one synthetic community covering every node when no community data is present (e.g.--no-clusterbuilds). (#1324) -
Edges missing
source_file(occasionally emitted by the semantic/LLM extractor) are now backfilled from their endpoint nodes inbuild_from_jsonand the--no-clusterpath, so they no longer reachgraph.jsonwithout a file reference. (#1279) -
Fuzzy dedup no longer over-merges distinct nodes in three cases: numbered/versioned siblings (
ADR 0011vsADR 0013), cross-filerationale/documentboilerplate (file-anchored like code), and cross-file labels sharing a long prefix but diverging in a distinguishing token (testing-library jest-nativevsreact-native, now scored on plain Jaro). Same-file near-duplicates still merge. (#1284 — thanks @van4oza, #1243) -
OpenAI-compatible backends (
ollama,openai,deepseek,kimi) now honour their configured16384output-token cap instead of silently falling back to8192, which had been truncating deep-mode JSON mid-string.GRAPHIFY_MAX_OUTPUT_TOKENSstill overrides. (#1365)
Full changelog: https://github.com/safishamsi/graphify/blob/v8/CHANGELOG.md