Fix #132: milestone titles in events + removal #136

Merged
crueber merged 1 commit from fix/issue-132 into main 2026-09-05 15:09:51 +00:00
Owner

Fixes #132.\n\n1. Milestone system lines render the milestone TITLE, not the id: issueEventText(ev, milestones) now resolves milestone_changed from/to ids through the page-owned milestones:{o}/{r} cache (same source the sidebar uses); deleted milestones fall back to the bare id (02 §3.1 self-heal). Issue.jsx passes allMilestones() at the textFor call site. Event shape unchanged (ids on the wire, 02 §7).\n\n2. Removal: verified working end to end — the sidebar + dropdown's "No milestone" row (PR #119) PATCHes explicit null and clears. No picker change needed; proven in the browser drive below.\n\nTests: node --test web/test/unit/*.test.js 297/297 green (new: title resolution, deleted-id fallback, moved from→to). Browser drive (hub CDP daemon, real server + git): set v1.1 → anon added this to the "v1.1" milestone; clear via "No milestone" → sidebar none + anon removed this from the "v1.1" milestone; dark + light; zero console errors. No new deps. Docs: decision appended to docs/features/02_issues.md.

Fixes #132.\n\n1. Milestone system lines render the milestone TITLE, not the id: `issueEventText(ev, milestones)` now resolves `milestone_changed` from/to ids through the page-owned `milestones:{o}/{r}` cache (same source the sidebar uses); deleted milestones fall back to the bare id (02 §3.1 self-heal). `Issue.jsx` passes `allMilestones()` at the `textFor` call site. Event shape unchanged (ids on the wire, 02 §7).\n\n2. Removal: verified working end to end — the sidebar + dropdown's "No milestone" row (PR #119) PATCHes explicit null and clears. No picker change needed; proven in the browser drive below.\n\nTests: `node --test web/test/unit/*.test.js` 297/297 green (new: title resolution, deleted-id fallback, moved from→to). Browser drive (hub CDP daemon, real server + git): set v1.1 → `anon added this to the "v1.1" milestone`; clear via "No milestone" → sidebar none + `anon removed this from the "v1.1" milestone`; dark + light; zero console errors. No new deps. Docs: decision appended to docs/features/02_issues.md.
issueEventText(ev, milestones) resolves milestone_changed from/to ids
through the page-owned milestones cache (same source as the sidebar);
deleted milestones fall back to the bare id (02 §3.1 self-heal).
Issue.jsx passes allMilestones() at the textFor call site. No picker
change: the + dropdown's 'No milestone' row PATCHes explicit null and
was proven end to end in the browser drive (set + clear, titles in
both lines, dark + light, zero console errors).
Sign in to join this conversation.
No description provided.