This release fixes issues for SREs watching stability and regressions.
✓ No known CVEs patched in this version
Topics
+5 more
Summary
AI summaryFixed indirect_call edge fabrication for classes, Windows hook interpreter path handling, rebuild timeout mechanism, Bash source resolution, and UTF‑8 BOM ignore file support.
Full changelog
Maintenance release. Correctness fixes across Python call-graph inference, the git hook (Windows), and bash source resolution.
Fixes
graphify query/explainno longer fabricateindirect_calledges to class definitions (#2137, thanks @Rishet11). Passing a class as a value (select(Model),db.get(Model, id),except (ErrorA, ErrorB),getattr(obj, "Name", 0)) produced a false inferred call edge; classes are now excluded fromindirect_callin both the intra-file and cross-file paths, while direct instantiation still emits itscallsedge.- The post-commit hook's interpreter allowlist now accepts Windows backslash paths (#2126, thanks @Rishet11). The shell
caseglob silently emptied any interpreter path containing a backslash, so the hook failed on Windows uv/venv installs. Both allowlist sites use a verified character class that admits backslashes while still rejecting shell metacharacters. - The hook rebuild timeout is now armed on Windows (#2148, thanks @Rishet11). It relied on
signal.SIGALRM, which does not exist on Windows, soGRAPHIFY_REBUILD_TIMEOUTwas a silent no-op and a hung rebuild ran unbounded. Athreading.Timerfallback now terminates a runaway rebuild where SIGALRM is unavailable; the Unix path is unchanged. - Bash calls into functions defined in a
sourced file now getcallsedges (#2141, thanks @HerenderKumar). Resolution was gated on same-file definitions, so a call to a sourced-library function looked like an external command and produced no edge. Bothsource fileand. fileare handled; resolution is in-corpus and single-match only, so a genuine external command still fabricates nothing. - Bash
sourceedges built from a variable path now resolve (#2079, thanks @HerenderKumar).source "${BENCH_DIR}/lib/x.sh"baked the unexpanded${VAR}into a dead node id; the leading expansion is stripped and the literal suffix resolved against the script's directory, emitted as INFERRED only when it resolves to a real file. Calls into a${VAR}-sourced library resolve too. - Ignore files saved with a UTF-8 BOM are now honored (#2163).
.gitignore/.graphifyignore/info/excludewere read asutf-8, so a leading BOM stayed on the first line and silently dropped the first pattern. The ignore read sites now useutf-8-sig, matching git.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About graphify
AI coding assistant skill (Claude Code, Codex, OpenCode, Cursor, Gemini CLI, OpenClaw, Factory Droid, Trae). Turn any folder of code, docs, papers, images, videos, or YouTube links into a queryable knowledge graph
Beta — feedback welcome: [email protected]