MOTIR-199Done
3.7.8 Board-scoped settings — thread the selected board through the settings page + entries
Estimate: 24m · Depends on: 3.7.7, 3.7.5
Make board SETTINGS per-board, per design/boards/ (3.7.7). Today settings/project/board resolves the project DEFAULT board (boardsService.getBoard(projectId, ctx)); 3.7.5 already taught getBoard to take a boardId, so this threads the SELECTED board through the admin surface (no service/schema change — the 3.6.2 config writes are already board-scoped):
- The settings page reads
?board=<id>(defaulting to the project’s default board when absent; a board outside the active project/workspace → not-found, never cross-tenant) and builds itsBoardConfigModelfrom THAT board’s projection. - A “Board settings” item is added to the 3.7.4 switcher manage menu → navigates to
/settings/project/board?board=<id>for that board. - The settings page gains the board header + switcher (per 3.7.7) so the admin sees WHICH board they’re editing and can switch (updates
?board=and re-lays the config). - The existing column
[⋯]“Board settings →” (ColumnActionsMenu), unmapped-tray “Map columns” (UnmappedStatusesTray), and the settings landing card (BoardSettingsCard) carry the active?board=so they open the board being viewed, not the default.
Membership-gated as today (the page already re-gates writes server-side; TODO(6.4) project-admin).
Acceptance criteria
settings/project/board?board=<id>configures THAT board (columns / mapping / group-by / WIP); absent?board=→ the default board; a board outside the active project/workspace → not-found (tenant-safe).- The switcher manage menu has a “Board settings” item →
/settings/project/board?board=<id>; the settings page shows the board name + a board switcher; the column[⋯]+ unmapped-tray + landing-card links carry the active board. - Component tests cover the manage-menu “Board settings” entry + the settings page resolving
?board=(selected vs default vs cross-tenant not-found).
Context refs
app/(authed)/settings/project/board/page.tsx(resolves the default board today) +_components/BoardConfigEditor.tsx(3.6.3);boardsService.getBoard(nowboardId-taking, 3.7.5)app/(authed)/boards/_components/BoardSwitcher.tsx(3.7.4 manage menu),ColumnActionsMenu.tsx,UnmappedStatusesTray.tsx,settings/project/_components/BoardSettingsCard.tsx— the entry points to thread?board=;design/boards/(3.7.7)