You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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: hooksgit 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: rsetClass/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: affectedgraphify 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: installgraphify 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).