Summary
Add a toggle to switch between the current 3D force graph and a 2D flat layout.
Why
The 3D view earns its keep on first render — it communicates scale and cluster structure well and makes a strong first impression. But when an engineer is doing precision work — tracing a dependency chain, mapping blast radius on a specific node, following a path from controller to repository — 3D gets in the way. Nodes occlude each other, depth perception makes connections ambiguous, and the layout resettles on every load.
2D is the mode for analytical work. Cleaner layout, unambiguous connections, stable positions, easier to follow a specific path. Both modes have a legitimate place depending on what the user is trying to do.
Implementation notes
- The
force-graph 2D library (same author as 3d-force-graph, vasturiano) has a near-identical API — this is an incremental implementation, not a rewrite
- Toggle button in the topbar (e.g.
3D / 2D)
- Preserve node selection, search state, and kind filters when switching modes
- Persist last-used mode in
localStorage
- 2D layout should use a stable force simulation so layout is consistent between sessions
Acceptance criteria
Priority
Roadmap item — after current 3D UI work is stable. Not a v0.1 blocker.
Summary
Add a toggle to switch between the current 3D force graph and a 2D flat layout.
Why
The 3D view earns its keep on first render — it communicates scale and cluster structure well and makes a strong first impression. But when an engineer is doing precision work — tracing a dependency chain, mapping blast radius on a specific node, following a path from controller to repository — 3D gets in the way. Nodes occlude each other, depth perception makes connections ambiguous, and the layout resettles on every load.
2D is the mode for analytical work. Cleaner layout, unambiguous connections, stable positions, easier to follow a specific path. Both modes have a legitimate place depending on what the user is trying to do.
Implementation notes
force-graph2D library (same author as3d-force-graph, vasturiano) has a near-identical API — this is an incremental implementation, not a rewrite3D / 2D)localStorageAcceptance criteria
Priority
Roadmap item — after current 3D UI work is stable. Not a v0.1 blocker.