fix(dashboard): make chart domain labels readable on three views
What
UX fix for three chart-label readability defects on the dashboard. Every item was verified against a current render (build, generate 200-user fixture, analyze, render, view in a browser) before any code change. All three were genuinely still broken in current main.
The dashboard now uses one domain-label convention where space is tight: the short codes SC / CR / CI / Sec / Col / Inf (the existing DOMAIN_ABBREV constant, already used by the Profiles table), with the full name in a hover tooltip.
Per-item
R1 — Profiles expanded-row radar: domain labels clipped. STILL BROKEN.
Full names at 130% radius overflowed the narrow SVG viewBox (width 260): "Code Review" right-edge 285 (clipped right), "Collaboration" left -28, "Infrastructure" left -30 (clipped left). Rendered as "Code Re", "tructure", "boration".
Fix: label each axis with the short code plus a <title> tooltip; full names stay in the adjacent domain-score bars. internal/renderer/static/src/08-detail.js:51.
R2 — Adoption "Archetype Relationships" legend incomplete: 2 of 8 missing. STILL BROKEN.
The legend already iterated every archetype node present in the data (never a fixed subset), but laid them in a single non-wrapping row. With all 8, the running x overflowed the 600-wide viewBox: "Generalist" started at x=612 and "Emerging User" at x=702, both off the right edge and invisible. (The specific pair depends on data; the smallest-count archetypes always fell off.)
Fix: wrap the legend onto additional rows and grow the viewBox to fit, so all 8 stay visible. internal/renderer/static/src/03-adoption.js:294.
R3 — Adoption heatmap column headers truncated. STILL BROKEN.
.heatmap-table is table-layout: fixed with a ~70px column budget and th { text-overflow: ellipsis }. "Source Control", "Code Review", "Collaboration", "Infrastructure" all overflowed and rendered "Source Co...", "Code Revi...", etc.
Fix: emit the short code with a title= tooltip giving the full name. internal/renderer/static/src/03-adoption.js:44.
Tests (committed, fail-on-old)
Three structural tests in internal/renderer/render_test.go, all confirmed to FAIL on the pre-fix bundle and PASS on the fixed bundle:
TestRender_AdoptionHeatmapHeaderUsesShortCodes— header uses short code + title; rejects the old bare-label<th>.TestRender_AdoptionLegendWrapsAllArchetypes— legend iterates every node, wraps on overflow, resizes the viewBox; rejects the old single-row layout.TestRender_ProfileRadarLabelsReadable— radar axis uses short code +<title>; rejects the old full-label text node.
Validation
make staticregeneratedassets/app.src.jsfrom src;make checkpassed (bundle-sync gate).go vet ./...clean.CGO_ENABLED=1 go test -race ./...pass.golangci-lint run0 issues. Coverage 69.9% (>= 65%).- Visual confirm in a browser on a 200-user fixture: heatmap headers SC/CR/CI/Sec/Col/Inf with no ellipsis; legend shows all 8 archetypes on two rows; radar axis labels readable and within the viewBox.
Do not merge.