opencode-bot: changes for issue #193 #202
No reviewers
Labels
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Grandiras/Ponente!202
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "opencode/issue-193"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #193.
🤖 Reviewing this PR — the review will link the full session transcript.
✅ Verdict: approve — no blocking issues found.
Moves the three board-scoped admin pages onto the board as
/board/{id}/settings/{columns,tags,access}plus a rename/delete page, gates them on the board's admin grant row instead of the super-admin policy, and redirects the old routes. The permission model is sound: pages resolve the board for the viewer and renderboard.deniedfor non-admins, while every write is still refused in the services byBoardPermissions.RequireAdminister, so a role taken away mid-visit is refused server-side and not only hidden. The header's "Board settings" entry is gated on the same grant rows (GetAdministeredAsync, refreshed onBoardsChanged), and_isSuperAdminis read from the same snapshot the Admin policy uses, so entry and pages cannot disagree. The old routes redirect without leaking anything (plain[Authorize]; the bare forms' "first administered board" substitution is the one deliberate one and only for URLs that never named a board).ActiveBoardId's first-segment parse handles the settings sub-paths;SettingsHref's null-forgiving dereference is only reached underCanManageActiveBoard. Localization keys exist in both locales, the e2e suite has been moved to the new routes, and no references to the removed access-ignored reads (GetAllAsync/ResolveForAdminAsync/GetAccessSummariesAsync) or boardMoveAsyncremain. Docs are updated consistently with the code.Minor notes, none blocking:
Boards.razorno longer clears_newNameor toasts on create (moot — it navigates straight to the new board); the columns/tags pages still import the sortable JS module before discovering the list is empty on a denied render (harmless); and a board admin now sees the full deployment member list on the access page — inherent to board admins granting access, and documented as such.⏱ 4m 20s · 14 steps · $0.0548 · tokens: 167.7k in / 13.9k out (+758.1k cache-read) · Go: 5h 56% · wk 47% · mo 25%
📜 Full session transcript