Skip to content

Kanban board

The Board is a Kanban view of one repository's work, opened from the toolbar next to the graph and the file explorer. A board is a sprint: cards in columns, each card carrying a description, a checklist, a type and an identifier of its own.

A local board is stored in the repository's own .git, on a hidden ref, one commit per change — so the board is versioned like everything else and never leaves the machine. A repository with a connected GitHub account can host a shared board instead, whose cards are real issues; everything below is the local one, which needs nothing set up.

Creating a board for a repository

A repository starts with no board, and the Board view offers to create the first one. A board needs a name — a sprint's name, usually — and can take a card prefix: give it GM and its cards are numbered GM-1, GM-2, the identifier you paste into a commit message or a pull request. It starts with the three columns every board starts with, To do, In progress and Done, which the Columns button changes afterwards.

Creating a board for a repository

Captured from the running app by this scenario.

Do this

  1. Open the board
  2. Create a board named Sprint 1 with the card prefix GM

You should see

  • The board Sprint 1 is shown
  • The board shows the columns To do, In progress, Done
  • The repository stores 1 board in its own git history
  • The board history records git-manager: create board

Creating a standing board with no sprint to close

Not every board is a sprint. "This board is an iteration" is on by default, and turning it off makes a standing board instead — a backlog a ticket passes through before it ever reaches one, with no report to freeze and no successor to open when the work slows down. A standing board never offers to close, which is the one thing that tells the two apart on screen once it exists.

Creating a standing board with no sprint to close

Captured from the running app by this scenario.

Do this

  1. Open the board
  2. Create a standing board named Backlog with the card prefix GM

You should see

  • The board Backlog is shown
  • The board offers no way to close it

Adding a card and moving it across the board

The + on a column header opens a new card in that column. Only what has to be decided before the card exists is asked for — its kind, its identifier and its title — and the card then opens as a full record where every other field saves on its own. A card is a Task, a Bug or an Epic: three coloured tiles the board reads at a glance, chosen once here and changeable afterwards from the card's own record.

Changing which column a card is in is a drag on the board, and, for the times the card is already open, the status button at the top of its right-hand panel. Both write the same thing, and both land in the repository as a commit on the board's ref.

Adding a card and moving it across the board

Captured from the running app by this scenario.

Do this

  1. Open the board
  2. Create a board named Sprint 12 with the card prefix GM
  3. Add a Bug card titled Write the release notes to the To do column
  4. Set the status of the card Write the release notes to In progress

You should see

  • The card Write the release notes is identified as GM-1
  • The card Write the release notes is shown as a Bug
  • The In progress column holds 1 card
  • The To do column holds 0 cards
  • The card Write the release notes is stored in the In progress column
  • The board history records git-manager: update board card
  • No error notification is displayed

Filling in a card's record

Opening a card gives the whole of it: the description and the Definition-of-Done checklist on the left with the discussion under them, and on the right the fields that say who has it and when it is due. There is no Save button anywhere on it — every field commits on its own, the moment you leave it, and each one lands in the repository as its own commit.

The checklist is ordinary Markdown, the same - [ ] GitHub renders, so what the card counts is what a reader of the raw text would count. Its progress follows the card back onto the board, which is where the number is actually read.

Filling in a card's record

Captured from the running app by this scenario.

Do this

  1. Open the board
  2. Create a board named Sprint 12 with the card prefix GM
  3. Add a card titled Rework the exporter to the To do column
  4. Open the card Rework the exporter
  5. Add the checklist item Agree the output format
  6. Add the checklist item Migrate the templates
  7. Tick the checklist item Agree the output format
  8. Assign the card to Marie Dubois
  9. Set the card priority to High
  10. Write the comment Waiting on the design review before the second half

You should see

  • The card record's checklist reads 1/2
  • The card record shows the comment Waiting on the design review before the second half
  • The board history records git-manager: comment on board card
  • No error notification is displayed

Closing a sprint and carrying the unfinished work over

Closing a sprint freezes what it achieved and, unless you say otherwise, opens its successor and moves the unfinished cards into it — they keep their identifiers, their checklists and their discussion. A card in a column flagged as "done" counts as finished and stays behind.

The closed sprint does not disappear: it becomes read-only, keeps its report, and is reachable again by ticking "Show closed sprints" in the board picker.

Closing a sprint and carrying the unfinished work over

Captured from the running app by this scenario.

Do this

  1. Open the board
  2. Create a board named Sprint 12 with the card prefix GM
  3. Add a card titled Ship the installer to the To do column
  4. Add a card titled Update the changelog to the To do column
  5. Set the status of the card Update the changelog to Done
  6. Close the sprint, carrying the unfinished cards into Sprint 13
  7. Show closed sprints
  8. Select the Sprint 12 sprint

You should see

  • The board Sprint 13 is shown
  • The card Ship the installer is shown on the board
  • The repository stores 2 boards in its own git history
  • The sprint is read-only
  • The card Update the changelog is shown on the board
  • The sprint report is shown

An archived card leaves the board but stays findable

Archiving takes a card off the board without losing a word of it — the reversible neighbour of deleting, for a card that is done being tracked but not done being real. It comes back into whichever column it left, exactly as it was, the moment it is restored.

The global search (⌘F) reaches every card of every board in one field, archived cards included — found by its identifier, title, assignee or board name, so "where is GM-7" never has to start by naming which board GM-7 is on. Picking a result switches to its board and opens it there.

An archived card leaves the board but stays findable

Captured from the running app by this scenario.

Do this

  1. Open the board
  2. Create a board named Sprint 12 with the card prefix GM
  3. Add a card titled Rework the onboarding to the To do column
  4. Archive the card Rework the onboarding
  5. Search every board for onboarding
  6. Close the ticket search
  7. Restore the card Rework the onboarding from the archive

You should see

  • The To do column holds 0 cards
  • The ticket Rework the onboarding is offered by the search
  • The To do column holds 1 card
  • No error notification is displayed

Deleting a board while keeping its cards

Deleting a board is not locally undoable, and its tickets can't be left without one — so the dialog asks which happens to them. Archiving them instead of deleting keeps the board itself around too, tombstoned rather than removed: it drops out of the list but stays reachable, read only, once "Show deleted" is switched on.

Deleting a board while keeping its cards

Captured from the running app by this scenario.

Do this

  1. Open the board
  2. Create a board named Sprint 1 with the card prefix GM
  3. Add a card titled Ship the release to the To do column
  4. Delete the board
  5. Keep the board's cards instead of deleting them
  6. Confirm deleting the board
  7. Create a board named Backlog with the card prefix BL
  8. Show deleted boards
  9. Select the Sprint 1 board

You should see

  • The board shows it was deleted
  • The board Sprint 1 is no longer listed
  • The board shows it was deleted
  • The To do column holds 0 cards
  • The archived card Ship the release is listed

This page is generated from apps/e2e/features/board.feature, the end-to-end test that drives the feature it describes.

MIT licensed · Screenshots exported from the real app by the end-to-end suite.