github Graphify-Labs/graphify v0.9.100
graphify 0.9.100

2 hours ago

0.9.100 (2026-11-01)

  • Fix: ids a type and a function whose names differ only in case (Foo the class, foo the function) get distinct node ids instead of colliding (which dropped one node and minted a bogus self-loop) (#4904, #4908, thanks @bercedev).
  • Fix: php a Scope::MEMBER access in a class-level initializer (a const value, a property default, or a parameter/promoted-constructor default) emits a references_constant edge; self::/static::/parent:: are skipped and unknown scopes mint no stub (#4648, #4895, thanks @Jitendarmahara).
  • Fix: hooks git rev-parse output is decoded as UTF-8, so a linked worktree under a non-ASCII path resolves correctly on Windows instead of mojibake (#4903, thanks @LukeTheoJohnson).
  • Fix: analyze on a code-only graph the isolated-node question reason says "possible missing edges" rather than referencing documentation gaps that cannot apply (#4887, thanks @oleksii-tumanov).
  • Perf: resolve reference edges are indexed by source once, so JS/TS import resolution no longer re-walks every edge per import (output unchanged) (#4909, #4913, thanks @Deepjyoti-Sarmah).
  • Docs: skill the skill now says when a graph is worth building, across all generated hosts, while preserving the "if the user invoked /graphify, do it as asked" invariant (#4829, #4906, thanks @TanmayShah29).
  • Fix: deps the video extra caps PyAV below 19 (av>=11,<19), because PyAV 19 removed the metadata_errors argument that faster-whisper passes unconditionally when opening audio; without the cap a fresh install on Python 3.12+ failed to transcribe (#4842, thanks @SyedFahad7).
  • Fix: r setClass/setRefClass S4/R5 inheritance declared with contains= now emits an inherits edge (previously only R6Class's inherit= was recognised) (#4902, thanks @ayushcodes10).
  • Fix: elixir a bare function call resolves to a function in the caller's own module before other modules, instead of binding to the last-walked same-named definition (#4900, thanks @ayushcodes10).
  • Fix: dart a mixin on A, B clause resolves every superclass constraint, not just the first (#4899, thanks @ayushcodes10).
  • Fix: fortran a derived type's extends(base) emits an inherits edge, bringing Fortran in line with the other OOP extractors (#4897, thanks @ayushcodes10).
  • Fix: scala an extension (x: T) def m is scoped to its receiver type T (a method edge to T) instead of leaking to file scope (#2044, #4856, thanks @divakantpandey).
  • Fix: terraform a node carries its original scope so ids stay stable when a cached project directory is moved, instead of re-deriving the scope from the new path (#4858, #4861, thanks @yUm1k4).
  • Fix: extract (JVM) Java and Kotlin imports, extends/implements and member calls resolve across files and across the two languages when a written FQN names exactly one sourced type (#4874, #4879, thanks @Deepjyoti-Sarmah).
  • Fix: export a path/explain/wiki rendering lists every parallel relation between two nodes (via edge_datas), and a raw --no-cluster write marks the graph multigraph so parallel edges survive reload (#4794, thanks @ensell-yes).
  • Fix: export a partial or failed backup is reported as no backup and retried on the next run, instead of being recorded as a false success (#3769, #4834, thanks @barlowa124).
  • Fix: affected graphify affected (and query --seed) resolve the same path::Symbol and dotted reference forms explain accepts, reusing explain's resolver, and exit non-zero (3 ambiguous / 4 not-found) on a seed that does not resolve (#4792, #4797, thanks @dupeisen).
  • Fix: install graphify uninstall removes every platform's user-scope skill (13 were left behind) and the kilo global command; and graphify kilo uninstall removes the kilo skill's references/ sidecar (#4782, #4789, thanks @bercedev).
  • Feat: llm the Claude backend caches its (stable, large) system prompt with cache_control, counting the cached tokens back into input_tokens, and GRAPHIFY_CLAUDE_PROMPT_CACHE=0 disables it for gateways that reject cache_control (#4835, #4855, #4880, thanks @Jvxoq and @1akashkalita).
  • Fix: prompt the node-id format description in the extraction prompt matches what ids.py actually produces (word characters kept, non-ASCII letters/digits preserved, ASCII lowercased) instead of the stale "[a-z0-9_] only" wording (#4432, #4799, thanks @dupeisen).
  • Docs: how-it-works the supported-language count is updated (about 40: 33 tree-sitter grammars plus 7 built-in parsers) and Pass 3 is described as running the configured LLM backend, not Claude only (#4873, thanks @SyedFahad7).

Don't miss a new graphify release

NewReleases is sending notifications on new releases.