Skip to content

Add Category Navigator to Three.js - #283

Merged
nekomario28 merged 6 commits into
mainfrom
feat/threejs-category-navigator-p2
Aug 26, 2026
Merged

Add Category Navigator to Three.js#283
nekomario28 merged 6 commits into
mainfrom
feat/threejs-category-navigator-p2

Conversation

@nekomario28

Copy link
Copy Markdown
Owner

Summary

Continues #276 P2 by donating the existing 2D Category Navigator product semantics to the experimental Three.js renderer through a thin renderer adapter, without coupling Canvas and WebGL internals.

Three.js renderer adapter

  • Runs after shared Local Graph and shared Search Context adapters.
  • Exposes only the navigation boundary needed by the UI: admitted graph lookup, current mesh visibility, selected node id, select/clear selection, canvas focus and an evidence snapshot.
  • Emits navigator change events from visibility and selection updates instead of polling the Three.js scene.
  • Normal navigator selection changes camera/details selection only; it does not mutate Local Graph focus/depth scope.

Category Navigator behavior

  • Reuses the existing category-navigator.css presentation rather than forking another design system.
  • Lists only nodes currently visible after status + Local Graph + shared search projection.
  • Owned repositories stay under their admitted owned category.
  • Contributed repositories appear in a separate External contributions · not owned section; no fake category membership is created.
  • Category and repository buttons select the corresponding Three.js mesh and toggle off when selected again.
  • Search-driven disclosure/emphasis consumes window.ProjectMapSearchContext instead of introducing another text matcher.
  • Status/search/Local Graph visibility changes re-render the navigator from the renderer adapter.
  • The panel remains an accessible non-spatial route for 3D scenes where depth/occlusion makes direct raycast selection harder.

Gates

  • postprocessor order fails closed unless Local Graph + shared Search Context have already run;
  • generated Three.js and navigator runtimes receive Node syntax coverage and the Pages ESLint gate;
  • attachment and runtime patching are idempotent;
  • Chromium E2E verifies owned/external separation, repository/category selection identity, toggle-to-clear behavior, search/status visibility and that normal navigator selection leaves Local Graph node/edge scope unchanged;
  • existing full Verify, twelve-preset comparison, Three.js search parity, 120/480-repository performance evidence and WebKit smoke remain enabled.

Selected/direct-search projected repository labels remain a separate P2 increment; this PR does not enable repository-wide DOM labels or global semantic-edge rendering.

Refs #276.

@nekomario28
nekomario28 marked this pull request as ready for review August 26, 2026 12:51
@nekomario28
nekomario28 merged commit af77268 into main Aug 26, 2026
2 checks passed
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.

1 participant