diff --git a/CHANGELOG.md b/CHANGELOG.md index 84af35ad6..4899b77ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,11 +2,12 @@ Full release notes with details on each version: [GitHub Releases](https://github.com/Vit129/graphify/releases) -## 0.17.0 (2026-07-18) +## Unreleased + +- Feature: a fourth `graph.html` view lens, "Calls" — alongside Community/File/Dependencies. Unlike Community (colors by inferred Leiden cluster, which mixes short code-symbol labels with long prose `concept`/`rationale` node labels from the LLM extraction pass) and Dependencies (collapses to one node per file), Calls stays at per-symbol granularity but hides every non-`code` `file_type` node (`concept`/`rationale`/`document`/`paper`) and restricts edges to the same real call/dependency relation whitelist Dependencies already used (`calls`/`imports`/`imports_from`/`references`/`inherits`/`implements`/`indirect_call`/`re_exports`/`uses`/`embeds`) — a plain function-to-function/class-to-class view without doc-node clutter or file collapsing. `graphify/export.py`; the relation whitelist is now hoisted to module scope and shared between the Dependencies and Calls lenses instead of being duplicated. +- Fix/Feature: `graph.html`'s search box had four gaps that made it harder to find a node than the CLI's `graphify query`. (1) It ignored the active lens — a hidden `concept`/`rationale` node in the new Calls lens could still surface as a search result, and clicking it silently panned the camera to nothing (`isNodeHidden` is now checked). (2) Matching was plain substring-on-label only — it now also tokenizes on camelCase/snake_case boundaries (same split rule as the CLI's `query.py` `_tokenize`, ported to JS) so e.g. searching "notification" finds `handleNotification`. (3) `source_file` is now also matched, so a file path substring finds nodes in that file. (4) A file-type dropdown (`code`/`concept`/`rationale`/`document`/`paper`/all) narrows results directly. Deliberately does not port the CLI's BM25 scoring, typo-correction, or synonym expansion — this is a client-side filter over an at-most-20-result list per keystroke, not a scored corpus search; a lightweight tiered ranking (exact > token match > token prefix > file match > substring) is enough at that scale. -- Feature: `.html`/`.htm` extraction now also runs a JS pass over inline `