DanielArndt/github-pr-tracker

A Gnome Shell Extension for tracking GitHub PRs

★ 0Forks 0JavaScriptGitHub ↗Compare

README

GitHub PR Tracker (GNOME Shell Extension)

A GNOME Shell extension (compatible with GNOME Shell 45–50+) that tracks pull requests for your GitHub account using the GitHub GraphQL API, organizing them into clear actionable categories with precise status reason badges.

GitHub PR Tracker


Features

  • Categorized PR Sections:
    • ⚠️ Action Required: Pull requests authored by you that need your attention:
      • Reviewers requested changes (CHANGES_REQUESTED)
      • Failing required CI checks (checks required by branch protection, or failing checks that block merging when branch protection is not visible to you)
      • Merge conflicts with the target branch
      • Unresolved review comments/threads
    • 💬 Needs My Review: Pull requests from others where:
      • Review was requested directly from you (including author re-requests on previously reviewed PRs)
      • Review was requested from your team (when team review is enabled in preferences and you have not already reviewed it)
    • ✓ Ready to Merge: Approved pull requests authored by you with passing required CI checks and no conflicts.
    • ⏳ Waiting on Review: Open, non-draft pull requests authored by you that are awaiting review from others.
    • 📝 Draft PRs: Your open draft pull requests.
  • Informative PR Cards:
    • Displays Repository (owner/repo), PR number (#123), Title, Author, and time elapsed.
    • Displays 1–2 word reason pills (e.g. Changes Requested, CI Failed, Conflicts, Unresolved Comments) with support for multiple simultaneous reasons.
    • Clicking any pull request directly opens it in your default web browser.
  • GNOME Shell Design Compliant:
    • Top bar panel indicator shows compact pill badges with symbolic status icons and counts, with palettes for both the dark and light GNOME Shell styles.
    • Automatically hides badges when counts are zero, displaying only the subtle GitHub icon.
  • Secure Credential Storage:
    • GitHub Personal Access Tokens are stored securely in your system keyring using libsecret (Secret Service API), never in plain text configuration files.
  • Customizable Filtering:
    • Include/exclude repositories using glob patterns (e.g. canonical/*, owner/repo).
    • Toggle ignoring archived repositories and repository forks.
  • Configurable Polling:
    • Background polling interval configurable between 1 and 60 minutes (default 5 minutes).
    • Manual refresh button in the menu footer.

Limits

  • Up to 30 of your most recently updated open pull requests, and up to 30 pull requests awaiting your review, are fetched. When GitHub has more, the menu footer shows "latest 30 per list".
  • Per pull request, up to 100 reviewers, reviews, review threads and status checks are considered.

Installation

Prerequisites

  • GNOME Shell 45, 46, 47, 48, 49, or 50
  • gjs (1.80+)
  • libsecret-1 (GNOME Keyring)
  • libsoup-3.0

Building & Installing

Clone the repository and run:

git clone https://github.com/DanielArndt/github-pr-tracker.git
cd github-pr-tracker
make install

This compiles GSettings schemas, packages the extension, installs it to ~/.local/share/gnome-shell/extensions/[email protected], and compiles schemas in place.

After installing for the first time, log out and log back in so GNOME Shell picks up the new extension. GNOME Shell cannot be restarted in place on Wayland.

For development, you can instead test in a nested session without logging out:

dbus-run-session gnome-shell --devkit             # GNOME 49 and later
dbus-run-session -- gnome-shell --nested --wayland # GNOME 45–48

Then enable the extension:

gnome-extensions enable [email protected]

Setup & Configuration

  1. Generate a GitHub Personal Access Token (classic):
    • Click Generate Token in the extension preferences (or go directly to GitHub New Personal Access Token) to pre-populate the token description and required repo scope.
    • Public repositories only: uncheck the repo scope if you do not track private repositories. A token with no scopes can read public data, which is all the extension needs.
    • Private repositories: keep the repo scope selected. GitHub has no read-only equivalent for classic tokens, so this scope also grants write access. The extension only reads data and never modifies anything, but treat the token accordingly and set an expiration date.
    • Fine-grained personal access tokens have not been tested and may not return all pull requests.
  2. Open extension preferences:
    gnome-extensions prefs [email protected]
    (Or click the gear icon in the extension's dropdown menu footer).
  3. Paste your token into the Personal Access Token field and click Save.
  4. Click Test Connection to verify that your account is detected and authenticated.

Development & Testing

Run unit tests covering classification, reason calculations, filtering, and preferences:

make test

Clean build artifacts:

make clean

For guidelines on coding style, Conventional Commits, and GNOME Extension Best Practices, see CONTRIBUTIONS.md.


License

Copyright (C) 2026 Daniel Arndt

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. See LICENSE for the full text.

Contributors

DanielArndt

Issues