v0.9.69

Graphify-Labs/graphifyv0.9.69Sep 26, 2026by safishamsi

Upgrading?

AI Summary

Significant enhancements to language extractors for OCaml, Elixir, Fortran, Julia, and Kotlin, alongside documentation updates and bug fixes for TypeScript, Python, and entity deduplication.

Key Highlights

  • Structural depth added to OCaml, Elixir, Fortran, Julia, and Kotlin extractors
  • TypeScript path aliases now resolve correctly in solution configs
  • Entity deduplication preserves genuine self-loops
  • Documentation overhaul with new contributing guides

New Features

  • OCaml method and instance variable extraction
  • Elixir defprotocol and defimpl extraction
  • Fortran derived-type contains block linking
  • Julia macro definitions and enum extraction
  • Kotlin annotation and property extraction
  • JSX component usage edges

Full Release Notes


- Feature: five language extractors gained structural depth — **OCaml** classes now emit their methods (via the `method` relation) and instance variables (#3838, thanks @rajatnagda45); **Elixir** `defprotocol`/`defimpl` are extracted as containers holding their functions, with a same-file `implements` link (#3839, thanks @rajatnagda45); **Fortran** derived-type `contains` blocks link type-bound procedures to the type, resolving the `=> impl` target (#3840, thanks @rajatnagda45); **Julia** macro definitions and `@enum` types are extracted, including valued (`red = 1`) and typed (`Color::UInt8`) enum forms, with members using the `case_of` relation (#3841, thanks @rajatnagda45); **Kotlin** annotations (class/function/property, use-site targets) and `val`/`var` primary-constructor properties now produce edges (#3848, #3842, thanks @nikhilsaxena04).
- Fix: a TypeScript "solution" `tsconfig.json` that only carries `references` (no `paths` of its own) now resolves path aliases declared in the referenced project configs, so alias imports in a `tsc -b` layout no longer dangle (#3753, #3745, thanks @abhay-codes07).
- Fix: extraction now skips the process pool up front when the `spawn` start method can't re-import `__main__` (stdin, `python -c`, REPL, embedded callers), falling back to a correct sequential run instead of a wall of `BrokenProcessPool` tracebacks (#3754, #3669, thanks @abhay-codes07).
- Fix: entity deduplication preserves a genuine pre-existing self-loop (a recursive call, a self-referential FK) while still dropping a self-loop newly created by a merge (#3825, thanks @Abhirup0).
- Fix: `ingest` classifies a URL by its parsed host, not by text anywhere in the URL, so `example.com/article-about-youtube` is no longer mistaken for a YouTube link; subdomains and `youtu.be` still match, path-based extension detection is unchanged (#3831, thanks @L4XB).
- Fix: `graphify update` on a destination outside the scan root no longer leaks a stat-index cache into the corpus — the incremental detection path now forwards `cache_root` like the fresh-scan path (#3850, #3847, thanks @ayushcodes10).
- Fix: manifest duplicate-key collapse breaks ties by last-seen time instead of arbitrary iteration order, so a stale duplicate can no longer win and under-report changed files; also re-anchors foreign-platform absolute keys and normalizes `..`/`.` segments so more duplicates actually collapse (#3781, #1964, thanks @ayushcodes10).
- Docs: a community-health and contributor-guide overhaul — new `CONTRIBUTING.md`, `CODE_OF_CONDUCT.md`, and `RELEASING.md`, refreshed issue/PR templates, and corrected factual drift in `SECURITY.md` (supported version, network/XSS boundaries), `ARCHITECTURE.md` (shared-state), and `AGENTS.md` (scoped-query workflow) (#3845, thanks @nikhilsaxena04).

Related Repositories