GitHub Pull Request Viewer
A desktop application built with Python and Tkinter that helps you manage and monitor your GitHub Pull Requests efficiently.
Features
- 👀 View all your open Pull Requests in one place
- 🔄 Snapshot review status tracking
- 🔍 Filter between your PRs under your username and your PRs in other repositories
- 🔄 Cache system for improved performance
- 🎯 Double-click to open PRs in your default browser
- ⚡ Sort PRs by title, state, or repository
- ⚙️ Configurable settings with GUI interface
Requirements
- Python 3.10 or higher
- Required Python packages:
- requests
Installation
- Clone this repository:
git clone https://github.com/svandragt/github-open-pullrequest-viewer
- Install the required dependencies:
pip install requests
Configuration
- Launch the application
- Click on the "Settings" button
- Enter your:
- GitHub username
- GitHub personal access token (requires 'repo' scope for private repositories)
The configuration will be automatically saved for future sessions.
Usage
- Start the application:
python github-viewer.py
- Use the interface to:
- View your open Pull Requests
- Click "Refresh PRs" to update the list
- Toggle between viewing your PRs or PRs in other repositories
- Double-click any PR to open it in your browser
- Sort PRs by clicking on column headers
Features in Detail
Pull Request Information
- Title of the PR
- Current review state
- Repository name
- Direct link to PR
Review States
- APPROVED
- ALL_APPROVED
- CHANGES_REQUESTED
- REVIEW_REQUIRED
- REVIEW_IN_PROGRESS
- UNKNOWN (in case of API errors)
Caching
- PR data is cached for 15 minutes, or until you press Refresh.
- Review states are cached separately
- Cache is automatically saved on exit and loaded on startup
Environment Variables
You can optionally set your GitHub token as an environment variable:
export GITHUB_TOKEN=your_token_here
Notes
- The application requires a GitHub token with 'repo' scope for accessing private repositories.
- Cache files (
review_cache.jsonandpr_cache.json) are created in the application directory. - Configuration is stored in
config.json.