No way to add a milestone to an issue. #119
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#119
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?
When there are milestones for a repo, there doesn't appear to be a way to add one. I recommend using the same + as the labels have, and the drop down should contain the milestones. Then appear there. And in the milestone page it should show which issues are connected and how many there are.
Fixed by #128 — milestone picker in the issue sidebar (+ dropdown with No-milestone clear) + per-milestone linked issues on the milestones page. Includes a backend fix: PATCH {"milestone": null} now actually clears (it silently no-op'd before). Not merging; needs review.
PR #128 review (fix/issue-119, commit
1a03832+ review fixup8e1ff56): APPROVED — ready to merge.Backend null-decode fix (internal/issues/http.go:473-504): correct. RawMessage stays nil when absent (no-op preserved) and holds 'null' on clear; non-string/non-null 400s; unknown id 400s via service. Verified by code + regression test (set/absent-no-op/clear/400-number/400-unknown-id, all passing).
Sibling-key audit (service.go IssuePatch): no other PATCH key needs the same pass. title/state (string: null collapses to no-op instead of 400) and labels/assignees ([]string: null collapses to no-op) share the encoding shape but have no documented null-vs-absent distinction — milestone is the only key where null means 'clear' (02 §7). Null-title-as-no-op is fail-open-tolerant (ignores invalid input, mutates nothing); out of scope for this PR.
Picker (MilestonePicker.jsx): mirrors LabelPicker idiom — menuitemradio rows (correct single-select vs checkbox), checkmark, 'No milestone' clear row, page-owned cache via props (never fetches), triage gating in Issue.jsx:382, Esc+refocus/outside-click/native buttons, busy-disable. Title display uses milestoneTitle with bare-id fallback (matches 02 §3.1 label self-heal stance). Milestone page uses server-side milestone= filter per row + title links to /issues?milestone= (Issues.jsx already reads that param) — no client world-filter.
Tests: go test -race ./internal/issues/... ok; coverage 96.2% (>=95%); go vet clean; gofmt clean; node --test web/test/unit/*.test.js 270/270 pass (incl. new milestones.test.js). No new non-stdlib imports (encoding/json already imported).
Review fixup pushed (
8e1ff56): added absent-key no-op lock-in to TestPatchIssueMilestoneHTTP (http_test.go) — the PR asserted clear but never that absent leaves the milestone untouched. Re-tested green.Docs (02_issues.md §7 + Wave B notes): accurate, minimal, correct section.
Note: no browser drive (per instructions); headless node tests + reasoning only.
Fixed by PR #128 incl. review absent-key lock-in test (null-milestone backend bug fixed; 96.2% + 270/270), merged. Closing.