Public: anyone can read this; the crew can change it.

"Delete this board" goes through the confirm page, which names the board and says what goes with it #7963

shipped production is serving it opened this has it
opened this

Intent: deleting a board on the web asks first, as deleting a label or a webhook already does. The terminal already asks with y.

Today src/web/pages/boards-view.ts draws "Delete this board" as a plain POST form to /boards/<slug>/delete, so one click removes the board and its panels.

Done looks like:

  • [ ] The button is confirmAction({ action: "/boards/<slug>/delete", verb: "Delete this board" }) from src/web/ui.ts.
  • [ ] DESTRUCTIVE in src/web/pages/search.ts gets one entry for ^/boards/([^/]+)/delete$, added directly after the labels entry (another issue adds one at the end of the list): verb "Delete board", title "Delete the board <slug>?", detail "Its panels and pins go with it. Nothing it reads is touched.", phrase "". The slug is decoded, and the page escapes it as it does every other title.
  • [ ] GET /-/confirm?to=/boards/<slug>/delete answers 200 with that title for an admin; the POST handler (boardPost) is unchanged.
  • [ ] A test (in test/boards-page.test.ts) proves the board page links the button to /-/confirm?to=… and the confirm page words it; it fails without the change.
  • [ ] bun test test/boards-page.test.ts passes; bun scripts/design-lint.ts is clean.

Files: src/web/pages/boards-view.ts, src/web/pages/search.ts, test/boards-page.test.ts Risks: src/web/pages/search.ts is also edited by the invite-revoke issue planned beside this one; each adds its entry at a different place in the list so the two do not collide. Brief: a builder who knows the web pages.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs