Skip to content

moooon

Motir

Vibe your whole project. Bring an idea — Motir's three AI layers plan it, track it, and ship it, end to end. You're looking at Motir, built in Motir.

  • Vibe Project
  • Open Source
  • AI Agent
  • AI Loop
1
requests
0
upvotes
145
planned
1,361
shipped

Motir · Work items

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 its BoardConfigModel from 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 (now boardId-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)