graphify v0.9.43

v0.9.43
Added 1
  • OCaml support with `.ml`/`.mli` extraction via tree-sitter-ocaml (optional `[ocaml]` extra), extracting modules, top-level and module-level values/functions, types and their variant constructors, `open` imports, and function calls
Fixed 5
  • Cross-file INFERRED `uses` edge now binds to the symbol whose body actually references the imported name instead of fanning out from the import line to every class in the file
  • Named `function` declaration nested inside another function, including inside an arrow-defined component or an arrow callback, is now noded, contained by its enclosing scope, and its calls resolve
  • Bash extractor resolves two more `source` path forms including `source "$(dirname "$VAR")/lib/x.sh"` and a `..` suffix on a tracked-variable base, while preventing `..` from walking past the base's parent to an arbitrary host path
  • Wiki article link now targets the article's filename verbatim instead of a percent-encoded twin, so a label with special characters or non-ASCII no longer produces a link that names no file on disk
  • Export filenames are budgeted against the full destination path rather than only `NAME_MAX`, so a long output directory on Windows no longer pushes an Obsidian/wiki note path past `MAX_PATH`
0.9.43
  • OCaml support.ml/.mli extraction via tree-sitter-ocaml (optional [ocaml] extra). Extracts modules, top-level and module-level values/functions, types and their variant constructors, open imports, and function calls; qualified calls (Geo.area) resolve to the value, and cross-file open/call targets collapse onto the unique real definition via the corpus stub rewire.
  • Fix: a cross-file INFERRED uses edge now binds to the symbol whose body actually references the imported name (a module-level function is a valid source; a co-located class that never touches the import gets no edge), instead of fanning out from the import line to every class in the file (#2652, thanks @ousamabenyounes).
  • Fix: a named function declaration nested inside another function — including inside an arrow-defined component (const Panel = () => { function handleClick(){} }) or an arrow callback (useEffect(() => { function h(){} })) — is now noded, contained by its enclosing scope, and its calls resolve instead of dangling (#2653, thanks @himanshupatro-334).
  • Fix: the Bash extractor resolves two more source path forms — source "$(dirname "$VAR")/lib/x.sh" and a .. suffix on a tracked-variable base — while a .. cannot walk past the base's parent to an arbitrary host path, so a hostile corpus can't make the extractor stat or record an out-of-tree file (#2596, thanks @hudsonwa).
  • Fix: a wiki article link now targets the article's filename verbatim instead of a percent-encoded twin, so a label with ( ) & # or non-ASCII no longer produces a link that names no file on disk (#2597, thanks @abhay-codes07).
  • Fix: export filenames are budgeted against the full destination path rather than only NAME_MAX, so a long output directory on Windows no longer pushes an Obsidian/wiki note path past MAX_PATH and aborts the export mid-write (#2655, thanks @abhay-codes07).
View original

Upgraded? How did it go?

Discussion