Drag and drop
Boards are direct manipulation surfaces: drag tickets within a column, between columns, into and out of the backlog, and drag whole columns to reorder them. Changes land for everyone watching the board in real time.
What you can drag
- A ticket within its column — reorder it against its neighbors.
- A ticket to another column — drop it exactly where it should sit in the destination column. This is also how status changes: the column a ticket sits in is its status.
- A ticket into or out of the backlog — the backlog is a drag target like any column.
- A column — drag a column header to reorder columns on the board.
- A multi-selection — select several tickets (press
Xon each, or⌘ + A/Ctrl + Afor all in a column), then drag any selected ticket to move the whole group. The group lands in order at the exact drop position, written as one atomic change — either every ticket moves or none do.
Drags are optimistic: the board updates the moment you drop, then confirms against the server. If the write fails (for example you lost connection), the board rolls back and shows a toast.
Keyboard alternative
Every drag has a keyboard equivalent. Focus a ticket with J / K or the arrow keys, then press S to move it to a different column or the backlog. For several tickets, select with X first — S then moves the whole selection. See Keyboard shortcuts for the full list.
How ordering works
Can stores each ticket's position as a rank string (a lexorank), not a numeric index. When you drop a ticket between two others, it gets a new rank string that sorts between its neighbors — no other ticket needs to change.
This matters for two reasons:
- Realtime safety — two people reordering the same column at the same time cannot corrupt each other's ordering; each move touches only the moved ticket.
- No renumbering — a board with thousands of tickets reorders just as fast as a board with ten, because moving one ticket is always a single-document write.
You never see rank strings in the UI; they exist so that ordering is stable, fast, and conflict-free.