v0.8.7
Graphify-Labs/graphifyv0.8.7May 16, 2026by safishamsi
AI Summary
Focuses on query accuracy, C++ extraction improvements, and deduplication fixes to reduce noise and improve graph structure.
Key Highlights
- Improved query scoring with IDF weighting and dynamic K seeds to prioritize rare identifiers.
- C++ extraction fixes: class data members now create nodes, include edges resolve to full paths.
- Deduplication fix prevents cross-file generic labels (like 'handle' or 'init') from collapsing into artificial god nodes.
New Features
- Enhanced query scoring algorithm
- Improved C++ extraction logic
- Fixed deduplication cross-file handling
Full Release Notes
## What's fixed ### Query scoring (#897) - **IDF weighting** — common terms like `error` or `handle` that match dozens of nodes are down-weighted, so a rare identifier like `FooBarService` ranks first and BFS expands from the right starting point - **Dynamic K seeds** — when one match dominates (>80% score gap vs the next candidate), graphify picks one seed instead of always three; noise nodes no longer consume BFS slots alongside the real target - **Actionable truncation** — the truncation message now tells Claude what to do (`get_node` or add a `context_filter`) rather than just reporting truncation ### C++ extraction (#898) - Class data members (`int x;`, `static const int MAX = 100;`) are now extracted as nodes with `defines` edges from the parent class — the previous `field_declaration` branch was silently a no-op due to a wrong child type filter - `_get_cpp_func_name` now handles `field_identifier`, `destructor_name`, and `operator_name` node types ### C/C++ include edges (#899) - Quoted `#include "path/to/file.h"` edges now resolve relative to the including file and use the full resolved path as the target node ID — matching what extraction creates for the included file. Previously all include edges dangled with a basename-only ID and were silently dropped. ### Dedup (#895) - Pass 1 now partitions same-label groups by source file before merging — nodes with generic labels (`handle`, `init`, `run`) from different files no longer collapse into artificial god nodes; cross-file matches fall through to Pass 2 fuzzy - `exact_merges` counter now reports only merges actually performed ## Upgrade ```bash uvx graphifyy@0.8.7 install # or pip install --upgrade graphifyy ```