Skip to content
noamstoPublic

About

Lean, worktree-first PR/issue TUI

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

prdash

A fast terminal dashboard for triaging GitHub pull requests, built on Bubble Tea. It lists a repo's open PRs, surfaces the one thing each needs (merge conflict, failing checks, missing reviewers, ready-to-merge), and turns the focused PR into a worktree with one key.

prdash browsing charmbracelet/bubbletea: cached instant paint, triage preview, expanded PR view

Features

  • Dense board of open PRs with CI, review, and conflict/behind glyphs, drafts demoted, grouped by author outside the "mine" view.
  • Triage preview — the focused PR's recommended next action, check rollup, requested reviewers, and a folded comment timeline (rendered markdown).
  • Fuzzy find (/) narrows either board to the rows you type.
  • Actions run against the focused PR or a multi-selected set — merge, rerun failed checks, update branch, mark ready, copy URL/branch, open in browser, and open a git worktree.
  • Stale-while-revalidate caching — the PR list, per-PR detail, and the assignable-members list are cached to disk ($XDG_STATE_HOME/prdash) and painted instantly on launch, then refreshed in the background. Each board's section halves are pre-warmed at startup, too.

Install

Run in any GitHub repo checkout (requires the gh CLI, authenticated):

nix run github:noamsto/prdash
# or
go build -o prdash . && ./prdash

Keys

Board (PR / issue list)

Key Action
↑↓ / j k move the cursor
→ / l open the expanded PR view (PR mode only)
⇥ (Tab) toggle PRs ⟷ Issues
p unfold all comments in the preview's timeline (PR only)
z maximize the preview; ctrl+j / ctrl+k scroll it
s cycle state (open · merged · closed · …)
F filter by author (PR only)
R assign reviewers (PR only)
D toggle drafts (PR only)
g group the default board by author instead of Review requested / Mine / Others (PR only)
/ fuzzy find · space select · V select cluster → category → all → none
a actions menu · ? legend · q quit · ctrl+c quits from anywhere, prompts and overlays included

Actions on the focused PR (or the whole selection):

Key Action
enter open a git worktree
W open a worktree per selected item (prompts first past four)
m merge (squash) · S merge stack up to here · r rerun checks · u update branch · M mark ready PR only
y copy # · Y copy URL · b copy branch · o open in browser

Expanded PR view (→ / l)

Key Action
⇥ / → / l next tab · shift+⇥ / ← / h previous tab
1 2 3 4 jump to Conversation / Reviews / Checks / Diff
j k / ↑↓ scroll (moves the check cursor on the Checks tab)
< > (or , .) scroll the diff horizontally
J / K next / previous PR
r / R rerun the hovered / all failed checks (Checks tab)
enter open a worktree · esc (or ← on the first tab) back to list · q quit

The copy actions (y Y b) grab the whole selection at once when multiple items are selected with space.

The footer is a compact one-line status bar. ctrl+e unfolds it into a docked panel listing every action available for the focused row (or, with a selection, the batch-capable ones); ? shows the full keymap. On a wide terminal the preview shows beside the list, with the footer under it. Scroll the preview with alt+j / alt+k, or with the mouse wheel while the pointer is over the visible preview pane.

Worktree handoff

enter and W (bulk) open git worktrees, which must run in the parent shell so the tmux window can switch. prdash supports two modes:

  • Standalone — with no orchestrator, prdash exits the alt-screen and runs the command itself (wt switch <branch>, or wt switch pr:N when the branch isn't fetched locally or the PR comes from a fork), so the worktree opens directly.
  • Orchestrated — when PRDASH_ACTION_FILE is set, prdash appends the chosen command to that file and quits; a wrapper (e.g. the lazytmux popup binding) reads and runs it. This is how the prefix + p popup integration works.

Opening URLs

o opens the PR, issue, or check in your browser. When $BROWSER is set, prdash runs $BROWSER <url> instead of open/xdg-open. Inside a lazytmux mirrored session, BROWSER=og-open routes the open to the controlling host.

About

Lean, worktree-first PR/issue TUI

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages