fix(dashboard): declutter Influence ego-network edge labels
What
The Influence view ego-network rendered a per-edge relationship label on every edge, always on. Two defects resulted:
- R4 (Projects view): every membership edge repeated the word "member", stacking into a solid wall over the project nodes, obscuring which projects are which.
- R7 (Users view): "reviewed" and "merged" labels accumulated around the central ego node, overlapping each other and the node circles.
Both reproduced on a current render (200 synthetic users): 56 "member" labels in the Projects view, 94 "reviewed"/"merged" labels in the Users view, all at full opacity.
Approach: hover-gated edge labels
The relationship type is already encoded by edge color and dash style (blue solid = reviewed, green dashed = merged, brown = project membership) and stated in the legend, so the repeated label words add little by default and only create clutter on dense graphs.
The fix hides the entire edge-label layer by default (opacity 0, pointer-events none) and reveals it on hover:
- Hovering a node shows the labels for that node's incident edges.
- Hovering a single edge shows that one label.
- Leaving re-hides the layer.
Node identity labels (usernames, project names) stay visible at all times, so identification never degrades. No graph information is removed: the edges and their types are still fully present (color + dash + on-demand label). The legend hint now reads "Hover a node for relationship labels".
This keeps the change small and contained to src/07-influence.js (label layer + hover handlers) plus a one-line legend hint in src/08-detail.js.
Before / after
Before: dense "member" wall over project nodes (R4); "reviewed"/"merged" pile around the ego node (R7).
After:
- Users view: central node and every neighbor username read cleanly; relationship type shown by edge color.
- Projects view: project nodes clearly identifiable; the "member" wall is gone.
Screenshots captured against a local render of 200 synthetic users (before-users, before-projects, users, projects).
Validation
make staticregenerated the bundle;make checkpasses (bundle in sync with source).go vet ./...clean;CGO_ENABLED=1 go test -race ./...passes;golangci-lint run0 issues; coverage 69.9%.- Committed structural test
TestRender_InfluenceEdgeLabelsHoverGatedasserts the edge-label layer is created default-hidden, node hover reveals only incident-edge labels, edge hover reveals a single label, mouseleave re-hides the layer, and the pre-fix always-on code is gone. Verified fail-on-old: every assertion fails against the pre-fix bundle.