v0.9.14
siyuan-note/siyuanv0.9.14Jul 13, 2026by safishamsi
AI Summary
A correctness-focused release addressing git worktree bloat, username leaks, and export crashes.
Key Highlights
- Massive graph bloat fix for git worktrees by honoring `.git/info/exclude`.
- Fixed username leaks in Visual Studio solution-folder nodes.
- Fixed `graphify export graphml` crashing on complex (non-scalar) attributes.
Full Release Notes
graphify turns any folder of code, docs, papers, images, or videos into a queryable knowledge graph. 0.9.14 is a correctness-focused release: eleven fixes across detection, the git hooks, extraction caching, query seeding, and export — most from community reports, several with their own PRs. ## Highlights - **Massive graph bloat from git worktrees is gone (#1810).** Detection now honors `.git/info/exclude` — where `git worktree add` records nested worktree paths — so graphify no longer walks into worktree copies of the repo. One reporter's 5-worktree repo had ballooned from ~9,400 nodes / 10 MB to ~210,000 nodes / 311 MB, regenerated on every commit. - **No more username leaks in committed graphs (#1789).** Visual Studio solution-folder nodes were keyed off the absolute scan path, embedding the local username into `graph.json`. They're now relative. - **`graphify export graphml` stopped crashing (#1831).** Any dict/list-valued attribute (a node `metadata` dict, the graph-level `hyperedges` list) failed the entire export and left a 0-byte file; non-scalars are now JSON-serialized and the write is atomic. - **The CLI no longer reports success as failure through a pipe (#1807).** `graphify query … | head` used to exit 255 when the reader closed early, breaking CI wrappers and agent harnesses; an early-closing reader is now treated as success. ## All fixes - Fix: Visual Studio solution-folder node ids no longer embed the absolute scan path / username (#1789, thanks @fremat79). - Fix: the CLI exits 0 (not 255) when a downstream reader closes the pipe early — `head`, `Select-Object -First N`, `sed q` (#1807 / #1811, thanks @varuntej07). - Fix: `extract()` writes its AST cache (and the stat-index) to CWD, never the analyzed source tree, with the cache location decoupled from the portable key/id anchor (#1774 / #1802, thanks @SimiSips). - Fix: `graphify query` deduplicates BFS seeds by label so homonymous generic symbols (many `GET`/`POST` handlers) no longer flood results (#1766 / #1832, thanks @devcool20). - Fix: semantic cache writes are scoped to each extraction batch's files, so a mis-attributed `source_file` can't clobber another file's cache — covering both the final write and the per-chunk checkpoint (#1757 / #1835, thanks @TPAteeq). - Fix: `graphify export graphml` coerces dict/list (and other non-scalar) attributes and writes atomically (#1831 / #1830, thanks @hofmockel). - Fix: `.nox/` virtualenvs are skipped during detection alongside `.tox/` (#1804, thanks @igorregoir-lgtm). - Fix: detection honors `.git/info/exclude`, ending git-worktree graph bloat (#1810, thanks @cdahl86-cyber). - Fix: the git hooks short-circuit inside linked worktrees, and `GRAPHIFY_SKIP_HOOK` now suppresses both `post-commit` and `post-checkout` (#1809, thanks @cdahl86-cyber; worktree guard co-developed with @Claude-Madera's #1806). ## Install ``` pip install --upgrade graphifyy # or uv tool install graphifyy@0.9.14 ``` Then `graphify install` to update the skill for your agent.