Skip to content
GitHub stars

Terminal UI (TUI)

The interactive terminal UI (roborev tui) is the primary interface for working with roborev reviews. The review queue acts as a ledger: every commit review is recorded, and each entry stays open until you explicitly address and close it. This creates an accountability loop that ensures every line of agent-generated code is reviewed and every finding is resolved.

Terminal window
roborev tui # Open TUI
roborev tui --repo # Pre-filter to current repo
roborev tui --repo --branch # Pre-filter to current repo + branch
roborev tui --repo=/path/to/repo # Pre-filter to specific repo
roborev tui --branch=feature-x # Pre-filter to specific branch
FlagDescription
--repo [path]Lock filter to a repo. Without a value, resolves to the current repo.
--branch [name]Lock filter to a branch. Without a value, resolves to the current branch.

When set via flags, the filter is locked and cannot be changed in the TUI. This is useful for side-by-side working when you want to focus on a specific repo or branch.

Queue View

roborev TUI queue view
KeyAction
Up/k, Down/jNavigate jobs
PgUp, PgDnPage through list
EnterView review
lView job log
pView prompt
mView commit message
aToggle closed
cAdd comment
yCopy review to clipboard
xCancel running/queued job
rRerun completed/failed/canceled job
FLaunch fix job (requires advanced.enable_tasks)
TSwitch to Tasks view (requires advanced.enable_tasks)
oColumn options (reorder, toggle visibility)
fOpen filter (repo/branch tree)
bOpen filter with branches expanded
hToggle hide closed/failed/canceled
DToggle distraction-free mode
gJump to top of queue
?Show all commands
EscClear filters (one layer at a time)
Ctrl-DQuit
qQuit

Log View

Press l from the queue view, review view, or prompt view to open the log viewer. For running jobs, the view streams live output as it arrives. Logs are persisted to disk, so they remain available after the job completes and across daemon restarts.

KeyAction
Up/k, Down/jScroll output
PgUp, PgDnPage through output
HomeJump to top
EndJump to bottom (enables follow mode)
gToggle between top and bottom
Left, RightPrevious/next job log
xCancel running job
?Show all commands
Esc, qBack to previous view

The log view features:

  • Follow mode: When a job is still running, the view polls for new output and auto-scrolls to the bottom. Scrolling up disables follow mode; pressing End or g re-enables it.
  • Incremental fetching: Only new bytes since the last fetch are downloaded, keeping the view responsive for long-running jobs.
  • Formatted output: NDJSON agent output is rendered as compact progress lines showing tool calls (file reads, edits, bash commands) with a gutter prefix for visual grouping.

Logs are stored in ~/.roborev/logs/jobs/ and can also be viewed from the CLI with roborev log <job-id>. Use roborev log clean to remove old log files.

Filtering

Press f to open the unified filter view, which shows repos as a tree with expandable branch children. Press b to open the filter with branches already expanded for the most relevant repo (active filter > current directory > first repo).

KeyAction
Up/k, Down/jNavigate tree
RightExpand repo to show branches
LeftCollapse repo (works during search too)
EnterApply selected filter
Type textSearch repos and branches
BackspaceDelete search character
EscClose filter

Branches are lazy-loaded: they fetch from the daemon when you expand a repo or type a search. Searching triggers background branch loads for all repos so matches include branches you haven’t expanded yet.

The current working directory’s repo sorts to the top of the tree, and its current branch sorts to the top of that repo’s branch list.

To start the TUI with closed items already hidden, set hide_closed_by_default = true in ~/.roborev/config.toml. To auto-filter to the current repository on startup, set auto_filter_repo = true. To auto-filter to the current branch or worktree, set auto_filter_branch = true. Both auto-filters add clearable filters (press Esc), and CLI flags (--repo, --branch) take priority when set. See Configuration for details.

Pressing h toggles the hide-closed filter for the current session without changing the config.

Esc clears filters one layer at a time in the order they were applied. Press h again to toggle hide-closed off directly.

Distraction-Free Mode

Press D in the queue view to toggle distraction-free mode. This hides the status line, table header, scroll indicator, and help footer, leaving only the title and the job list. Useful for focusing on reviews when screen space is limited.

The same compact layout activates automatically when the terminal height is below 15 rows.

Column Customization

Press o in the queue or tasks view to open the column options modal. From there you can reorder columns or toggle their visibility.

Custom column order is saved to column_order (queue) and task_column_order (tasks) in ~/.roborev/config.toml. To show separator lines between columns, set column_borders = true.

The queue displays two separate status columns:

  • Status: The job’s lifecycle state: Queued (yellow), Running (blue), Done (default), Error (orange), Canceled (gray).
  • P/F: The review verdict, shown once the review completes: Pass (green) or Fail (red). This reflects whether the code review found issues, not whether the job itself errored. A job can finish successfully (Status = Done) with a Fail verdict if the reviewer flagged problems.

Mouse Interactions

Mouse support is enabled by default. Click to select rows, double-click to open a review, and use the scroll wheel to navigate lists.

To disable mouse interactions globally, set mouse_enabled = false in ~/.roborev/config.toml. You can also toggle this from within the TUI by pressing o to open the options menu and toggling “Mouse interactions”. The change takes effect immediately and is persisted to your config file.

Review View

Press Enter on a job to view its review.

roborev TUI review detail view
KeyAction
Up/k, Down/jScroll content
Left/h, Right/lPrevious/next review (loads more if at end)
PgUp, PgDnPage through content
aToggle closed
cAdd comment
yCopy review to clipboard
xCancel running/queued job
rRerun completed/failed/canceled job
FOpen inline fix panel (requires advanced.enable_tasks)
lView job log
pSwitch between review/prompt
mView commit message
?Show all commands
Esc, qBack to queue

Background Tasks

The TUI includes an optional workflow for running fix jobs, applying patches, and rebasing directly from the terminal. This is disabled by default. To enable it, set enable_tasks = true under the [advanced] section in ~/.roborev/config.toml.

See Background Tasks for the full reference.

Prompt View

Press p from the queue view or review view to see the prompt that was sent to the agent, along with the command line used to invoke it.

KeyAction
Up/k, Down/jScroll content
Left/h, Right/lPrevious/next prompt
PgUp, PgDnPage through content
pSwitch between prompt/review
?Show all commands
Esc, qBack to queue

The prompt header shows the job ID, git ref, and agent. Below the header, the command line used to run the agent is displayed (truncated to terminal width if needed).

Copying Reviews

Press y to copy the review content to your clipboard. This works from both the queue view (on completed jobs) and the review detail view.

roborev TUI copy review to clipboard

The copied content includes a metadata header for reference:

Review #42 /path/to/repo abc1234
[review content...]

A “Copied to clipboard” message confirms the action. The primary use case is pasting the review into an AI coding agent session (like Claude Code) to address the findings. Other uses include sharing with teammates, pasting into issue trackers, or including in PR descriptions.

Viewing Commit Messages

Press m from either the queue view or review detail view to see the full commit message for the selected job. This is useful for understanding the context of the changes being reviewed.

Keyboard Commands

Press ? at any time to toggle the commands overlay. This displays all available shortcuts for the current view.

roborev TUI keyboard commands

Review Screen Layout

The review detail view shows:

Review #42 myrepo (codex: claude-sonnet-4-5-20250929)
/path/to/repo abc1234 on feature-branch
Verdict: Pass [CLOSED]
  • Line 1: Review identity: job ID, repo name, agent and model (if explicitly configured)
  • Line 2: Location: repo path, git ref, branch
  • Line 3: Status: verdict and closed state

Verdicts

Reviews display a Verdict (Pass/Fail) parsed from the AI response:

  • Pass (green): Code review passed with no issues
  • Fail (red): Issues found that need attention

Rich Markdown Rendering

Reviews and prompts are rendered with full Markdown formatting directly in the terminal. Code blocks display with syntax highlighting, and headings, lists, bold, italic, and inline code all render with appropriate styling.

Code blocks are displayed without word-wrapping — long lines are truncated to the terminal width so diffs and code snippets stay readable. Prose text outside code blocks is word-wrapped naturally.

Tab Width

Tabs in code blocks are expanded to spaces for consistent display. The default width is 2 spaces. To change it, set tab_width in ~/.roborev/config.toml:

tab_width = 4 # Expand tabs to 4 spaces (default: 2, range: 1-16)

Terminal Escape Sanitization

Review content from AI agents is sanitized before display. Color and style codes (SGR) are preserved, but potentially harmful escape sequences (cursor movement, terminal title changes, screen clearing) are stripped. This prevents untrusted content from interfering with your terminal.

Adaptive Colors

The TUI automatically adapts to light and dark terminals. Colors are selected based on your terminal’s background to ensure readability in both environments.

Version Mismatch Warning

If the TUI binary version differs from the running daemon version, a persistent red banner displays at the top of the screen. This prevents confusing behavior from stale binaries (common in post-commit hooks). Restart the daemon with roborev daemon restart to resolve.

Workflow

The TUI is designed around a review, address, close cycle:

  1. Run roborev tui to open the interface
  2. Navigate to open reviews needing attention
  3. Press Enter to read the full review
  4. Address the findings: copy the review (y) into your agent, use /roborev:fix, or run roborev fix
  5. Press a to mark the review as closed
  6. Use h to hide closed items and focus on what remains

Open reviews are your backlog. When the queue is clear, every commit on your branch has been reviewed and every finding has been addressed.

See Also