v0.9.67
Graphify-Labs/graphifyv0.9.67Sep 23, 2026by safishamsi
Upgrading?
AI Summary
This release addresses critical Windows compatibility issues with determinism execution, introduces support for extracting PHP closures, and improves Python import resolution to prevent phantom cycles while stabilizing Obsidian sync.
Key Highlights
- Fixes Windows regression where `update`/`extract`/`cluster-only`/`label` failed to re-launch through console-script `.exe` launchers due to PYTHONHASHSEED execution changes.
- Introduces support for extracting PHP closures, including anonymous functions, arrow functions, and closures passed as arguments, with semantic naming for route definitions.
- Resolves Python package/module name collisions that previously created phantom import cycles between directories and files.
- Enhances Terraform secret redaction to cover secrets nested inside list values, not just maps.
- Prevents `export` from rewriting unchanged wiki/Obsidian pages on every run, ensuring stable mtimes for git and Obsidian sync.
New Features
- PHP closure extraction (anonymous functions, arrow functions, and arguments)
- Semantic naming for route-definition closures
Full Release Notes
- Fix: the PYTHONHASHSEED determinism pin (0.9.66) now re-execs via `python -m graphify` instead of replaying `argv[0]`, fixing a Windows regression where `update`/`extract`/`cluster-only`/`label` failed to re-launch through the console-script `.exe` launcher (#3780, thanks @ayushcodes10).
- Feature: PHP closures are now extracted — an anonymous `function(){…}`, an arrow `fn()=>…`, or a closure passed as an argument now produces a node and its inner calls are captured, in all positions including file scope. Route-definition closures get a semantic `VERB /path` name (composing nested `group()` prefixes); other closures get a stable per-scope ordinal (#3461, #3409, thanks @nikhilsaxena04).
- Fix: absolute Python package imports (`import pkg.sub`, `from pkg.sub import x`) now resolve to the local package/module node within the scan root, reusing the canonical resolver (bounded walk, PEP 420 namespace handling); an ambiguous module name across scanned trees fails closed rather than binding arbitrarily (#3729, thanks @Ha1baraA11).
- Fix: a package/module name collision (`pkg/` package alongside a `pkg.py` module) no longer produces a phantom import cycle — the spurious provisional edge is retracted while genuine package-init and submodule edges are preserved (#3784, #3777, thanks @hopstreax).
- Fix: Terraform secret redaction now also covers secrets nested inside list values (`configs = [{ password = "…" }]`), not just maps (#3762, #3644 follow-up, thanks @abhay-codes07).
- Fix: `export` no longer rewrites unchanged wiki/Obsidian pages on every run — a page whose content is identical is left untouched (stable mtimes, clean git/Obsidian sync), while changed and new pages still write and orphaned pages are still swept (#3760, #3060, thanks @abhay-codes07).
Related Repositories
public-apis/public-apis★ 491,140
A collective list of free APIs
NousResearch/hermes-agent★ 255,981
The agent that grows with you
yt-dlp/yt-dlp★ 200,079
A feature-rich command-line audio/video downloader
microsoft/markitdown★ 191,496
Python tool for converting files and office documents to Markdown.
Significant-Gravitas/AutoGPT★ 187,704
AutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.