# graphify v0.9.52 - Product: graphify (https://whatsnew.fyi/product/graphify) - Vendor: graphify - Date: 2026-08-29 - Version: v0.9.52 - Original notes: https://github.com/Graphify-Labs/graphify/releases/tag/v0.9.52 - Permalink: https://whatsnew.fyi/product/graphify/releases/v0.9.52 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **fixed** — graphify watch/update no longer silently drops Markdown links to semantic-backed documents during code-only rebuilds; authored wikilink references are repointed onto the target file's representative node - **fixed** — T-SQL routines with CREATE OR ALTER, PROC shorthand, and bracket-delimited names like [dbo].[Get Widgets] are now recovered by name and appear in the graph without commented-out or dynamic SQL fabricating nodes - **fixed** — graphify --help now lists the prs and provider commands and the export formats it actually supports - **fixed** — corrected the deepseek-v4-flash pricing entry and the build_merge docstring - **fixed** — Razor @inject/@using in .razor/.cshtml files now flow through the scope-aware C# type resolver so injected service types resolve to their cross-file definitions - **fixed** — the MCP prs tools (list_prs, triage_prs, get_pr_impact) now surface genuine failures as MCP errors instead of success text - **fixed** — the MCP get_node tool now resolves a node through the same tiered resolver as get_neighbors so the two agree deterministically - **fixed** — graphify install --project now emits a bare graphify hook command resolved at run time instead of pinning the absolute interpreter path, so the committed hook no longer churns across machines - **fixed** — a PHP new Foo() now emits a calls edge to the constructed class, completing object-creation modeling across C#, TypeScript, and PHP - **fixed** — a method call through a field whose type is declared on an ancestor class now resolves from a subclass; the field-type lookup walks the inheritance chain - **fixed** — the Objective-C field-to-type table is now re-keyed alongside node-id rewrites so self.field/obj.field method calls still resolve after graphify update normalizes ids - **fixed** — TypeScript type-only imports no longer manufacture false import cycles; the type-only edge is marked and excluded from cycle detection while mixed imports keep their real value-import edge - **fixed** — an import(...) used as a call type-argument no longer causes declarations after it to be dropped; the construct is normalized before parsing with source locations preserved - Fix: `graphify watch`/`update` no longer silently drops a Markdown link to a semantic-backed document during a code-only rebuild — authored `[[wikilink]]` references are repointed onto the target file's representative node, preserving links to the semantic tier without resurrecting a deleted target (#3190, thanks @logan683). - Fix: T-SQL routines that parse to tree-sitter ERROR nodes — `CREATE OR ALTER`, the `PROC` shorthand, and bracket-delimited names like `[dbo].[Get Widgets]` — are now recovered by name over a comment/string-masked copy, so they appear in the graph without commented-out or dynamic SQL fabricating nodes (#3164, thanks @egarcia74). - Fix: `graphify --help` now lists the `prs` and `provider` commands and the export formats it actually supports (thanks @SyedFahad7). - Fix: corrected the `deepseek-v4-flash` pricing entry and the `build_merge` docstring (which wrongly claimed it saved the graph; callers persist) (thanks @adrianengkh). - Fix: Razor `@inject`/`@using` in `.razor`/`.cshtml` files now flow through the scope-aware C# type resolver, so an injected service type resolves to its cross-file definition; an external/undeclared type fabricates nothing (partially addresses #3187 — a bare inject of a file-scoped-namespace type still dangles, follow-up) (thanks @hopstreax). - Fix: the MCP `prs` tools (`list_prs`, `triage_prs`, `get_pr_impact`) now surface a genuine failure as an MCP error (`isError`) instead of success text, while an empty-but-successful result is unaffected (thanks @noQbot). - Fix: the MCP `get_node` tool now resolves a node through the same tiered resolver as `get_neighbors`, so the two agree deterministically instead of `get_node` returning an iteration-order substring match (thanks @noQbot). - Fix: a `graphify install --project` (committed/shared) install now emits a bare `graphify` hook command resolved at run time instead of pinning the absolute interpreter path, so the committed hook no longer churns across machines; the global install still pins the absolute path (thanks @davidbhoward). - Fix: a PHP `new Foo()` now emits a `calls` edge to the constructed class (namespaced names resolve to the last segment), completing the object-creation modeling across C# (#2998), TypeScript (#3135), and now PHP; dynamic (`new $var()`), `self`/`static`/`parent`, and unknown external constructions fabricate nothing (#3115, thanks @abhay-codes07). - Fix: a method call through a field whose type is declared on an ancestor class now resolves from a subclass — the field-type lookup walks the inheritance chain (per-file for Java/C#, cross-file for Java/Objective-C), cycle-safe and without fabricating edges (#3151, thanks @abhay-codes07). - Fix: the Objective-C field-to-type table is now re-keyed alongside the node-id rewrites, so `self.field` / `obj.field` method calls still resolve after `graphify update` normalizes ids (#3150, thanks @abhay-codes07). - Fix: TypeScript type-only imports (`import type { T } from './m'`) no longer manufacture false import cycles; the type-only edge is marked and excluded from cycle detection while a mixed `import { type A, B }` keeps its real value-import edge (#3123, thanks @abhay-codes07). - Fix: an `import(...)` used as a call type-argument (`f()`) no longer causes declarations after it to be dropped; the construct is normalized before parsing with source locations preserved (#3185, thanks @hopstreax).