gh-review 0.2.0

Terminal UI for reviewing GitHub pull requests
gh-review-0.2.0 is not a library.

gh-review

Terminal UI for reviewing GitHub pull requests. View diffs (unified and side-by-side), comment on lines, suggest changes, resolve threads, expand context, and approve — all without leaving the terminal.

gh-review screenshot

Install

cargo install gh-review

Requires the GitHub CLI (gh) to be installed and authenticated.

Usage

gh-review <OWNER/REPO> <PR_NUMBER>
gh-review <URL>
gh-review <PR_NUMBER>
gh-review octocat/hello-world 42

Accepts GitHub and Graphite PR URLs. When given just a PR number, the repository is inferred from git remote get-url origin.

With gh-dash

gh-dash is a terminal dashboard for GitHub PRs, issues, and notifications. gh-review is designed to complement it — use gh-dash to browse and triage, press a key to jump into gh-review for deep code review.

Setup

  1. Install gh-dash if you haven't already:

    gh extension install dlvhdr/gh-dash
    
  2. Add a custom keybinding to ~/.config/gh-dash/config.yml:

    keybindings:
      prs:
        - key: R
          name: review (gh-review)
          command: >
            gh-review {{.RepoName}} {{.PrNumber}}
    

    {{.RepoName}} and {{.PrNumber}} are template variables that gh-dash fills in with the currently selected PR.

  3. Run gh-dash:

    gh dash
    
  4. Navigate to a PR and press R. gh-dash suspends and gh-review takes over the terminal. When you quit gh-review (q), you're back in gh-dash.

Workflow

gh-dash (browse PRs)
  │
  ├─ R  → gh-review (diff, comment, approve)
  ├─ D  → delta side-by-side diff (quick read-only view)
  ├─ d  → unified diff in pager
  └─ V  → approve directly

Keybindings

Navigation

Key Action
j / k / / Scroll line (works in all panels)
gg / G Go to first / last line
Ctrl+D / Ctrl+U Half page down / up
Ctrl+F / Ctrl+B Full page down / up
H / M / L Cursor to screen top / middle / bottom
] / } Next hunk (diff) / next section (description)
[ / { Previous hunk (diff) / previous section (description)
) / ( Next / previous change
gc / gC Next / previous comment thread
n / N Next / previous file (or search match when search active)
zo / zc Expand / collapse file at cursor
Enter Toggle comment expand or file fold
zz / zt / zb Center / top / bottom cursor in viewport

Panels

Key Action
h / Focus previous panel
l / Focus next panel
Tab Cycle panel focus
Esc Close description panel (when focused)

Panels: File ListDiffDescription (when open).

Search

Key Action
/ Search forward (regex, smart-case)
? Search backward (in diff view)
n / N Next / previous match (respects search direction)
Esc Cancel search and restore cursor
Enter Confirm search

In the file picker, / opens a fuzzy file filter instead.

Diff

Key Action
t Toggle unified / side-by-side view
zo / zc Expand / collapse file fold
e Suggest change on current line
E Expand context around cursor (+10 lines)

Review

Key Action
c Comment on current line (or edit pending / reply)
v Visual select mode for multi-line comments
x Discard pending comment at cursor
Esc Cancel comment / cancel visual selection
a Approve (quick confirm)
r Resolve / unresolve comment thread
s Submit review as comment-only (quick confirm)
u Unapprove — dismiss your own approval
y Accept suggestion (apply as commit)

Comments are batched into a pending review and submitted together when you press a or s. These open a quick confirm popup (Enter / Esc). For request changes or review submissions with a body message, use the : command mode (see below).

Other

Key Action
: Open command prompt
o Open PR in browser (all panels)
! Show help overlay
q Quit

Architecture

See docs/architecture.md for the source tree layout and design overview.

Roadmap

See docs/ROADMAP.md for planned features including stacked PR support, syntax highlighting, configuration, and more.

Contributing

Contributions are welcome! Please read CONTRIBUTING.md for guidelines on how to get started, submit pull requests, and report issues.

This project follows the Contributor Covenant Code of Conduct.

License

MIT