v0.9.40
Graphify-Labs/graphifyv0.9.40Aug 11, 2026by safishamsi
AI Summary
A correctness and determinism release fixing TypeScript warnings, node-id bugs, and various crashes in Python and Go extraction.
Key Highlights
- Fixes a TypeScript false-warning regression on valid TS/TSX files.
- Fixes node-id determinism issues related to file hashing, path absoluteness, and Turkish characters.
- Fixes a Python crash resolving over-deep relative imports above the package root.
- Fixes a Go qualified type resolution bug that bound by bare name instead of import path.
Full Release Notes
Correctness and determinism release: fixes a TypeScript false-warning regression, several node-id / path / cache determinism bugs, a Python crash, a Go phantom-reference, and more — with fixes from many community contributors. - Fix: the 0.9.37 partial-parse warning no longer fires on valid TypeScript/TSX (#2610, #2599, thanks @Sid-AutoWisdom and @atlasplatformu-ai). The warning now fires only when recovery plausibly cost symbols, so valid TS with a `&` in a JSX string attribute or a semicolon-less `in_*` interface member is silent, while the genuine Kotlin one-line-body and Luau cases still warn. - Fix: `file_hash()`'s stat fastpath no longer serves a stale digest when a file is rewritten to the same size within one mtime tick (#2612, thanks @rajarshidattapy). - Fix: stored-path absoluteness is detected cross-platform, so a POSIX-absolute `source_file` from a Linux/CI-built graph no longer leaks into node ids on Windows (#2618, thanks @rajarshidattapy). - Fix: `normalize_id()` is idempotent for Turkish `İ` and similar codepoints; no ASCII identifier ids change (#2614, thanks @rajarshidattapy). - Fix: `graph.json` collection order is deterministic across runs (#2582, thanks @hjotha). - Fix: `explain` / `_find_node` resolve node ids containing punctuation or non-ASCII characters (#2467, thanks @sean-soomgo). - Fix: `.graphifyignore` patterns match regardless of Unicode NFC/NFD normalization, so an accented ignore rule works on macOS (#2544, thanks @bruno-growthsales). - Fix: Obsidian vault metadata directories (`.obsidian`, `.smart-env`) are skipped during detection (#2493, thanks @rohit-jsfreaky). - Fix: a single unparenthesised arrow parameter (`x => f(x)`) is shadowed, so it no longer fabricates an `indirect_call` edge to an unrelated same-named callable (thanks @imagineers-tyler); follows the 0.9.38 sibling-closure fix (#2568). - Fix: Python extraction no longer crashes resolving an over-deep relative import above the package root (#2605, thanks @SinghAman21). - Fix: a Go qualified type (`pkg.Type`) resolves by import path instead of binding by bare name to an unrelated same-named symbol (#2608, thanks @gnukeno). - Fix: `graph.html`'s document title no longer embeds the generator's absolute host path (#2598, thanks @michaelxer).