v0.8.43
deepseek-ai/DeepSeek-Coder-V2v0.8.43Jun 19, 2026by safishamsi
AI Summary
Adds major graph analysis capabilities including package-manifest dependency graph parsing and markdown link resolution, alongside security updates and fixes for entry point crashes.
Key Highlights
- Package-manifest dependency graph creates a single canonical node per package
- Markdown links are resolved and emitted as references edges
- Security updates for pypdf, yt-dlp, pyjwt, and cryptography
- Node-ID normalization unified to prevent ghost-node bugs
- Community labeling now retries malformed JSON batches
New Features
- Deterministic parsing of apm.yml, pyproject.toml, go.mod, and pom.xml
- Inline and reference-style markdown links become graph edges
- Semantic extract entry points coerce str paths to pathlib.Path
- graphify hook install rejects Windows-style paths under WSL
Full Release Notes
`pip install -U graphifyy` / `uv tool upgrade graphifyy`. Two new capabilities plus a security update and four fixes. ### Features - **Package-manifest dependency graph.** `apm.yml`, `pyproject.toml`, `go.mod`, and `pom.xml` are now parsed deterministically into **one canonical package node per package** (keyed by name) plus `depends_on` edges, routed to the AST path so the LLM never sees them. Previously `apm.yml` was an LLM-handled document, so a package got a different file-anchored id from its own manifest than from each dependent's reference and split into duplicate nodes — now a package referenced from many manifests is a single hub. (#1377) - **Markdown links become edges.** Inline `[text](./other.md)` links, reference-style links, and `[[wikilinks]]` in markdown are now resolved (relative to the source file; external URLs / anchors / images skipped) and emitted as `references` edges between docs, so hub docs like `index.md` / `table-of-contents.md` actually become hubs. (#1376) ### Security - Bumped vulnerable dependencies to patched versions: `pypdf` 6.11.0→6.13.3 (CVE-2026-48155/48156), `yt-dlp` 2026.3.17→2026.6.9, `pyjwt` 2.12.1→2.13.0, `cryptography` 48.0.0→49.0.0, `python-multipart` 0.0.28→0.0.32, with lower-bound floors for the direct deps so installs get the patched versions. (#1375 — thanks @hypnwtykvmpr) ### Fixes - The semantic extract entry points (`extract_corpus_parallel`, `extract_files_direct`) crashed on `str` paths instead of `pathlib.Path`; both now coerce at entry. (#1386) - Community labeling now recovers from a malformed-JSON batch by splitting and retrying each half (mirroring the extract path) instead of silently dropping ~100 names per failed batch on large graphs. (#1280, #1278 — thanks @CJdev232) - `graphify hook install` no longer creates a backslash-named junk directory and reports false success when `core.hooksPath` is a Windows-style path under WSL — such paths are now rejected with a clear error. (#1385) ### Internal - Node-ID normalization unified into a single `graphify.ids` module; the four hand-synced copies (`extract`, `build`, `mcp_ingest`, `symbol_resolution`) — root of the recurring ghost-node bug class — now share one guarded implementation. (#1378 — thanks @danielnguyenfinhub) **Full changelog:** https://github.com/safishamsi/graphify/blob/v8/CHANGELOG.md