v0.9.30

Graphify-Labs/graphifyv0.9.30Jul 29, 2026by safishamsi

AI Summary

Fixes fresh-install failures, node-id portability, and backend behaviors.

Key Highlights

  • Pins `mcp` below 2.0 to fix fresh install `ImportError`.
  • TypeScript `.tsx` files no longer leak absolute-path IDs into edge endpoints.
  • AST-cache hits work correctly after corpus move or clone.
  • Bedrock backend fixes for text block selection and timeouts.

Full Release Notes

Fixes a fresh-install failure of the MCP server, plus node-id portability, cache, bedrock, and merge-graphs fixes.

**Install**

- Pin `mcp` below 2.0 so a fresh `graphifyy[mcp]` / `graphifyy[all]` install works again (#2277, #2279, #2291). `mcp` 2.0.0 dropped the `mcp.types.AnyUrl` re-export and the `Server` decorator-registration API that `graphify/serve.py` uses, so an unpinned resolve broke `graphify-mcp` on every new install with an `ImportError`. The `mcp` and `all` extras now require `mcp>=1,<2` (resolving to 1.29.0) and `starlette>=1.3.1,<2`. Porting to the mcp 2.x API is tracked in #2308.

**Node-id portability**

- TypeScript `.tsx` files no longer leak absolute-path / machine-slug ids into edge endpoints (#2262). The symbol-resolution pass parsed `.tsx` with the plain TypeScript grammar; JSX misparsed, nested handlers floated to top level, and `calls` edges were emitted from an absolute-stem source with no node. `.tsx` now uses the TSX grammar, a `calls` edge is never emitted from an unowned source, and a general backstop canonicalizes any node-less absolute-derived endpoint.
- A warm AST-cache hit after a corpus move or clone no longer replays node ids minted under the original root (#2257, thanks @Kaushik2003). Cached ids are stored root-relative and re-anchored on read.

**Backends / graph ops**

- The Bedrock backend reads the first *text* block of a Converse response instead of block 0, so reasoning-capable models no longer parse to zero nodes (#2287, thanks @zhiyanliu).
- The Bedrock backend honors `GRAPHIFY_API_TIMEOUT` and `GRAPHIFY_MAX_RETRIES` instead of botocore's silent 60s default (#2284, thanks @zhiyanliu).
- `merge-graphs` preserves edge direction instead of rewiring import edges to the importing file (#2261, thanks @hopstreax).
- The MCP server's multi-project graph-context cache is bounded (LRU, default 8 via `GRAPHIFY_MAX_CONTEXTS`) instead of growing unbounded (#2268, thanks @Kkartik14).