feat(web): responsive UI overhaul — hamburger nav, spacing scale, icon system (ADR-0019) #16
No reviewers
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Cloonar/coding-lab!16
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/responsive-ui-overhaul"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Phone-first responsive overhaul of the operator SPA (issue #15), within the existing design language — no colour/type/radius redesign. Pure frontend/CSS: no schema, seam, API, SSE, or migration change, and no new npm dependency. Recorded as ADR-0019.
Closes #15.
What changed
Iconcomponent vendoring 15 Lucide glyphs as inline SVG (ISC,currentColor,aria-hidden); the ADR-0018 copy/check SVGs fold in so it is the single source.Esc, and navigation (including the already-active link). Inline nav + username restored at ≥640px; the old 560px hide-username rule is removed.--space-*scale on card padding, list gaps, and section margins; roomier at ≥640px, current density on phones.Also fixes a pre-existing prettier violation in
lib/toolGroups.test.tsthat theformat:checkgate surfaced (CI has no runner to have caught it).Validation
nix flake check— all checks passed (web build + eslint + prettier + 366 vitest; Go; golangci-lint; nixos-module).That visual pass caught a bug the unit suite + review both missed: the desktop hamburger-hide rule tied
.icon-btnon specificity and lost on source order, so the hamburger stayed visible at ≥640px — fixed by scoping it.topbar .nav-toggle. (jsdom applies no CSS, so this class of breakpoint bug is invisible to vitest.)🤖 Generated with Claude Code
https://claude.ai/code/session_01NP2Ai6CBkYY7Fj1fujtRDD
Landing audit — PR #16 — verdict: PASS
Verification signal relied on: local
nix flake check(this repo's CIci / flake-checkhas nonix-label runner and stays pending, so it never vouches). Ran the full gate locally — all checks passed: web build + eslint + prettier + vitest, Go, golangci-lint, and the nixos-module eval.What was checked
nix flake check→all checks passed!(exit 0). This is a real build of the web/Go/module derivations, not eval-only.feat(web): …is valid Conventional Commits; body carries a workingCloses #15, so the merge auto-closes the issue. Head isfeat/responsive-ui-overhaul(a manual PR, not anafk/<N>run).main.src/hash change.components/Icon.tsxconsolidates all inline SVG (15 vendored Lucide glyphs + the ADR-0018 copy/check icons) behind onearia-hiddencomponent; accessible names stay on the enclosing controls.aria-labelandtitle; tests were updated to query by accessible name..topbar .nav-toggle(0,2,0) specificity scope that out-specifies.icon-btn(0,1,0) — the exact desktop-hamburger-visible bug the ADR documents.No blockers. Awaiting explicit free-text merge go-ahead before merging.