Fix #482: ref picker pin + pills #488

Merged
crueber merged 2 commits from fix/issue-482 into main 2026-09-13 19:37:18 +00:00
Owner

Client-only fix for #482 (no wire change, no new deps): 1. Pinned default row from the summary head (pinnedDefault/dedupeRefs in web/src/lib/ref-pill.js), rendered first in .ref-list with default group label + .pill badge + divider, via the existing pick() path. 2. Kind select becomes two btn/primary toggle pills (Branches|Tags, role=group, aria-pressed) above the full-width filter input; switchKind repeats the old onChange contract with query persisted. Esc/outside-click, opaque .ref-drop, and the #278 viewport bound untouched. Law-12 decision in docs/go/12_web_ui.md. Tests: node --test 1047 total / 1045 pass / 2 pre-existing live-server smoke failures (identical on main); vite+esbuild green. Browser proof open (shared-daemon guard).

Client-only fix for #482 (no wire change, no new deps): 1. Pinned default row from the summary head (pinnedDefault/dedupeRefs in web/src/lib/ref-pill.js), rendered first in .ref-list with default group label + .pill badge + divider, via the existing pick() path. 2. Kind select becomes two btn/primary toggle pills (Branches|Tags, role=group, aria-pressed) above the full-width filter input; switchKind repeats the old onChange contract with query persisted. Esc/outside-click, opaque .ref-drop, and the #278 viewport bound untouched. Law-12 decision in docs/go/12_web_ui.md. Tests: node --test 1047 total / 1045 pass / 2 pre-existing live-server smoke failures (identical on main); vite+esbuild green. Browser proof open (shared-daemon guard).
12_web_ui.md Decisions: client-only pin from the summary head
(pinnedDefault/dedupeRefs in lib/ref-pill.js) + btn/primary pill toggle
replacing the type select; no wire change, no new deps.
pinnedDefault(head(), kind) badged whatever branch was on screen as
'default' (head() is context-first per #252: Tree/Blob publish the viewed
ref), leaving the real default unreachable past the 50-ref page window
exactly when viewing a fix/* branch. RefPicker takes a dedicated
summaryHead prop (s().head straight through); the pill label keeps the
context-first head() unchanged. Test pins the wiring both ways; doc entry
spells out the prop split and the measured test counts.
Sign in to join this conversation.
No description provided.