2.8.9 Work-item ⋯ actions menu + Archive action (detail/list/board) — route + UI + page-state
Estimate: 80m · Type: code · Depends on: 2.8.8, 2.8.1
The shared host surface the 2.8.4 Delete row slots into — assumed by the 2.8.1 design ("the shipped Popover actions menu … identical on detail/list/board") but ABSENT: the detail header has only an Edit link, board cards are drag-only, issues-list rows have no ⋯ menu, and Archive is surfaced NOWHERE (archiveWorkItem service has zero route/UI callers; archive reaches the web app only via the in-flight MCP tool 7.8.14 / MOTIR-790).
Build the shared work-item ⋯ actions menu (Popover: Edit details → existing edit route · Copy link → clipboard · — · Archive) and mount it on the detail header, the issues-list row, and the board card. Surface Archive: add a thin POST /api/work-items/[id]/archive route over workItemsService.archiveWorkItem (canEdit-gated, typed errors → 403/404), wire the 2.8.8 Archive flow + archived-item state, and handle page-state-after-mutation on all three surfaces (server refresh vs client-island tick — the board watches CreateIssueProvider.issuesChangedAt). Thread the permission flag to each surface (getManageCapabilities / getCapabilities). Delete is NOT added here — 2.8.4 adds the Delete row + confirm dialog to this menu.
Acceptance criteria
- A shared ⋯ actions menu renders on detail/list/board with Edit details · Copy link · Archive, matching 2.8.8; non-permitted users see the gated/collapsed menu.
- Archive route over archiveWorkItem (canEdit; typed errors → 403/404); archiving updates detail/list/board correctly (server vs client-island rule);
--el-*/shape tokens. - "How to test" click-path in the PR body (UI subtask).
Context refs
- design 2.8.8 (+ 2.8.1 menu); app/(authed)/issues/[key]/page.tsx (detail header — Edit link to fold in), app/(authed)/issues/_components/* (list rows), app/(authed)/boards/_components/BoardCard.tsx; workItemsService.archiveWorkItem; projectAccessService.getManageCapabilities; CreateIssueProvider.issuesChangedAt; CLAUDE.md "Page state after a mutation". Blocks 2.8.4.