v0.8.20

Graphify-Labs/graphifyv0.8.20May 26, 2026by safishamsi

AI Summary

Addresses critical ghost node issues on Windows and hardens security against XML DoS attacks. The release includes a Dart node ID fix and introduces a new MCP config extractor.

Key Highlights

  • Windows ghost nodes fully fixed by adjusting path handling and eviction logic
  • XML DoS hardening prevents billion-laughs memory exhaustion
  • Dart node IDs now use relative paths for consistency
  • Cluster-only label alignment improved for stability
  • MCP config extractor added for server and environment variables

New Features

  • MCP config extractor for `.mcp.json` files

Full Release Notes

## Bug fixes & security

### Ghost nodes after file deletion fully fixed
`graphify update` on Windows no longer leaves stale nodes after moving/deleting files. Two root causes resolved:
- `_relativize_source_files` now runs on the existing graph **before** eviction, not after
- `deleted_paths` / `evict_sources` now use `.as_posix()` for consistent forward-slash paths on all platforms
- Symlinked scan roots now handled correctly via `.resolve()` in `build_merge` (#1007)

### Security: XML DoS hardening
`extract_csproj` and `extract_lazarus_package` now pre-screen for `<!DOCTYPE` / `<!ENTITY` before parsing — blocks billion-laughs memory exhaustion on malicious project files. Zero false positives on real MSBuild/Lazarus files. `extract_lpk` also gains the previously missing 2 MiB size cap.

### Dart node ID fix
Dart child node IDs no longer embed absolute paths — now uses `_file_stem` consistent with all other extractors. **Existing Dart graphs should be rebuilt with `graphify extract --force`.**  (#999)

### cluster-only label alignment
`cluster-only` now applies `remap_communities_to_previous` matching the behaviour of `graphify update`, so community labels stay stable across re-clusterings (#1028)

## New features

### MCP config extractor
`.mcp.json`, `mcp.json`, `mcp_servers.json`, `claude_desktop_config.json` are now extracted into the knowledge graph — captures server nodes, npm/pip package references, and env var requirements. Env values are discarded to prevent secret leakage.

## Install / upgrade

```
pip install --upgrade graphifyy
```