gh-dash: A Terminal Dashboard for PRs (CI Notes)
gh-dash is a gh CLI extension that renders a configurable terminal dashboard of pull requests and issues; it is interactive and not meant for headless jobs.
gh-dash gives a live TUI over your PRs and issues driven by search filters in a YAML config. It is a developer productivity tool, not a scripting command, and will hang a non-interactive runner.
What it does
Installed with gh extension install dlvhdr/gh-dash and launched with gh dash, it reads sections defined by GitHub search queries from ~/.config/gh-dash/config.yml and displays them in an interactive full-screen dashboard.
Common usage
# install the extension and launch the dashboard
gh extension install dlvhdr/gh-dash
gh dash
# point at a specific config
gh dash --config ./gh-dash.ymlOptions
| Command / Flag | What it does |
|---|---|
| gh extension install dlvhdr/gh-dash | Install the extension |
| gh dash | Launch the interactive dashboard |
| --config <file> | Use a specific config file |
| config.yml prSections | Sections defined by GitHub search queries |
In CI
Do not run gh dash in a pipeline: it is a full-screen TUI that expects a terminal and will block a headless job. For scripted PR queries use gh pr list --search or gh search prs instead, which print machine-readable output and exit.
Common errors in CI
"open /dev/tty: no such device or address" or a job that hangs then times out means gh dash was launched without a TTY. "gh: command not found" means the gh CLI is not installed. "extension not found" means gh extension install did not run. Authentication uses gh auth, so a "gh auth login required" error means GH_TOKEN is unset.
Using this in CI
CI checkouts are shallow and detached by default, which changes the answer this command gives you. Commands that read history, branch names, or tags need the checkout configured for it.
- uses: actions/checkout@v4
with:
fetch-depth: 0 # history, tags, and git describe all need this
- run: |
git rev-parse --is-shallow-repository # expect false
git rev-parse --abbrev-ref HEAD # prints HEAD when detached