tui
Browse pull requests in a responsive terminal review desk.
prctrl # Launch the default TUI
prctrl tui # Explicit equivalent
prctrl tui --interval 60
prctrl tui --interval 0
NO_COLOR=1 prctrl tui
The default refresh interval is 30 seconds. Zero disables automatic refresh. GitHub loads run in the background; navigation and quit remain available during a sync. Old results remain visible if a refresh fails. Press r to retry.
Navigation
Use Tab / Shift+Tab or 1–5 for Reviews, Mine, Crew, Stats and Live. Crew uses configured crew members, or the Reviews dataset when none are configured. Stats summarize the Reviews dataset before the local filter. Entering Live requests a fresh sync. Other views reuse snapshots for up to 60 seconds.
Use arrow keys or j / k to move through PRs, PageUp / PageDown for ten rows, and Home / End for the first or last filtered result. A details panel shows the selected PR when space permits. Compact terminals replace the sidebar with numbered tabs. The minimum view is 30 columns by 10 rows. Search and notices can require more height; a resize hint suspends hidden actions. Esc backs out of editing or dismisses notices, and Ctrl+C still quits.
Filtering and actions
Press / and type a title, author, repository or PR number. Shortcut letters, including q and r, are ordinary text during editing. Enter applies the filter; Esc restores the previous query. Outside editing, Esc or Ctrl+F clears the filter.
Press o to request browser launch, or Enter to open the action menu. The TUI offers only implemented actions; approval, review and diff commands remain available in the CLI.
Press r or Ctrl+R to request fresh data. Press ? for scrollable help or e for error details. Use arrows or j/k, PageUp/PageDown and Home/End to scroll these panels. Esc closes panels and dismisses notices. q or Ctrl+C exits, with terminal settings restored.
Accessibility
Selection has a > marker. DRAFT, OPEN and OVERDUE text labels complement the colors; OVERDUE means more than seven days old. Set NO_COLOR=1 to use terminal defaults and monochrome selection. Unicode titles remain supported.
Readiness evidence (2.3.0)
The selected PR shows READY, BLOCKED or UNKNOWN, CI, review and merge state, blockers,
a short head SHA and UTC time. Press d for full commit evidence and individual checks.
Inside the panel, j/k or arrows scroll, PageUp/PageDown move ten lines, Home returns
to the top, r fetches fresh evidence, and d/Esc closes. q/Ctrl+C still quits.
Only the selected PR is fetched, after a 250 ms navigation debounce. Loads run in background tasks; obsolete generations cannot update the current observation. The commit-keyed cache holds at most 64 observations for 60 seconds. Expired evidence is hidden, and manual refresh or a successful active-view sync invalidates it. No new GitHub mutations are introduced. See ready for the shared rules, rate limits, conservative UNKNOWN states and snapshot limitations.
Edit configuration
Press c to open configuration. These are file values; fields marked [env]
are overridden by environment variables. Select a field with Up/Down, j/k,
Tab or Shift+Tab, then Enter to edit. Editing shows a terminal cursor and an
Editing title. Up/Down do not switch fields while editing.
| Key while editing | Behavior |
|---|---|
| Left / Right | Move one displayed character (grapheme) |
| Home / End | Move to the beginning / end |
| Backspace / Delete | Remove the previous / next grapheme |
| Ctrl+U | Clear the field |
| Enter | Accept the field without saving |
| Tab / Shift+Tab | Accept and select the next / previous field |
| Esc | Restore the value from before editing this field |
| Ctrl+S | Validate and save, including the active edit |
Long values scroll horizontally with the cursor. Tokens and API keys stay masked; during editing, one mask character represents each grapheme so cursor movement is visible. The filter uses the same cursor, deletion, clear and paste behavior. Pasting inserts at the cursor. Multiline text and control characters are rejected with feedback rather than interpreted as shortcuts.
The panel marks unsaved changes. Esc outside editing offers s Save and close,
d Discard and close, or Esc Continue editing when changes are pending.
Ctrl+C exits immediately, including during editing, without saving.
Invalid fields receive focus and an explanation; failed saves preserve edits.
Lists use commas. Maximum PR age accepts a non-negative whole number; blank
restores the default. Existing token and username values cannot be saved as empty.
Repositories and crew apply immediately after saving, subject to environment overrides. Other fields require restarting; the reminder remains when settings are reopened. For maximum PR age, an existing numeric file value takes precedence over its environment fallback, matching the configuration loader. Successful saves display normalized values. Saving preserves unknown settings but rewrites TOML formatting and removes comments. Concurrent changes on disk are rejected; discard or preserve your pending changes elsewhere, then reopen settings to load the current file.