# graphify v0.9.47 - Product: graphify (https://whatsnew.fyi/product/graphify) - Vendor: graphify - Date: 2026-08-19 - Version: v0.9.47 - Original notes: https://github.com/Graphify-Labs/graphify/releases/tag/v0.9.47 - Permalink: https://whatsnew.fyi/product/graphify/releases/v0.9.47 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** — Extraction now bisects a file chunk on timeout instead of failing the whole chunk, routing recognized timeouts through the same bounded split-and-merge path as context-window-exceeded errors - **fixed** — Cache no longer collapses symlinks when keying files, so a symlink alias and its target get distinct identities - **fixed** — graphify extract --out no longer writes converted Office/Google-Workspace sidecars back into the scanned source tree - **fixed** — Git-hook out-of-project read guard no longer misclassifies a rooted-but-driveless path as cwd-relative on Windows - **fixed** — Partial-parse warning no longer ends with a hardcoded citation to issue #2551 and now reports the surviving symbol count - **fixed** — Obsidian export now keeps non-ASCII letters in community tags instead of collapsing every non-Latin community to the same underscore tag - **added** — JavaScript/TypeScript factory functions that assign callable members to a local object literal now keep those members in the graph as methods - **fixed** — graph.json field order is now stable across a read-rebuild round-trip - **fixed** — graphify query now names the graph it opened and its node count at the head of the answer - **fixed** — claude backend no longer crashes with AttributeError when an extended-thinking response leads with a thinking block - **fixed** — graphify update / save_manifest no longer rewrites manifest.json timestamps on a no-op run - **fixed** — C# 12 primary constructor's parameters are now walked, so class Svc(IRepo repo) emits the references edge to IRepo - **fixed** — AST-derived INFERRED edges now carry a rubric confidence_score keyed to the relation instead of landing at the rubric-forbidden 0.5 or a flat 0.8 - **fixed** — Legacy graph.json that stored a numeric edge confidence no longer warns once per edge on every incremental reload - Fix: extraction now bisects a file chunk on timeout instead of failing the whole chunk, so one slow file no longer drops its chunk-mates from the graph; recognized timeouts (subprocess, SDK, and botocore read/connect) route through the same bounded split-and-merge path as context-window-exceeded errors, and a single unsplittable file that times out is left unstamped and retried next run (#2866, thanks @hopstreax). - Fix: the cache no longer collapses symlinks when keying files, so a symlink alias and its target get distinct identities and one no longer displaces the other from the graph on a warm cache; the detect-layer containment guard that resolves paths to block symlink escape is unchanged (#2832, thanks @oleksii-tumanov). - Fix: `graphify extract --out ` no longer writes converted Office/Google-Workspace sidecars back into the scanned source tree; sidecar writes go through the cache root while the content hash stays anchored to the scan root, so a read-only or pinned checkout stays clean (#2787, thanks @hopstreax). - Fix: the git-hook out-of-project read guard no longer misclassifies a rooted-but-driveless path (`\foo\bar`) as cwd-relative on Windows, where such a path resolves against the current drive root and is actually outside the project; POSIX behaviour is unchanged (#2795, thanks @abhay-codes07). - Fix: the partial-parse warning no longer ends with a hardcoded citation to the closed Kotlin-specific issue #2551 (which misdirected reporters of unrelated failures); it now reports the surviving symbol count so a total-loss file reads differently from a partially-recovered one (#2788, thanks @abhay-codes07). - Fix: Obsidian export now keeps non-ASCII letters (Hangul, CJK, Cyrillic, accented Latin) in community tags instead of collapsing every non-Latin community to the same underscore tag, and the graph-view colour groups query the identical tag so colours match again (#2862, thanks @josh-leung-KR). - Feature: JavaScript/TypeScript factory functions that assign callable members to a local object literal (`const api = {}; api.foo = fn`) now keep those members in the graph — the API object is modeled beneath its factory and the assigned functions attach as methods, including arrow-function assignments and their intra-factory call edges. The owner is minted only for identifiers proven to be object-literal bindings in the enclosing function, so arbitrary receivers do not reintroduce the phantom-owner flood, and the factory's `contains` edge is emitted once no matter how many methods hang off the object (#2745, thanks @rajanpanth). - Fix: `graph.json` field order is now stable across a read-rebuild round-trip, so re-running `graphify update` on an unchanged graph produces a byte-identical file instead of reshuffling node and link keys (#2582, thanks @C0KERNEL). - Fix: `graphify query` now names the graph it opened and its node count at the head of the answer (relative to the CWD when the graph is underneath it, absolute otherwise), so a query run from a parent project no longer silently answers from the wrong corpus with no indication which graph was used (#2789, thanks @abhay-codes07). - Fix: the `claude` backend no longer crashes with `AttributeError: 'ThinkingBlock'` when an extended-thinking response leads with a thinking block; the first text block is read instead (#2697, thanks @mdshzb04). - Fix: `graphify update` / `save_manifest` no longer rewrites `manifest.json` timestamps on a no-op run, so `graphify-out/` stops showing as dirty (and stops producing a trailing graph commit) when nothing changed; a genuine change still updates and persists (#2838, thanks @hopstreax). - Fix: a C# 12 primary constructor's parameters are now walked, so `class Svc(IRepo repo)` emits the `references` edge to `IRepo` and calls through `repo` resolve — previously the class silently dropped its dependency; built-in and type-parameter types are not fabricated (#2829, thanks @brobl2008). - Fix: AST-derived INFERRED edges now carry a _[Truncated at 4000 characters — full notes: https://github.com/Graphify-Labs/graphify/releases/tag/v0.9.47]_