Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A TUI for devs who review PRs faster than GitHub can load

License

NotificationsYou must be signed in to change notification settings

sassman/gh-pr-lander-rs

Repository files navigation

A TUI for devs who review PRs faster than GitHub can load.

Demo

Features

Multi-repo tabs

Stop juggling browser tabs. All your repositories in one view, switch withTab.

Vim navigation

j/k,gg/G, and all the keys you expect. Your muscle memory just works.

Bulk PR actions

Dependabot opened 15 PRs? Select all, approve, merge. Done in seconds, not minutes.

Diff viewer

Full PR review in your terminal. Syntax highlighting, inline comments, submit reviews—no browser needed.

Build log viewer

CI failed? Jump straight to errors withn. Navigate through workflows → jobs → steps in a tree.

Command palette

Forgot a keybinding?Ctrl+P and fuzzy search. Every action is discoverable.

CI status at a glance

Green check, red X, yellow spinner. Know instantly which PRs are ready to merge.

Planned

  • PR filtering by status/type
  • Merge queue — Land PRs one-by-one with CI checks between each merge. Queue up approved PRs, and the tool merges them sequentially: merge → wait for CI → next PR. Ensures main stays green.
  • Session persistence
  • Live status updates

Installation

cargo install --git https://github.com/sassman/gh-pr-lander-rs.git gh-pr-lander

Requires theGitHub CLI (gh) to be installed and authenticated.

✨ To authenticate with your GitHub Enterprise Server run:gh auth login --web --hostname <your-gh-enterprise.adress>

Quick Start

  1. Launch:./target/release/gh-pr-lander
  2. Add a repository:r → a
  3. Navigate PRs:j/k or arrow keys
  4. Select PRs:Space
  5. Merge selected:p → m
  6. View diff:d → d
  7. View build logs:p → l
  8. Open command palette:Ctrl+P

Key Bindings

Navigation

KeyAction
j /Next item
k /Previous item
ggGo to top
GGo to bottom
TabNext repository
Shift+TabPrevious repository

PR Actions

KeyAction
SpaceToggle selection
Ctrl+ASelect all
uDeselect all
EnterOpen in browser
p → mMerge
p → aApprove
p → cComment
p → dRequest changes
p → xClose
p → rRebase / update branch
p → lView build logs
p → iOpen in IDE
d → dView diff
Ctrl+RRefresh PRs

Views & Panels

KeyAction
?Toggle keyboard help
Ctrl+PCommand palette
`Toggle debug console
q /EscClose / go back
Ctrl+CQuit

Repository

KeyAction
r → aAdd repository
r → oOpen repo in browser

Build Log Viewer

KeyAction
nJump to next error
NJump to previous error
tToggle timestamps
eExpand all
ECollapse all

Diff Viewer

KeyAction
j/kNavigate lines
nNext hunk
NPrevious hunk
Tab /SpaceSwitch pane (file tree ↔ diff)
h /lFocus file tree / diff content
cAdd comment on current line
d → rSubmit review (approve/request changes/comment)

Full code review in terminal — Add inline comments on any line withc, then submit your review withd → r to approve, request changes, or leave a comment. Complete PR reviews without opening a browser.

Screenshots

Configuration

Repositories

Tracked repositories are stored in.gh-pr-lander.repos.json:

[  {"org":"your-org","repo":"your-repo","branch":"main" },  {"org":"another-org","repo":"another-repo","branch":"develop" }]

App Settings

Create~/.gh-pr-lander.toml (or.gh-pr-lander.toml in the current directory):

# IDE to open PRs in (default: "code")ide_command ="zed"# or "code", "cursor", "vim"# Directory for cloning PRs (default: system temp dir)temp_dir ="/tmp/gh-pr-lander"# Default messages for PR actionsapproval_message ="LGTM! :rocket:"comment_message =""request_changes_message ="Please address the following:"close_message ="Closing this PR."

Issue Tracker Integration

Configure external issue trackers (Jira, Linear, GitHub Issues, etc.) to open related issues directly from the command palette. The tool extracts issue references from PR titles and descriptions using regex patterns.

# GitHub Issues - uses repo context variables[[issue_tracker]]name ="GitHub"pattern ="#(\\d+)"url ="https://$HOST/$ORG/$REPO/issues/$ISSUE_NO"# Jira - with repo filter (only for specific orgs)[[issue_tracker]]name ="Jira"pattern ="PROJ-\\d+"url ="https://jira.example.com/browse/$ISSUE_NO"repos = ["my-org/*"]# Linear[[issue_tracker]]name ="Linear"pattern ="LIN-\\d+"url ="https://linear.app/team/issue/$ISSUE_NO"

Configuration options:

  • name: Display name in command palette
  • pattern: Regex to match issue references. Use capture groups like#(\\d+) to extract just the number for the URL while showing#42 in the palette
  • url: URL template with placeholders:
    • $ISSUE_NO - matched issue (or first capture group if present)
    • $ORG - repository owner
    • $REPO - repository name
    • $HOST - GitHub host (supports GHE)
  • repos (optional): Glob patterns to restrict tracker to specific repos (e.g.,["my-org/*", "other/specific-repo"])

When viewing a PR, open the command palette (Ctrl+P) to see "Open GitHub: #42" or "Open Jira: PROJ-123" if the PR references an issue.

Architecture

Clean Redux-inspired architecture with middleware, reducers, and unidirectional data flow. SeeARCHITECTURE.md for details.

License

MIT

Contributing

Contributions welcome! Please open an issue first to discuss changes.

About

A TUI for devs who review PRs faster than GitHub can load

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Contributors3

  •  
  •  
  •  

Languages


[8]ページ先頭

©2009-2025 Movatter.jp