Fix #325: label color picker #335
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!335
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/issue-325"
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?
Closes #325.
Replaces the bare 6-hex input on the
/:o/:r/labelscreate form with aLabelColorPicker(web/src/components/, reusable by a future edit flow): trigger button (current-color swatch + hex,.inputstyling) opens a preset popover of 8 swatches (LABEL_COLOR_PRESETSinweb/src/lib/label-colors.js— classic GitHub hues,d73a4afirst preserving the form default) plus a Custom hex… row revealing the pattern-validated free-text input. Live preview dot beside the input reuses the exact list-row swatch rendering (neutral while invalid). Presets fill the same parent color signal; submit posts the resolved 6-hex unchanged — no backend change, no new deps, no new CSS (reuses audited.label-droppanel: opaque + 390px viewport-bound per #278). Keyboard: native buttons, outside-click/Esc close with onCleanup (LabelPicker/RefPicker idioms); dark+light share the treatment. Docs decision appended indocs/features/02_issues.md(law 12).Tests: new
web/test/unit/label-colors.test.js(10 tests: palette count/validity/uniqueness, validation matrix, preset matching, picker wiring/preview/idioms/no-backend guards) — 630/630 non-smoke tests pass repo-wide;vite build+ SDK bundle green.Open (explicit): browser proof — shared obscura daemon blocks loopback targets and no private daemon per workspace rules, so no live-Chrome pass; smoke.test.js cancels identically on clean main (node fetch cannot reach loopback in this sandbox, pre-existing). Real-browser check requested on review.