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).