Fix #143: milestone removal actually works #145
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!145
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/issue-143"
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?
Root cause: the thread route reuses ONE component instance across issue numbers, so a sidebar mutation's async tail (optimistic paint, PATCH, reconcile) ran against whatever issue the view showed when the PATCH resolved. Consequences: (1) the mutated issue could strand on its optimistic guess until an SSE frame arrived (reload() invalidated the NEW issue's key); (2) worse, an in-flight busy guard inherited from the previous issue SILENTLY swallowed clicks on the new issue - the busy early-return fires no PATCH and posts no tray entry, so the + menu just closes and the milestone stays put. That matches the report exactly: the server log shows the set-PATCH landing but no clear-PATCH ever arriving, while the UI gave zero feedback.
Evidence gathered while reproducing (read-only against the running stack + fresh local build):
Fix (web/src/pages/Issue.jsx only): pin num()/key() up front in toggleLabelApply + selectMilestone; reconcile the pinned key when the view moved on; reset both busy guards on num change. No-op selects still skip silently by design; every real click PATCHes or reports. Decision appended to docs/features/02_issues.md.
Verification: node --test 317/317 green; vite build clean; fresh local server from this branch driven over CDP - full set->clear->set cycle dark+light with API confirmation at each step (000001 -> null -> 000001, counters 1/0 -> 0/0), title-based timeline events, zero console/page errors. Screenshots: /tmp/opencode/proof143b-{dark,light}.png (plus API cycle proof).
Live-stack note: issue #1 left at milestone v1.1 (as screenshotted); issue #2's milestone is now cleared, which is the reporter's desired end state.