- Fix: a Python type reference to a name imported from another module now resolves to that module's definition — the sourceless stub is repointed onto the exact imported symbol (not a bare-name match), so two same-named types in different modules bind to their own (#3252, thanks @hopstreax).
- Feature:
graphify merge-graphsnow resolves a member call whose receiver type is defined in another repo — the call is parked at extraction and linked at merge time only on a single unambiguous cross-repo type + method match, composing with the cross-repo type link (#3152, thanks @xiongjianxu). - Fix: the
definition_filenode attribute (the merged decl/def implementation site) is now stored portably — relative to the scan root with canonical separators, matchingsource_file— across graph.json, the AST cache, the watch/incremental path, and direct extract, so a graph is byte-stable across machines (#3223, thanks @abhay-codes07 and @hopstreax). - Fix:
god_nodesnow honoursexclude_hubs_percentile, so--exclude-hubsactually affects god-node ranking (not just clustering); the default output is unchanged (#3205, thanks @abhay-codes07). - Fix: byte-identical duplicate reference edges are now collapsed when the extractor emits them, so the graph-health diagnostic no longer flags duplicates that the build was already discarding (#3251, thanks @abhay-codes07).
- Fix: two query results saved in the same second whose questions share a 50-character prefix no longer overwrite each other — saved memory-doc filenames now carry a short unique suffix (#3301, thanks @daichiyasunami-vottia).
- Fix: a graph.json carrying top-level hyperedges keeps them on export — the loader re-attaches the top-level
hyperedgesslot thatnode_link_graphotherwise drops, so hand-edited or externally written hyperedges survive re-export (#3321, thanks @yiheng-kkk). - Feature: the query scorer now ranks a match on a node's
rationaleattribute as its own tier, between an exact label match and a source-path match — adding recall for rationale-only hits without inflating the exact-match coverage score (#2293, thanks @andytsai821201-spec). - Fix:
graphify installnow writes the.graphify_versionstamp atomically (temp file +os.replace), so a crash mid-write cannot leave a truncated version file (#3286, thanks @drmikecrypto). - Fix: the Obsidian/canvas export now writes
graph.canvasand vault notes atomically, preventing a concurrent reader (or a git mmap hash) from seeing a half-written file (#3282, thanks @drmikecrypto). - Fix: on Python 3.10 a missing
tomlino longer silently drops everypyproject.toml/Cargo.tomlfrom the graph —tomliis now a runtime dependency for pre-3.11, and the manifest parser surfaces a visible per-file error if it is ever absent (#3283, thanks @drmikecrypto).