feat(graph): dedicated ultra-performance Every-node view - #160
Merged
Coding-Dev-Tools merged 29 commits intoAug 24, 2026
Conversation
Replace the worker-backed all-node LOD renderer with a purpose-built WebGL2 engine: all geometry is uploaded once and re-uploaded only on data/layout/ filter changes, camera moves touch two uniforms (frame cost independent of node count up to the 20k/200k ceilings), zoom-out readability comes from additive glow density, edges reveal progressively by weight, community districts render as tinted region hulls with hub-derived labels, picking is a local spatial grid, and hover/highlight neighbourhood focus draws dark- cased gold paths with direction arrows and relation names. Adds a Focus graph action in the connections drawer, keyboard browsing, two-pointer pinch, a screen-reader live region, honest drawn-edge stats, and a compatibility alias so the classic/static dashboards keep working. The old toggle becomes the 'Every node' layout chip; entering it shows every entity and restores overview filters on exit. Focus-depth/auto-collapse controls are disabled honestly until implemented.
Replace the deleted all-asset suite with tests/test_graph_every_asset.py: the real worker runs in Node (capacity refusal, typed-array compaction, falsy-id preservation, bridge classification, streamed preview/ready/ progress/layout settling, relayout/reheat generation-token semantics) and renderer source assertions lock in the structural invariants (WebGL2-only, vertex-only u_glow precision safety, uniform-only hot edges, change-driven uploads, honest edge estimates, synchronous export compositing, listener hygiene). Legacy routing/latch/CSP expectations follow the new asset URL.
…e times Rewrite docs/GRAPH_PERFORMANCE.md for the new engine contract, add the deterministic worker benchmark (eval.graph_every_bench: ~320 ms settle at 2k nodes, ~1.2 s at 20k), and record the feature in the changelog.
Contributor
Author
|
did this now so i don't forget to do this tomorrow! i can apply changes if needed |
Contributor
Author
|
failing checks seen, attempting fixes now |
|
very glad to hear it \o/ |
… visibility Public-facing docs must not contain em dashes (test_benchmark_evidence). The Every-node chip was hidden behind a hidden Show all nodes button, causing 3 Playwright failures; restore the button so existing e2e expectations pass while the chip remains available.
…filter handling Presets other than Every node now re-run the Every-node seeded layout without exiting the presentation, matching the documented 'presets remain live' contract and the existing e2e that exercises compact/type while in All nodes. The Show-all toggle now correctly saves/restores the overview min-degree and unlinked filters and syncs the preset choice, so entering via chip or toggle shows every entity and leaving restores the prior overview.
Entering Every-node forces the unlinked filter to visible so the complete projection is shown; the persisted preference while in that mode is therefore true. The previous expectation of false reflected the overview filter before entry, not the forced Every-node state.
…set layout in Every-node The Show all nodes button is intentionally hidden; the Every node layout chip is now the canonical entry/exit for the complete graph. Entering via the chip saves the overview min-degree/unlinked filters and forces the Every-node view to show every entity; exiting (clicking the chip again) restores those filters. Other layout presets while in Every-node now re-run the Every-node seeded layout without leaving the presentation, matching the documented 'presets remain live' contract. Tests updated to exercise the chip (Every node visible, aria-pressed, All nodes mode) and to expect the forced unlinked state while in Every-node.
Contributor
Author
|
updating a few things with Muse |
…s sole entry The hidden Show all button was a transitional compatibility shim. It is now fully removed from the Ledger markup and ledger.js (updateGraphMode toggle and click handler). The Every node layout chip [data-graph-preset-choice="every"] is the sole control for the complete graph presentation, with filter save/restore handled in the chip handler. Tests updated to assert absence of #graph-show-all and presence of the Every node chip.
# Conflicts: # .gitignore # engraphis/classic_assets/dashboard.js # engraphis/static/dashboard.js
- Fix .gitignore pattern typos (duplicate double-dot scratch rule, literal
…s-qc into pr160-merge-ready
Coding-Dev-Tools
added a commit
that referenced
this pull request
Aug 24, 2026
* feat(graph): dedicated ultra-performance Every-node view Replace the worker-backed all-node LOD renderer with a purpose-built WebGL2 engine: all geometry is uploaded once and re-uploaded only on data/layout/ filter changes, camera moves touch two uniforms (frame cost independent of node count up to the 20k/200k ceilings), zoom-out readability comes from additive glow density, edges reveal progressively by weight, community districts render as tinted region hulls with hub-derived labels, picking is a local spatial grid, and hover/highlight neighbourhood focus draws dark- cased gold paths with direction arrows and relation names. Adds a Focus graph action in the connections drawer, keyboard browsing, two-pointer pinch, a screen-reader live region, honest drawn-edge stats, and a compatibility alias so the classic/static dashboards keep working. The old toggle becomes the 'Every node' layout chip; entering it shows every entity and restores overview filters on exit. Focus-depth/auto-collapse controls are disabled honestly until implemented. * test(graph): pin the Every-node engine contract Replace the deleted all-asset suite with tests/test_graph_every_asset.py: the real worker runs in Node (capacity refusal, typed-array compaction, falsy-id preservation, bridge classification, streamed preview/ready/ progress/layout settling, relayout/reheat generation-token semantics) and renderer source assertions lock in the structural invariants (WebGL2-only, vertex-only u_glow precision safety, uniform-only hot edges, change-driven uploads, honest edge estimates, synchronous export compositing, listener hygiene). Legacy routing/latch/CSP expectations follow the new asset URL. * docs(graph): document the Every-node architecture with measured settle times Rewrite docs/GRAPH_PERFORMANCE.md for the new engine contract, add the deterministic worker benchmark (eval.graph_every_bench: ~320 ms settle at 2k nodes, ~1.2 s at 20k), and record the feature in the changelog. * fix(ci): remove em dashes from public docs and restore Show all nodes visibility Public-facing docs must not contain em dashes (test_benchmark_evidence). The Every-node chip was hidden behind a hidden Show all nodes button, causing 3 Playwright failures; restore the button so existing e2e expectations pass while the chip remains available. * fix(graph): keep layout presets inside Every-node and restore toggle filter handling Presets other than Every node now re-run the Every-node seeded layout without exiting the presentation, matching the documented 'presets remain live' contract and the existing e2e that exercises compact/type while in All nodes. The Show-all toggle now correctly saves/restores the overview min-degree and unlinked filters and syncs the preset choice, so entering via chip or toggle shows every entity and leaving restores the prior overview. * fix(e2e): expect Every-node to show unlinked while active Entering Every-node forces the unlinked filter to visible so the complete projection is shown; the persisted preference while in that mode is therefore true. The previous expectation of false reflected the overview filter before entry, not the forced Every-node state. * fix(graph): replace Show all button with Every node chip and keep preset layout in Every-node The Show all nodes button is intentionally hidden; the Every node layout chip is now the canonical entry/exit for the complete graph. Entering via the chip saves the overview min-degree/unlinked filters and forces the Every-node view to show every entity; exiting (clicking the chip again) restores those filters. Other layout presets while in Every-node now re-run the Every-node seeded layout without leaving the presentation, matching the documented 'presets remain live' contract. Tests updated to exercise the chip (Every node visible, aria-pressed, All nodes mode) and to expect the forced unlinked state while in Every-node. * refactor(graph): remove Show all button completely, Every node chip is sole entry The hidden Show all button was a transitional compatibility shim. It is now fully removed from the Ledger markup and ledger.js (updateGraphMode toggle and click handler). The Every node layout chip [data-graph-preset-choice="every"] is the sole control for the complete graph presentation, with filter save/restore handled in the chip handler. Tests updated to assert absence of #graph-show-all and presence of the Every node chip. * fix(graph): harden Every-node runtime and worker * fix(graph): bound Every-node focus and centroid work * test(graph): align Every-node control contract * fix(graph): clear stale every-node reload state * fix(graph): harden every-node interaction and reload state * fix(graph): polish Every-node branch for merge readiness - Fix .gitignore pattern typos (duplicate double-dot scratch rule, literal * fix(graph): honor Every-node edge visibility filters * fix(graph): preload both full-view engines before scene selection * fix(graph): restore keyboard focus visibility * fix(graph): clear stale every-node region overlays * fix(graph): use Every-node loader global in legacy dashboards * Align Every-node browser contract * Restore graph preset after failed transition --------- Co-authored-by: Coding-Dev-Tools <algorithmictradingsolutions@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Not heavily reviewed yet but should be okay.
Replaces the old
Show all nodestoggle with a dedicated Every node layout backed by a new WebGL2 engine (engraphis-graph-every.js+engraphis-graph-every-worker.js).Measured settle: ~320ms @2k nodes / ~1.2s @20k (one-off); per-frame cost scale-independent. Docs and new contract tests included.