- Feature:
graphify merge-graphsnow links a type declaration that two repos share — same fully-qualified namespace and name, from different repos — with asame_type_asedge, so a shared contract type is navigable across the repo boundary; two unrelated types that merely share a short name are not linked (#3007, thanks @durmazoguzhan). - Feature: C# properties now emit a member node per property, so a property is visible as a class member alongside fields and methods; the property's type still emits its references edge and no built-in types are fabricated (#3006, thanks @durmazoguzhan).
- Fix: when a C/C++/Objective-C declaration and its definition merge into one node, the node now points at the definition site (the implementation body) instead of the header prototype; the pick is deterministic regardless of file order, and a declaration with no definition keeps its own site (#2990, thanks @winesoft-namjin-yun).
- Fix: a bash command substitution on the right of an assignment (
x=$(fn)) now emits acallsedge like a bare$(fn), while argument-position and process substitutions stay suppressed (#2978, thanks @akshitj11). - Fix: a SQL
CREATE TABLEwrapped in aBEGIN/COMMITtransaction is now extracted, not just top-level DDL (#2953, thanks @akshitj11). - Feature: C# object-creation expressions (
new Foo()) now emit acallsedge to the constructed type, so constructor usage is visible in the graph; built-in and out-of-corpus types are not fabricated and a qualified construction resolves against declared namespaces (#2997, thanks @durmazoguzhan). - Feature: when a C# interface has exactly one implementing class, its methods are now linked to that implementation with a
dispatches_toedge, so a call through an injected dependency reaches the implementation; guarded against false links (single implementer, single case-sensitively same-named method, both ends C#) (#3003, thanks @durmazoguzhan). - Fix: Zig methods declared on enums and unions (not just structs) are now extracted, along with the calls in their bodies (#2999, thanks @rajatnagda45).
- Fix: a Julia abstract type declared with a supertype (
abstract type Dog <: Animal end) is now extracted with itsinheritsedge instead of being dropped (#3000, thanks @rajatnagda45). - Fix: a Common Lisp
defclasswhose superclass lives in another file now keeps itsinheritsedge — the cross-file base is a sourceless stub that the corpus rewire collapses onto the real definition (#3001, thanks @rajatnagda45). - Fix: PowerShell
enumdefinitions and their members are now extracted as a real sourced node, so a[Color]type reference resolves to the enum instead of a phantom stub (#3002, thanks @rajatnagda45). - Fix: a semantic result with no nodes and no hyperedges is no longer cached and stamped into the manifest, so an empty or degenerate LLM reply for a file no longer freezes it out of future re-dispatch; an existing manifest carrying such a stamp is healed by re-queueing those files (#2927, thanks @hopstreax).
- Fix: fresh semantic results are now scoped to the files actually dispatched before they reach the graph merge, so a stray fragment the model misattributes to a non-dispatched file can no longer replace that file's prior contribution (this also silences the "skipped out-of-scope source_file" warning) (#2926, thanks @SinghAman21).
- Fix:
graphify extract --code-only --forceover an existing graph now preserves the document/paper/image semantic layer instead of dropping it; files deleted from disk are still pruned (#2923, thanks @santhiprakash). - Fix: a class that inherits from a built-in base (e.g. PHP
extends \Exception) no longer collapses onto a same-named class in another language, so a PHP+TypeScript monorepo stops growing a phantom cross-language inheritance edge / god node; same-language inheritance and user classes named like a built-in still link (#2812, thanks @ousamabenyounes). - Fix: the git post-commit hook now resolves graphify when it is installed as a
uv tool, by scanning the uv tool locations after the pin and launcher probes miss and verifying graphify is importable before adopting an interpreter, so the hook stops silently no-opping under that install (#2852, thanks @santhiprakash). - Fix: re-exporting into an Obsidian vault created before the ownership manifest existed now adopts graphify's own notes (recognized by their
graphify/frontmatter tag or community markers) instead of orphaning them beside a fresh generation (#2863, thanks @abhay-codes07). - Fix: the tsconfig/jsconfig alias and
baseUrlcaches are now cleared per extraction run, so an edit tocompilerOptions.pathsorbaseUrlis picked up on the nextgraphify watch/ MCP rebuild instead of resolving imports through a stale alias map for the life of the process (#2917, thanks @sashankh). - Fix: the C# extractor now emits
referencesedges for types used as generic arguments — both at call sites (repo.Get<User>(),services.AddSingleton<IFoo, Foo>()) and in field declarations (private List<Order> _orders) — so generic calls and field-injected dependencies are no longer invisible; built-in and type-parameter types are not fabricated (#2911, thanks @santhiprakash and @brobl2008). - Fix: oversized PDFs are now sliced through their text converter and their token count is estimated from the extracted text rather than the raw container, so a large paper no longer loses everything past the character cap or gets mis-sized by its binary bytes; slicing (including the adaptive-retry bisection) indexes the same extracted text the prompt carries (#2903, #2906, thanks @abhay-codes07).
- Fix: every text document type is now sliced when oversized, not just five suffixes, so a large
.qmd/.skill/.html/.yaml/.ymlis no longer silently truncated at the character cap (#2900, thanks @abhay-codes07).