Fix #533: toggle restyle + Tailwind rule #535
No reviewers
Labels
No labels
actions
bug
cli
duplicate
enhancement
fork
forum
git storage
help wanted
insights
invalid
issues
moderation
oidc
ownership transfer
packages
pr/merge protection rules
projects
pull requests
question
releases
sponsorships
tags
webhooks
wiki
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
crueber/walhub!535
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/issue-533"
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?
Fixes #533 — the six #522 feature toggles (Settings → General → Features) rendered as a scattered column because each checkbox wore the text-field
inpututility (w-full + padding + border on a checkbox). Now six aligned flex rows with a shared toggle-switch.What changed (client-only; no backend, SDK, or API change; no new deps; no ui.css change):
web/src/components/ToggleSwitch.jsx(VisSelect precedent — one shared control): real<input type=checkbox>(peer sr-only, keyboard-operable) withrole=switch+aria-checked, w-9 h-5 rounded-full track (zinc off / emerald on, both themes, theme-derived only) + h-4 w-4 knob sliding viapeer-checked:translate-x-4,peer-focus-visiblering. Root is a span, never a label (no nested-label markup).web/src/pages/Settings.jsxFeatures section: each row is one<label class="flex items-center justify-between gap-4">— title + mutedblock text-xshint left (min-w-0), switchshrink-0right — inside the untouchedgrid gap-2list. Theinputclass is gone from every checkbox.flagsDirty()+ thewithFeaturessettings-PUT save path (invalidations, 403-in-note, reseed-from-truth) byte-identical.docs/go/12_web_ui.md: law-12 FIXED (#533) decision entry.Acceptance: six aligned flex rows; toggle-slider emerald/zinc both themes; role=switch + aria-checked + focus ring, row-label click toggles natively; no
inputclass on any checkbox; save behavior unchanged; verification mandate — see below.Tests:
node --test web/test/unit/*.test.js→ 1218 total / 1217 pass / 1 fail — the 1 failure is the pre-existing live-server smoke subtest (/setup 403s on the standing live instance, documented as pre-existing on pristine origin/main). Newsettings-features-533.test.js(6 tests) + #533-scoped pin update insettings-features-522.test.js.vite build+esbuildgreen.Browser proof OPEN: no rendered verification was possible here (shared-daemon loopback guard blocks loopback targets — no private daemon per workspace rules). Orchestrator to screenshot-verify the branch with the independent rig pre-merge (six rows aligned, switches right column, desktop + ~390px, both themes). Do NOT merge on code reading alone.