v0.8.48
Graphify-Labs/graphifyv0.8.48Jun 25, 2026by safishamsi
AI Summary
This release focuses on stability and performance improvements for the Graphify CLI and MCP tools, including a security patch for Starlette, fixes for reflection and community labeling, and a refactor of the extraction module.
Key Highlights
- MCP tool `get_community` now displays the correct community name header.
- Work-memory now runs `graphify reflect` automatically without requiring the git hook.
- Security update floors Starlette to >=1.3.1 to address CVEs.
- Refactored monolithic `extract.py` into per-language modules.
- Parallel community labeling supports concurrency and batch sizing.
New Features
- Parallel community labeling with `--max-concurrency` and `--batch-size` options.
Full Release Notes
## graphify 0.8.48 ### Fixes - **`get_community` MCP tool shows the community name** in its header (`Community 12 — Auth & Sessions (8 nodes)`), matching `get_node` and the query output. Read from the community's member nodes, sanitised, and skipped when it is only the `Community N` placeholder so it never doubles (#1448, thanks @rmart1308). - **`graphify reflect` no longer duplicates** "known dead ends" / "corrections" lines when the same Q&A is saved more than once. They collapse by question, keeping the most recent (a re-corrected question shows its latest correction). Deterministic, ordered by date then question. - **Work-memory works without the git hook.** The skill now runs `graphify reflect --if-stale` at the start of graph work, so a skill-only install still refreshes `LESSONS.md`. `--if-stale` no-ops when the file is already newer than every input, so the post-commit hook becomes an optimization rather than a requirement. ### Security - **Floor `starlette` at `>=1.3.1`** for CVE-2026-48818 and CVE-2026-54283 (both resolved by 1.3.1). starlette underpins the HTTP MCP transport (`graphify-mcp` over HTTP); stdio and the CLI are unaffected. It was an undeclared transitive dependency that `serve.py` imports directly, so it is now declared in the `mcp`/`all` extras and floored, protecting end users installing `graphifyy[mcp]`, not just the locked dev environment (#1391, #1396, thanks @orbisai0security). ### Refactor - **Begin splitting the monolithic `extract.py`** into per-language modules under `graphify/extractors/` (blade, elixir, razor, zig + a shared `base.py`), with a strict one-way import direction and `extract.py` re-exporting the moved names so all callers and the dispatch table are unchanged. Behavior-neutral, verified byte-identical. Groundwork for moving the rest (#1212, thanks @TheFedaikin). ### Performance - **Parallel community labeling.** `graphify cluster-only` and `graphify label` accept `--max-concurrency N` (default 4) and `--batch-size N` (default 100), fanning labeling batches across a thread pool. `ollama`/`claude-cli` stay serial unless opted in. Output is unchanged and deterministic (#1390). **Install:** `uv tool install graphifyy==0.8.48`