Skip to content

Ask the docs

Ask anything about Tack.

Answers come from these docs, with links to the pages they’re from.

Answers are written by AI from these docs and can be wrong: check the pages they link to.

Built-in actions

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).

  • The first line is the title, and the rest is the body. A leading heading mark, bullet or checkbox is dropped from the title. Titles over 256 characters are cut at a word, and the whole line kept at the top of the body.
  • Repository: the chosen one shows with how many of its cards are on the board; Change (or typing) lists the board’s repositories, then ones you’ve used lately. Type owner/repo, or paste a link to a repository or anything in it, for another.
  • The titles are listed, and can be reworded in place: what you type goes back onto the sticky. + description shows an issue’s body, and Show all lists every one.
  • Start with: optionally pick Labels, a Milestone and Assignees to create the issues with, so they need no second push.
  • Stickies that are already staged, or empty, are left out: “1 already staged, 1 empty sticky left out.”

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.

  • Title: the section’s title, to start with.
  • Repository: the one most of the cards are in.
  • Sub-issues: everything in the section, however deeply nested, top to bottom and left to right. Stickies become new issues too. Pull requests are left out: “only issues can be sub-issues”.

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:

  • Add to #4 Resizing (the default, when the section or every card that has a parent shares one): no new parent issue. What’s new (stickies, and cards with no parent) is staged under #4. What’s already under it is left alone.
  • Make a new parent and move them: a new parent issue, with each card taken off the parent it has. Each row says “moves from #4”, and so do the changes: “Move #5 from #4 to “Resizing””.
  • Make a new parent without them: a new parent issue for the rest. Cards with a parent stay where they are.

Each sub-issue in the list says what will happen to it.

Select one or more cards.

  • Labels (⌥ L) and Assign (⌥ P) show a checklist. A box is ticked if every selected item has it, dashed if some do. Only what you toggle changes: “+2 −1 on 3 items”. With cards from several repositories, only the labels (or people) every one of them has are offered.
  • Milestone (⌥ M) picks one of the repository’s open milestones, starting on the items’ current one (ticked), or No milestone, last in the list.

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:

  • Close as completed: done, closed, fixed, resolved
  • Close as not planned: won’t fix, can’t reproduce, stale
  • Close as duplicate
  • Reopen

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:

  • Drop to match: drop cards on a list, and Tack stages the labels, assignees, milestone and state that would make them match its search.
  • Stale finder: each row can be closed as not planned, labelled, or asked about with a comment. See Stale finder.

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.