No description
- Rust 99.3%
- Nix 0.7%
Images in PR descriptions can now be viewed in a popup overlay: - Press 'i' on PR list to open image popup - Use left/right arrows or h/l to navigate between images - Press Esc or q to close - Images are loaded on demand with loading indicator This approach avoids the scroll/layout issues that inline images had. |
||
|---|---|---|
| .claude/commands | ||
| docs | ||
| src | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CLAUDE.md | ||
| flake.lock | ||
| flake.nix | ||
| README.md | ||
🧵 tsumugi
A keyboard-driven TUI for reviewing GitHub pull requests.
Features
- Browse and view pull requests with Vim-like keybindings
- View diffs with syntax highlighting (via external tools like delta or difftastic)
- Commit history with per-commit diffs
- Markdown rendering for PR descriptions and comments
- Multiple remotes support for repositories with forks
- PR checkout with git worktree for local code review
- Search PRs using GitHub search syntax
Installation
# Cargo
cargo install --git https://github.com/natsukium/tsumugi
# Nix Flakes
nix profile install github:natsukium/tsumugi
Usage
Run mugi inside a Git repository with a GitHub remote:
mugi
Press ? to see available key bindings.
Requirements
- Git repository with a GitHub remote configured
- GitHub authentication (via
ghCLI orGITHUB_TOKENenvironment variable)
Configuration
Configuration file is located at ~/.config/tsumugi/config.toml.
[github]
# Authentication method: "gh_cli" (default) or "pat"
# auth_method = "gh_cli"
[diff]
# External diff command for tools like difftastic that need file pairs
# Takes precedence over pager when set
# external_diff_command = "difft --color=always"
# Pager command for unified diff (used when external_diff_command is not set)
# pager = "delta --paging=never"
# Number of context lines (default: 3)
# context_lines = 3
[repositories]
# List of tracked repositories (owner/repo format)
# tracked = ["owner/repo1", "owner/repo2"]
# Per-repository settings
# [repositories."your-username/your-fork"]
# default_remote = "upstream" # Use upstream remote by default for this repo
[worktree]
# Skip confirmation popup when checking out PRs (default: false)
# skip_checkout_confirmation = false
Keybindings
Global
| Key | Action |
|---|---|
Tab / Shift+Tab |
Next / Previous panel |
1 2 3 4 |
Jump to panel |
/ |
Search PRs (GitHub search syntax) |
Esc |
Clear search results |
? |
Toggle help |
H |
Toggle status bar |
q |
Quit |
PR List
| Key | Action |
|---|---|
j / ↓ |
Move down |
k / ↑ |
Move up |
Enter / l |
Select & focus diff |
d |
Show PR details |
c |
Checkout PR to worktree |
o |
Open PR in browser |
r |
Refresh |
Diff / Details View
| Key | Action |
|---|---|
j / ↓ |
Scroll down |
k / ↑ |
Scroll up |
Ctrl+d |
Half page down |
Ctrl+u |
Half page up |
g |
Go to top |
G |
Go to bottom |
About the Name
"Tsumugi" (紡ぎ) is the noun form of the Japanese verb "tsumugu" (紡ぐ), meaning "to spin" or "to weave." It also refers to "tsumugi" (紬), a durable silk fabric woven from hand-spun threads — just like pull requests weave separate strands of code into a robust project.
🎹 The command name is mugi (pronounced: moo-gee).