Skip to content

zunhdev/azure-pr-viewer

Repository files navigation

Azure PR Viewer 🔍

A fast terminal dashboard for your Azure DevOps pull requests. It signs in through the Azure CLI — no PAT to manage — and keeps three lists in front of you, auto-refreshing as you work:

  • 📤 Created by me — the PRs you opened and are shepherding to merge.
  • 🔴 Required from me — PRs where you're a required reviewer (they block the merge until you weigh in).
  • Optional for me — PRs where you're only an optional reviewer.

Each row shows status, a resolved/started comment-thread ratio, age, and either an approvals tally (your PRs) or your current vote (reviews) — with one-key shortcuts to open a PR or copy its link.

  Azure PR Viewer                                          next ↻ 42s ▰▰▰▰▰▰▱▱
 Alex Rivera @ contoso · updated 6s ago
 ▸ 3 awaiting your review · 1 of yours need attention

 Created by me (1)
 ╭────────────────────────────────────────────────────────────────────────────────────────────╮
 │   Status          PR      Title                       Approvals  Repo        Comments  Age │
 │ ❯ needs approval  !20992  Fix token refresh race      1/2        core-api    6/7       3d  │
 ╰────────────────────────────────────────────────────────────────────────────────────────────╯
 Required from me (2)
 ╭─────────────────────────────────────────────────────────────────────────────────╮
 │   My vote   PR      Title              Author        Repo        Comments  Age  │
 │   waiting   !20910  Bump dependencies  Priya Sharma  platform    9/12      1d   │
 │   rejected  !20961  Investigate flaky  Tomás Méndez  web-portal  ?         3h   │
 ╰─────────────────────────────────────────────────────────────────────────────────╯
 Optional for me (1)
 ╭─────────────────────────────────────────────────────────────────────────────────╮
 │   My vote   PR      Title              Author        Repo        Comments  Age  │
 │   approved  !20955  Tidy logging       Jia Chen      web-portal  4/4       6h   │
 ╰─────────────────────────────────────────────────────────────────────────────────╯
 tab switch list • enter/o open in browser • y copy URL • r refresh • ? help • q quit

✨ Highlights

  • 🔑 No tokens to manage — rides your existing az login session.
  • 🎯 Three focused lists split by your reviewer role, deduplicated.
  • 💬 Comment insight — a resolved/started thread ratio per PR, colored green when clear and red while threads are open.
  • Merge-readiness at a glanceneeds approval, unresolved, checks failing, or ready to merge for your own PRs.
  • 🔔 Desktop notifications when a review lands on your plate (delta-based, never spammy). Disable with --notify=false.
  • ♻️ Live auto-refresh with a countdown, plus r to refresh now.

See docs/features.md for the full list.

📦 Install

macOS — Homebrew (recommended, no Gatekeeper warning):

brew install zunhdev/tap/azpr

Windows — Scoop (recommended, no SmartScreen warning):

scoop bucket add zunhdev https://github.com/zunhdev/scoop-bucket
scoop install azpr

With Go (1.26+):

go install github.com/zunhdev/azure-pr-viewer/cmd/azpr@latest

Prefer a manual download or building from source? See docs/installation.md.

🚀 Quick start

First, make sure the Azure CLI is installed and you're signed in:

az login

Then point azpr at your organization:

azpr --org contoso     # your Azure DevOps organization (required)

A few handy flags:

azpr --refresh 30s     # faster auto-refresh
azpr --notify=false    # silence desktop notifications
azpr --debug           # write debug logs to a file

The org is the only required setting — pass it with --org, the AZDO_ORG environment variable, or a config file. See docs/configuration.md for all settings.

⌨️ Keybindings

Key Action
/ k Move up
/ j Move down
tab / Switch between lists
enter / o Open the selected PR in browser
y / c Copy the selected PR's URL
r Refresh now
? Toggle full help
q / ctrl+c Quit

🛠️ Troubleshooting

  • It asks you to az login — run az login and confirm you can reach https://dev.azure.com/<org>.
  • Both lists are empty — check --org matches your organization and that you have active PRs there. Try azpr --debug and inspect the log file.
  • Counts show ? — a per-PR threads request failed transiently; the next refresh usually clears it.

📚 Documentation

📄 License

MIT © Denis Rodionov.

About

TUI with the dashboard for the Azure DevOps pull requests

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages