v0.9.40
Fixed 12
- The 0.9.37 partial-parse warning no longer fires on valid TypeScript/TSX, now firing only when recovery plausibly costs symbols
- file_hash()'s stat fastpath no longer serves a stale digest when a file is rewritten to the same size within one mtime tick
- 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
- normalize_id() is idempotent for Turkish İ and similar codepoints with no ASCII identifier ids changes
- graph.json collection order is deterministic across runs
- explain and _find_node resolve node ids containing punctuation or non-ASCII characters
- .graphifyignore patterns match regardless of Unicode NFC/NFD normalization so accented ignore rules work on macOS
- Obsidian vault metadata directories .obsidian and .smart-env are skipped during detection
- A single unparenthesised arrow parameter no longer fabricates an indirect_call edge to an unrelated same-named callable
- Python extraction no longer crashes resolving an over-deep relative import above the package root
- A Go qualified type resolves by import path instead of binding by bare name to an unrelated same-named symbol
- graph.html's document title no longer embeds the generator's absolute host path
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-lessin_*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_filefrom 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.jsoncollection order is deterministic across runs (#2582, thanks @hjotha). - Fix:
explain/_find_noderesolve node ids containing punctuation or non-ASCII characters (#2467, thanks @sean-soomgo). - Fix:
.graphifyignorepatterns 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 anindirect_calledge 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).