- Fix: atomic writes now fall back correctly on Windows
WinError 17(cannot move to a different drive), not justPermissionError— a sharedos_replace_with_fallbackcopies through a temp in the target directory and restores the original if the swap fails, keeping install/export/cache writes crash-safe (#3508, thanks @ayushcodes10). - Fix: files that could not be classified into any language or type are now surfaced (a count and top extensions in the console and GRAPH_REPORT) instead of vanishing from a "successful" run; noise and ignored paths are unaffected (#3511, thanks @ayushcodes10).
- Fix: a C or C++ header with no trailing newline no longer trips a tree-sitter syntax error — a newline is appended before parsing when the source lacks one (#3513, thanks @imanolpg).
- Fix: Office and Workspace document sidecars converted into
graphify-out/converted/are no longer dropped whengraphify-out/is gitignored — the tool stops ignoring its own output (#3504, thanks @ayushcodes10). - Fix: a call inside an exported function (
export function f(){ g() },export const f = () => g()) now resolves, including calls to aliased imports (import { x as y }; y()) (#3346, thanks @abhay-codes07). - Fix: a package.json
exportsmap is now resolved by importer platform with the runtime condition preferred overtypes, so cross-package edges no longer drop to a non-existent.d.ts(#3487, thanks @dajiaohuang). - Feature: Python 3.14 is now supported — optional dependencies without 3.14 wheels are gated to drop-in replacements (
jiebatojieba-py,graspologictograspologic-native) by interpreter version, and vulnerable dependency floors (setuptools, pypdf, yt-dlp) were raised (#3490, thanks @taazbro).