Milestone sidebar UX: minus-button removal + linked milestone #148
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 project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
crueber/walhub#148
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Milestone sidebar UX: minus-button removal + linked milestone
Follow-up to #119/#132 (user feedback on the shipped + dropdown design).
Acceptance criteria
−button removes directly (API-confirmed), + hidden; unset state: + dropdown picks (unchanged).node --testgreen; browser check set→remove→set cycle both themes, zero console errors; no new deps.Fixed by #149 (branch fix/issue-148): − button + linked title, tests green, browser-verified both themes.
PR #149 review (fix/issue-148,
9c9776b) — APPROVED, ready to merge.Render branches (web/src/pages/Issue.jsx:446-483): set state shows triage-gated − button and hides the + picker via Show when={t().milestone} with picker as fallback — no both/neither state; unset state passes current={null}, identical to old current={t().milestone ?? null} when unset. Non-triage sees neither control, same as before.
Minus path: onClick selectMilestone(null) reuses the proven explicit-null PATCH (milestonePatch returns {milestone:null}, skips no-op), pinned key n=num()/ck=key() + stale-guard reload/invalidate, busy early-return + disabled={getMilestoneBusy()} — #143/#145 discipline intact, no regression.
Title link href
/{full}/issues?milestone=<encodeURIComponent(id)>matches Milestones.jsx:99 (#119 shape) exactly, including class/title idiom (title resolves via milestoneTitle, correct since thread carries only the id). Dark+light via shared emerald/dark: classes; − button reuses the picker trigger btn classes. No new deps (A from already-approved @solidjs/router).Docs (02_issues.md:305,381): entries accurate, reference #148/#143/#145/#119 correctly.
Verify (scratch /tmp/opencode/wt148, main worktree untouched): node --test web/test/unit/*.test.js 317 pass / 0 fail; vite build clean (121 modules, 1.74s). No browser drive (static JSX branch change, covered by reasoning + existing headless suite per instructions).
MERGE RECOMMENDATION: ready to merge.
Fixed by PR #149 (review clean; − reuses proven null path; 317/317 node tests), merged. Closing.