Kanban (TUI)
pinto kanban opens an interactive board in the terminal. It reads and writes
the same .pinto/ board as the non-interactive commands, so a move made in the
TUI is immediately visible to pinto list and pinto board, and vice versa.
pinto kanban
Start with a focused view
Startup flags narrow what the board shows without changing stored data:
pinto kanban --column in-progress review # show only these columns
pinto kanban --maximize --column review # open maximized on one column
pinto kanban --search parser # filter cards by substring
pinto kanban --search '^T-1\d' --regex # filter cards by regular expression
Explicit --column values override the [tui] hidden_columns setting for that
run. --regex requires --search.
Navigate and edit
The board separates selecting a card from moving it: lowercase keys move the cursor, uppercase (Shift) keys move the selected item. Defaults are:
| Action | Keys |
|---|---|
| Select column / row | h j k l or arrow keys |
| Move item across columns | H / L (Shift+Left / Shift+Right) |
| Reorder item within a column | K / J (Shift+Up / Shift+Down) |
| Expand or collapse a parent | Space / Enter |
| Add a PBI | a |
| Edit the selected PBI | e |
| Add / remove a dependency | d / D |
| Set or clear the parent | p |
| Open the details popup | v |
| Substring / regex search | / / Ctrl+? |
| Clear an active filter | Esc |
| Toggle a maximized column | m |
| Reload the board | r |
| Help window | ? |
| Quit | q or Esc |
| Quit into the shell | Q |
Press ? inside the board to open the built-in help window, which always lists
the bindings that are actually in effect.
Cards follow the same hierarchical display order as
pinto list and pinto board: top-level cards by rank, each parent followed by
its subtree, with siblings ordered by rank. Expanding a parent reveals its
children directly beneath it, so a child may sit ahead of a standalone card that
outranks it — that is the point, since the parent’s priority carries its whole
subtree. The completion column leads with the most recently finished card
(done_at descending).
Customize behavior
The [tui] section of .pinto/config.toml adjusts the interactive board:
[tui]
confirm_quit = true # ask before leaving the board
hidden_columns = ["done"] # hide columns unless --column overrides
Unknown column names in hidden_columns are rejected at load time, so a typo
surfaces immediately rather than silently hiding nothing.
Rebind keys
[tui.key_bindings] overrides the keys for individual actions. Each action
takes an array of one or more key expressions, and an action may keep several
bindings at once:
[tui.key_bindings]
quit = ["q", "Esc"] # keep the defaults
add = ["a", "n"] # add a second key for "add"
move_left = ["Shift+Left"] # replace the default for this action
help = ["?", "F1"]
Only the actions you list are overridden; every other action keeps its default
keys. The action names are the snake_case forms shown by the built-in help
window and the [tui.key_bindings] documentation (quit, shell,
select_left, move_left, reorder_up, add, edit, dependency_add,
parent, maximize, search, regex_search, details, help, and so on).
A key expression is a key name, optionally prefixed with +-separated
modifiers:
- Printable keys are the character itself:
q,/,?. Use an uppercase letter (H) rather thanShift+hfor shifted letters. - Named keys:
Enter,Esc,Tab,Backspace,Delete,Insert,Home,End,PageUp,PageDown, the arrowsLeft/Right/Up/Down, and function keysF1–F12. - Modifiers:
Ctrl,Alt,Shift,Cmd,Meta, andHyper— for exampleCtrl+aorAlt+Shift+Left. Write the literal plus key asPlus.
Invalid expressions (an empty name, an unknown modifier, or Shift+ on a
printable character) are reported when the board configuration loads, so a bad
binding is caught before the TUI starts rather than failing silently.