github safishamsi/graphify v0.8.46
0.8.46

3 hours ago

Faster queries, a graph-health gate in the skill runbook, CUDA support, and a batch of extraction/install fixes.

Performance

  • Trigram query prefiltergraphify query/path/explain and the MCP query tools now narrow candidates via a trigram index (built once per graph, rebuilt on hot-reload) before the IDF scorer, cutting the previous O(N) scan on large graphs. The prefilter is a strict superset of the exhaustive scorer, so results and ranking are unchanged; short/CJK/low-selectivity queries fall back to the full scan (#1431, thanks @papinto).

Skill runbook

  • Step 4.5 graph-health gate — after building the graph, the runbook runs diagnose_extraction and surfaces dangling/self-loop/collapsed-edge warnings before labeling (read-only; never aborts). It also anchors the semantic cache on the scan root so cache hits survive a non-cwd scan (#1437, thanks @bahcgscateringsa-design).

Languages

  • CUDA (.cu/.cuh) is now extracted via the existing C++ (tree-sitter-cpp) grammar — no new dependency. Kernels, host functions, structs, includes and host call edges are captured; <<<grid, block>>> launch syntax parses cleanly (#1411).

Extraction quality

  • No more phantom duplicate nodes from cross-file type annotations. A class defined once but referenced via type annotations in N files produced 1+N nodes (the extras with the file path baked into the id, e.g. pkg_a_py_thing). The cross-file reference now resolves to the single canonical definition — fixed across all six language extractors (#1402, thanks @ZedUserdesign).

Install & misc fixes

  • graphify install --platform hermes installs to %LOCALAPPDATA%\hermes\skills on Windows (where Hermes scans), not ~/.hermes/skills (#1403, thanks @SHJordan).
  • The opencode plugin's search reminder no longer contains backticks that bash executed as a command substitution on every search (#1413, thanks @WSHAPER).
  • to_obsidian/to_canvas never emit punctuation-only filenames (e.g. @.md) that break downstream re-sluggers — they fall back to unnamed (#1409, thanks @Mylock51).
  • graphify extract --cargo exits with a clear error instead of a traceback when Cargo.toml is missing/unreadable (#1428, thanks @DhruvTilva).
  • Internal: resolved an F821 in prs.py via a TYPE_CHECKING import (#1429, thanks @DhruvTilva).

Don't miss a new graphify release

NewReleases is sending notifications on new releases.