Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

tui

Open an interactive, full-screen status view: the branch-aware tree on the left, the diff of the item under the cursor on the right, with common loom actions one keypress away.

Usage

git loom tui

No arguments or flags. The global --theme and --no-color options apply.

What It Does

Shows the same tree as git loom status with files enabled, plus a live diff pane. Navigate to the thing you see, press one key, and the underlying loom command runs with the right arguments filled in. After every action the tree reloads.

┌ Status ──────────────────────┐┌ Diff ─────────────────────────┐
│ ╭─ z0 [local changes]        ││ diff --git a/src/main.rs ...  │
│ │   a1 M  src/main.rs        ││ @@ -1,3 +1,4 @@               │
│ │╭─ b0 [feature-a] ✓         ││ +new line                     │
│ │● d4f2 Add parser (2 files) ││ ...                           │
│ ├╯                           ││                               │
│ ●  9999999 (upstream) ...    ││                               │
└──────────────────────────────┘└───────────────────────────────┘
 Navigate: ↑/↓ | Fold/unfold: ←/→ | Select: space | Commit: c | ...

Short IDs are displayed like in git loom status, so the tree doubles as a cheat-sheet for manual commands.

KeyEffect
/k, /jMove the cursor (tree focused) or scroll the diff (diff focused)
/l / /hUnfold / fold the current row; on a file row jumps to its parent
EnterToggle fold (or confirm a fold target — see below)
TabSwitch focus between tree and diff pane
Ctrl-← / Ctrl-→Narrow / widen the left pane (2% per press, clamped to 10–90%)
PgUp/PgDnScroll the diff by a page
Mouse click / wheelFocus, move, scroll
R / F5Reload the tree from the repo
EscCancel fold mode → clear selection → quit (first that applies)
q / Ctrl-CQuit

Commits are collapsed by default; unfolding reveals one row per changed file. Local changes start expanded. Expansion state survives reloads.

Selection

Space toggles selection of the current row (marked ) and advances the cursor. Actions use the selection when one exists, otherwise the cursor row. Selection is cleared on reload.

Actions

Every action suspends the TUI, runs the regular loom command — prompts and editors work exactly as on the command line — prints its output, waits for Enter, then reloads the tree.

KeyCommandArguments
ccommitSelected working files; nothing relevant selected → the index as-is. Branch and message are prompted as usual.
ffoldTwo-step: f captures the selection (or cursor row) as sources; move the cursor to the target and press Enter (Esc cancels). While picking a target, other action keys are inactive.
bbranch newCursor commit or branch as the -t target when on one; name is prompted.
ddropCursor commit, branch, or working file; confirmation prompt as usual.
rrewordCursor commit (opens editor) or branch (prompts rename).

Diff Pane

RowDiff shown
[local changes]Staged + unstaged changes (git diff HEAD)
Working fileThat file’s diff; untracked files show their content as added lines
Branch nameEverything the branch owns
Commitgit show with stats and patch
Commit fileThat file’s change within the commit

Conflicts

If an action pauses on conflicts, the TUI exits with the standard guidance — every other command is blocked while an operation is paused, so the TUI cannot stay open:

# ! A `loom fold` is paused due to conflicts.
#   Resolve them, then run `loom continue` to resume,
#   or `loom abort` to cancel.

See continue and abort for details.

Prerequisites

  • Must be on an integration branch with upstream tracking configured (same requirement as status)
  • An interactive terminal — the TUI is unavailable in agent mode