Reading the docs…
Stopped.
Select something and the bar under the selection offers what you can do with it. It’s above the selection when there’s no room below, and it never leaves the screen: select a section bigger than the view and the bar stays at the top of it as you move around.
The bar is in groups, with a rule between them. Settings, such as a card’s labels, milestone and assignees, are icons that say what they are when you hover over them. Actions have a word beside their icon: Make issue, Make parent issue, Stack, Related, Close, Backlink, Summarise, Decide and so on, the main one in colour. The bar is as wide as the window lets it be; when it’s narrower than that, the actions that matter least go, whole, into the … menu at its end (AI’s first, then the rest), and the settings and main action always stay.
Every action only stages changes: nothing is written until someone pushes. Each panel says so: “Not written until pushed.”
Actions only appear for what the repository’s forge supports. Ones that can’t do anything say why instead of opening: “Tack can’t write to these yet: install the app” for repositories without the GitHub App, “Nobody can be assigned in acme/app”, “Merged pull requests can’t be closed or reopened”.
From the keyboard: Tab from a selected shape (or F6) moves to the bar, the arrow keys move along it, Enter opens an action, and Esc goes back to the shape. In every panel, ⌘ Enter stages.
| Action | Key | Select | Writes |
|---|---|---|---|
| Make issues | ⌥ I | Stickies | One issue per sticky |
| Parent issue | ⌥ ⇧ I | A section, a stack, or several stickies and cards | A parent issue, plus sub-issue links |
| Labels | ⌥ L | Cards | Labels added and removed |
| Milestone | ⌥ M | Cards | The milestone |
| Assign | ⌥ P | Cards | Assignees added and removed |
| Close or reopen | ⌥ C | Cards | State, with a reason |
| Blocked by | ⌥ B | A connector, or the two issues it joins | A blocked-by dependency |
| Comment with a link to this board | ⌥ K | Cards | A comment, optionally with a snapshot |
| Write back | A decided decision | An ADR pull request, or a Discussion |
On Windows and Linux, ⌥ is Alt. Expand related (⌥ E) is in the same bar, but stages nothing.
Select stickies, then Make issue (or Make N issues).
owner/repo, or paste a link to a repository or anything in it, for another.Stage N issues stages them. When they’re pushed, each sticky turns into its issue’s card, in the same place.
Select a section on its own (Make parent issue), or several stickies and cards, then ⌥ ⇧ I. A stack on its own works too: its name is the title, its stickies and issues the sub-issues (pull requests are left out), and it spreads out as its stickies become cards.
Stage with N sub-issues stages the parent, any new issues, and a sub-issue link for each. A dashed card hovers above the section to show where the parent will land. When it’s pushed, the parent’s card lands above the section (or above the cards, for a selection), connected to each sub-issue.
An issue can only have one parent on GitHub. Before you stage, the panel checks which cards already have one (“Checking which already have a parent…”: from the card, or by asking GitHub, as Expand related does). It also knows a section this board already made a parent issue, from the card connected down into it.
If they do, it says so, “#5 and #6 are already sub-issues of #4 Resizing.”, and offers:
Each sub-issue in the list says what will happen to it.
Select one or more cards.
Discussions take labels like issues do, though only labels the repository already has (GitHub can’t make a new one on a discussion). They have no assignees or milestones: with only discussions selected those aren’t offered, and with some, they say so.
⌥ C offers what fits the selection:
Pull requests close without a reason, and merged pull requests can’t be closed or reopened.
Discussions close as GitHub words it for them: Close as resolved, Close as outdated or Close as duplicate.
Select a connector between two issues and choose Blocked by in its toolbar (⌥ B), or select the two issues it joins and choose Blocked by in their bar. The arrow points from the blocker to what it blocks: “#377 will be marked as blocked by #412”. Swap turns it round.
Both ends need to be issues (or stickies already staged as issues: “Make “…” an issue first, then link it”). Pull requests can’t block or be blocked.
Two widgets stage changes too:
Each action is one undo step, with an Undo toast. Once staged, a change can be unstaged from the changes panel until it’s pushed.