3.6.3 Board-configuration UI — column manager + status mapping; repoint the unmapped tray
Estimate: 30m · Depends on: 3.6.1, 3.6.2, 3.2.6, 2.2.5
The admin surface itself, per design/boards/board-config.mock.html (3.6.1), consuming the 3.6.2 API — and the subtask that finally CLOSES the 3.2.6 unmapped-tray loop.
The page. A new app/(authed)/settings/project/board/page.tsx (Server Component resolving the active project + the caller’s admin role, mirroring the settings/project/workflow page, Story 2.2.5) handing typed data to a client BoardConfigEditor. Add the settings-nav entry ("Board", beside "Workflow"). The editor: rename the board; the column manager (add / rename / reorder via drag / delete — reuse the dnd-kit setup from 3.2.4, no new lib); and the status mapping (each column shows its mapped status Pills; an unmapped-statuses rail; drag a status into a column OR use a per-column status picker — keyboard-operable, finding #35). Every write is optimistic-with-reconcile against the 3.6.2 endpoints; the delete-column confirm + guard from the design. Membership-gated affordances (read-only for non-admins, the server re-gates).
Close the 3.2.6 loop (the headline). Repoint the unmapped-statuses tray (UnmappedStatusesTray, 3.2.6): the interim "Manage statuses →" CTA (which went to the workflow editor because no mapping admin existed) becomes "Map columns →" linking to settings/project/board — the real surface. Update the boards i18n keys (en + zh) and the design/boards/design-notes.md "CTA reality" note accordingly. Also wire the 3.2.3 column [⋯] menu (a disabled seam) to open here.
Acceptance criteria
settings/project/boardrenders the board-config editor (board rename + column manager + status mapping) perdesign/boards/board-config.mock.html, with a settings-nav entry beside Workflow; colours via--el-*, shape via element tokens; render checklist clean; AA-safe.- An admin can add / rename / reorder / delete a column and map / unmap / move a status; changes reconcile against the 3.6.2 API and reflect on
/boards(a mapped status appears as/in its column; an unmapped one returns to the tray). - Status mapping is operable by keyboard, not drag-only (finding #35); the delete-column confirm names the consequence (statuses → unmapped) and respects the 3.6.2 guard.
- The 3.2.6 unmapped tray CTA is repointed to this surface ("Map columns →" →
settings/project/board), theboardsi18n keys updated (en + zh, parity holds), and the design-notes "CTA reality" note updated; the 3.2.3 column[⋯]menu opens here. - Non-admins get the read-only treatment; component tests cover the column manager, the map/unmap interaction (incl. the keyboard path), and the tray repoint.
Context refs
app/(authed)/settings/project/workflow/page.tsx+_components/WorkflowEditor.tsx(2.2.5) — the sibling settings page + client-editor pattern to mirror; the settings nav to extendapp/(authed)/boards/_components/UnmappedStatusesTray.tsx(3.2.6) — the tray to repoint ("Manage statuses" → "Map columns");messages/en.json+zh.jsonboards.*;design/boards/design-notes.md(the "CTA reality" note)app/(authed)/boards/_components/BoardContainer.tsx(3.2.4 dnd-kit setup to reuse) +BoardColumn.tsx(the[⋯]seam) — reuse, do not add a second DnD lib- Story 3.6.2 — the column-config service + API this consumes;
components/ui/*(Pill, Button, Modal, Input);motir-core/CLAUDE.md(--el-*+ element-shape rules)