A language-extraction and tooling batch: six extractor/exporter fixes picked from open issues, plus fourteen community pull requests.
- Fix: Julia functions with a
whereclause (long and short form) and parametric type definitions (struct Box{T},abstract type Shape{T},struct Sq{T} <: Shape{T}) are now extracted. The name sat inside awhere_expression/parametrized_type_expressionwrapper that the name lookup skipped, so the whole method/type was dropped; a declared type parameter (value::T) no longer leaks as a phantom field-type node (#4126, #4128). - Fix: Fortran a named generic
interfacenow gets a callable node and adispatches_toedge to each listedmodule procedure, so a call to the generic name resolves instead of dangling; unnamed and operator/assignment interfaces are unaffected (#4141, #4142, thanks @rajatnagda45). - Fix: Elixir
defdelegateis now extracted as a function definition, so the delegated function appears and same-module calls to it resolve (#4132). - Fix: Scala 3
given ... withinstance methods are scoped to the given instead of leaking to file scope (where they collided with the same-named trait type); an anonymousgiven Show[Int] withkeeps its members under a synthesized name (#4130). - Fix: graph.html a node label containing an unclosed
<!--then<scriptcan no longer break out of the embedded data script and blank the page; every<in the embedded JSON is escaped (#4124). - Fix: the incomplete-extraction message now explains a pure semantic omission (a smaller
--token-budgetis the lever) instead of always blaming truncation (#4101, #4280, thanks @ayushcodes10). - Fix: TypeScript
export type *star re-exports no longer trip a spurious syntax-error flag that skewed the health report (#3942, #4303, thanks @ayushcodes10). - Fix: Rust a cross-file reference to a type with impl blocks in other files now binds to the single declaration instead of a sourceless stub, fail-closed (#4283, #4284, thanks @Alin1233).
- Fix: distinct files that mint the same node id after the extension is dropped (
x.pyvsx.html) are kept as separate nodes instead of collapsing and losing one (#4281, #4282, thanks @bitwizard25). - Fix: the git hook now updates the graph for files whose names contain non-ASCII characters (
core.quotePath=falseplus C-quote decoding) (#4278, #4279, thanks @smngvlkz). - Fix: watch the rebuild lock no longer unlinks on release while a waiter holds it, closing a race that let two rebuilds run at once (POSIX) (#4273, #4277, thanks @ayushcodes10).
- Fix: an unanchored ignore pattern is now matched against the entry name only (so
*no longer crosses/and negations behave like git) (#4242, #4251, thanks @Yyunozor). - Fix: the hook-guard Read nudge now fires for PowerShell source files (
.ps1/.psm1/.psd1) (#4271, #4272, thanks @rtmalikian). - Fix: the skill now tells you that
graphify-out/was written into your working tree, with how to gitignore or share it (#3941, #4308, thanks @eoinforker). - Fix:
graphify affected <Symbol>now reaches callers through the symbol's defining file, so Dart/Flutter (and other file-module languages) return results instead of nothing (#4288, #4290, thanks @dcaldr). - Fix: an
export defaultwith a huge base64 literal plus a tsconfigbaseUrlno longer crashes extraction with "File name too long" (#4166, #4169, thanks @bastiennoel93). - Fix: markdown links to a file name containing a space (
[x](<My Note.md>),[x](My%20Note.md)) now resolve to a references edge (#4177, #4178, thanks @Yyunozor). - Perf: skip a per-call
os.getcwd()in the path-memo key for absolute paths, and walk each JS/TS tree once when collecting symbol facts — both output-identical (#4301, #4302, thanks @pishuv).