Fix #506: commit-graph visualization #511

Merged
crueber merged 1 commit from fix/issue-506 into main 2026-09-14 02:48:54 +00:00
Owner

Optional (default OFF, persisted) commit-graph on the Commits tab — client derivation only, no backend/SDK/wire change, no new deps (law 1: hand-rolled lanes; any library need would have been flagged before landing — none was).

What: new pure web/src/lib/commit-graph.js (assignLanes first-parent threading + branch-out/merge-in, rowDiagonals, geometry, localStorage toggle helpers default OFF), lane-rail column in CommitRow, pill toggle in the crumbs row (aria-pressed), createMemo over the sha+path+skip useData window (zero new fetches), themed .gl-N palette (light 700s / dark 400s, class-only, no JSX literals), rail hidden at <=480px with ParentLinks kept (390px safe by construction), pager trade-off called out in UI + code, law-12 decision in docs/go/12_web_ui.md.

Tests: new web/test/unit/commit-graph-506.test.js (14 tests); full node --test web/test/unit/*.test.js 1145 total / 1144 pass / 1 fail — the 1 failure is pre-existing on pristine origin/main (live-server smoke subtest in smoke.test.js, verified head-to-head); vite build + esbuild green with the rail in the bundle. Browser proof open (shared-daemon loopback guard blocks loopback targets — no private daemon per workspace rules). Do NOT merge — review requested.

Optional (default OFF, persisted) commit-graph on the Commits tab — client derivation only, no backend/SDK/wire change, no new deps (law 1: hand-rolled lanes; any library need would have been flagged before landing — none was). What: new pure web/src/lib/commit-graph.js (assignLanes first-parent threading + branch-out/merge-in, rowDiagonals, geometry, localStorage toggle helpers default OFF), lane-rail column in CommitRow, pill toggle in the crumbs row (aria-pressed), createMemo over the sha+path+skip useData window (zero new fetches), themed .gl-N palette (light 700s / dark 400s, class-only, no JSX literals), rail hidden at <=480px with ParentLinks kept (390px safe by construction), pager trade-off called out in UI + code, law-12 decision in docs/go/12_web_ui.md. Tests: new web/test/unit/commit-graph-506.test.js (14 tests); full node --test web/test/unit/*.test.js 1145 total / 1144 pass / 1 fail — the 1 failure is pre-existing on pristine origin/main (live-server smoke subtest in smoke.test.js, verified head-to-head); vite build + esbuild green with the rail in the bundle. Browser proof open (shared-daemon loopback guard blocks loopback targets — no private daemon per workspace rules). Do NOT merge — review requested.
Client-only lane derivation (web/src/lib/commit-graph.js) from the
existing {sha, parents} payload — no backend/SDK/wire change, no new
deps. Toggle defaults OFF, persisted via localStorage (theme precedent);
lanes memoize per sha+path+skip window; rail hides at <=480px (390px safe);
law-12 decision in docs/go/12_web_ui.md.
Sign in to join this conversation.
No description provided.