Skip to content

feat(graph): dedicated ultra-performance Every-node view - #160

Merged
Coding-Dev-Tools merged 29 commits into
Coding-Dev-Tools:mainfrom
plainskill:feat/every-node-view
Aug 24, 2026
Merged

feat(graph): dedicated ultra-performance Every-node view#160
Coding-Dev-Tools merged 29 commits into
Coding-Dev-Tools:mainfrom
plainskill:feat/every-node-view

Conversation

@plainskill

@plainskill plainskill commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Not heavily reviewed yet but should be okay.

Replaces the old Show all nodes toggle with a dedicated Every node layout backed by a new WebGL2 engine (engraphis-graph-every.js + engraphis-graph-every-worker.js).

  • All geometry uploaded once; camera moves touch only uniforms (frame cost independent of node count up to 20k/200k ceilings).
  • Zoom-out reads as an additive glow density map; edges reveal progressively by weight with gold bridges.
  • Community districts render as tinted region hulls with hub-derived labels.
  • Hover or click highlights neighbourhood (dims outside, gold paths, direction arrows, callout with degree + strongest connections). Focus persists.
  • Adds Focus graph button, pinch zoom, keyboard nav (arrows/+/-/F/Esc), and an a11y live region.
  • Honest edge stats, strict-CSP clean, legacy alias kept so classic/static dashboards still work.

Measured settle: ~320ms @2k nodes / ~1.2s @20k (one-off); per-frame cost scale-independent. Docs and new contract tests included.

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.
@plainskill

Copy link
Copy Markdown
Contributor Author

did this now so i don't forget to do this tomorrow!

i can apply changes if needed

@plainskill

Copy link
Copy Markdown
Contributor Author

failing checks seen, attempting fixes now

@20k

20k commented Aug 23, 2026

Copy link
Copy Markdown

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.
@plainskill

Copy link
Copy Markdown
Contributor Author

updating a few things with Muse

plainskill and others added 18 commits August 23, 2026 10:44
…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
@Coding-Dev-Tools
Coding-Dev-Tools merged commit e429316 into Coding-Dev-Tools:main Aug 24, 2026
23 checks passed
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants