Skip to content

Move cards between boards #568

Description

@nickmeinhold

✨ Feature Request

Is your feature request related to a problem? Please describe.

Asked for in the Discord #help thread "Moving cards between board": a general to-do board they want to split into various other boards, with no way to move the cards across.

Describe the solution you'd like

Let the card's existing "Move to another list" picker offer lists on the workspace's other boards, grouped by board.

As far as I can tell this is a UI change only, since the API already does both halves:

  • card.update accepts any listPublicId in the workspace and does not check that the list is on the card's board, so it already performs a cross-board move
  • board.all already returns every board in the workspace with its lists and its labels, which is exactly the data the picker needs

The scoping is two lines:

  • CardContextMoveListModal.tsx:54, const lists = card?.list?.board?.lists ?? []
  • CardContextDuplicateModal.tsx:56, const lists = board?.lists ?? []

Describe alternatives you've considered

  • Leave it to the API and MCP. It works today, but it is not reachable for a non-technical user, and what is being described is ordinary board reorganisation.
  • Copy instead of move. Simpler, but it leaves the original behind and is not what was asked for.
  • A dedicated "move card to board" dialog separate from the list picker. More discoverable, but it duplicates a control that already exists.

Additional context

The part that needs a decision is labels rather than the picker. Labels are board-scoped (labels.boardId), so a card arriving on a new board brings labels belonging to its old one. Options, none obviously right:

  1. Drop labels the destination board does not have
  2. Match by name and link the destination equivalent, dropping the rest
  3. Create the missing labels on the destination board
  4. Block the move while the card holds labels the destination lacks

Since board.all already returns each board's labels, whichever rule you choose can be appthe page is alreadyfetching.

Worth flagging that this is already reachable today rather than hypothetical: because card.update has no board check, a cross-board move can be made through the API right now, and the card keeps its old board's labels afterwards. So there is an existing gap here whether or not the picker changes. I have a fix for the writer side of it on a branch and am happy to open it separately, though the question above is yours to answer first.

Implementation ideas (optional)

Swap those two list sources for a board.all query and group the options by board name. Members and checklists are workspace-scoped or card-owned, so they travel without needing a rule.

Would you like to work on this feature?

  • Yes, I'd like to help implement this feature
  • No, I'm just suggesting the feature

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions