Skip to main content

prview

A beautiful TUI and web dashboard for GitHub PRs and CI status.

Python 3.9+ License: MIT

Features

  • Your Open PRs - View all your open PRs across multiple repos/orgs
  • Needs Your Review - PRs where your review has been requested
  • CI Status - At-a-glance CI status (pass/fail/running)
  • Review Status - Approval status (approved/changes requested/required)
  • Diff Stats - Lines added/removed per PR
  • TUI Mode - Beautiful terminal UI with keyboard navigation
  • Web UI - VS Code-inspired dark theme dashboard with real-time updates
  • Configurable - YAML config for orgs, repos, includes/excludes

Installation

From PyPI

pip install prview

# With keyboard navigation support (TUI)
pip install prview[keyboard]

# With web UI support
pip install prview[web]

# Everything
pip install prview[all]

From source

git clone https://github.com/aminghadersohi/prview.git
cd prview
pip install -e ".[all]"

Requirements

  • Python 3.9+
  • gh CLI installed and authenticated (gh auth login)

Usage

TUI Mode

prview                     # Run once and display
prview --watch             # Watch mode with auto-refresh & keyboard navigation
prview --init              # Create default config file
prview --help              # Show all options

Web UI Mode

prview serve               # Start web server at http://localhost:8420
prview serve --port 3000   # Custom port
prview serve --host 0.0.0.0  # Listen on all interfaces

CLI Options

# Override config via CLI
prview --repos owner/repo1 owner/repo2
prview --orgs my-org another-org
prview --interval 30       # Refresh every 30 seconds

Keyboard Shortcuts (TUI Watch Mode)

Key Action
↑/↓ Navigate PRs
Tab Switch between sections
Enter Open selected PR in browser
r Refresh data
q Quit

Configuration

Config file location: ~/.config/prview/config.yaml

# Organizations to include
include_orgs:
  - my-org
  - another-org

# Specific repos to include
include_repos:
  - owner/specific-repo

# Organizations to exclude
exclude_orgs:
  - archived-org

# Specific repos to exclude
exclude_repos:
  - owner/archived-repo

# Auto-refresh interval in seconds
refresh_interval: 60

# Show draft PRs
show_drafts: true

# Max PRs to show per repository
max_prs_per_repo: 10

Status Icons

CI Status

  • ✓ (green) - All checks passed
  • ✗ (red) - Checks failed
  • ◐ (yellow) - Checks running/pending
  • ○ (dim) - No checks

Review Status

  • ✓ (green) - Approved
  • ✗ (red) - Changes requested
  • ● (yellow) - Review required
  • ○ (dim) - Pending/No reviews

Architecture

  • TUI: Python + Rich for beautiful terminal rendering
  • Web UI: FastAPI + Jinja2 + HTMX for reactive server-rendered UI
  • Data: SQLite for caching, Server-Sent Events for real-time updates
  • GitHub: Uses gh CLI for authentication and API access

License

MIT License - see LICENSE for details.

Contributing

Contributions welcome! Please feel free to submit a Pull Request.

Metadata

Release files for prview 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for prview 0.2.2
File Size Uploaded Provenance
prview-0.2.2.tar.gz 874.7 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for prview 0.2.2
File Interpreter ABI Platform
prview-0.2.2-py3-none-any.whl Python 3 none any Details

Total release size: 900.6 kB

Release files / prview-0.2.2.tar.gz

Download URL prview-0.2.2.tar.gz
Size 874.7 kB
Tags Source
SHA-256 checksum
How to use checksums
5b23deec386e49135e29da36fc023281df8691defd8b8e1922497210c47433b6
BLAKE2b-256 checksum
How to use checksums
d969fb742c00d1ad5f930b636ed1e89670bb01ad2f8cc16deb270ac2d731d359
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release files / prview-0.2.2-py3-none-any.whl

Download URL prview-0.2.2-py3-none-any.whl
Size 25.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
572ffed2b2335d20fa987cf34e0e26f48ef091d8da1a49f0b41a790880609c05
BLAKE2b-256 checksum
How to use checksums
f3d0a7f886dcb9d6c5a7e9d99005350567a2bc585d1abfc4b682f33a3a4043a0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Security for prview 0.2.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page