Skip to main content

ghinbox

A better UI for GitHub notifications. Forged from the fires of PyTorch.

The three main design philosophies of ghinbox are as follows:

  1. Pull more data, but less often. GitHub notifications allows only a very impoverished set of search queries and forces a strict limit of 25 items per page; in return, you can freely refresh your notifications without being rate limited. ghinbox makes the opposite tradeoff: we want all of the notifications and all of the data; to avoid being rate-limited, you must explicitly request a sync and we expect you to only do syncs rarely, opting to show you our offline view of the state of notifications.

  2. Issue and pull request notifications are fundamentally different. GitHub notifications jumble issues and pull requests together. We argue the workflow for handling issues and pull requests is quite different: issues you can just read, perhaps dash off a quick response; a pull request, you have to actually sit down and fully understand what is changed. Issues you can doomscroll on your phone; pull requests require focused attention. You should have separate flows for handling each of them.

  3. Core contributor PRs privileged over external contributor PRs. GitHub notifications doesn't distinguish between PRs that come from core contributors versus external contributors; anyone can CC you and dump a PR in your inbox. This design makes it easy for the masses to hijack maintainer attention. Instead, external contributions should be relegated to their own section, where a maintainer can engage with them on their own terms, subject to whatever attention they want to allocate.

These philosophies transfer into the following feature set:

  • GitHub source of truth (unlike Octobox); you can blow away ghinbox's local state without care, any actions you take translate directly into concepts GitHub knows, like marking a notification as Done.

  • Fetch all unread comments for each notification and display them inline on one page.

  • Ability to filter out uninteresting comments (e.g., bot interactions, automated messages, etc.)

  • Ability to take out notifications which were only induced by uninteresting actions.

  • A Phabricator-style PR review dashboard, which emphasizes clarity on whether or not a PR in your inbox needs action taken on it or not.

Technical details

GitHub's official API does not expose enough information / interaction points to implement even a feature-parity notifications page. In particular:

  • There is no way to distinguish between "Read" and "Done" notification states via the REST API.
  • The HTML notifications page provides more information than the notifications JSON API provides.
  • There is no way to move a notification back to inbox after it's marked done.

To work around these issues, ghinbox isn't just an HTML+JS application that hits the GitHub API; it comes with a full API server which provides a few extra APIs that stock GitHub API doesn't have, which are implemented by directly interacting with the GitHub website with Playwright.

Importantly, this means that I will not host ghinbox publicly; you have to run it yourself. When you launch the server, it will launch a flow to log you into GitHub on Playwright's Chrome instance, and then will use that to issue itself a token (we also proxy plain GitHub API calls through this server so you don't have to provide a token in the web UI) and preserve the browser credentials so that it can do direct interactions.

This repository also contains support for "prod flows", which are scripted interactions against the real GitHub website (using test accounts), which we can use to get fixtures for our E2E tests and also verify that GitHub hasn't changed its UI in a way that is incompatible with our Playwright scripts.

Quick Start

# Install dependencies
uv sync
uv run playwright install chromium

uv run ghinbox

Contributing

See CONTRIBUTING.md

Metadata

Release files for ghinbox 0.2.1

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

Source distribution (sdist)

Source distribution for ghinbox 0.2.1
File Size Uploaded Provenance Actions
ghinbox-0.2.1.tar.gz 382.8 kB Without provenance Details for ghinbox-0.2.1.tar.gz

Built distribution (wheel)

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

Total release size: 505.6 kB

Release files / ghinbox-0.2.1.tar.gz

Download URL ghinbox-0.2.1.tar.gz
Size 382.8 kB
Tags Source
SHA-256 checksum
How to use checksums
1c38b14e629a8c6b03977db8fdda07aab55143edcb6b60784d01207dc359626b
BLAKE2b-256 checksum
How to use checksums
f9464acd44cee69b204a54f3f8d6f1fe816c628942e352103f14181ede0337c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.6.6

Release files / ghinbox-0.2.1-py3-none-any.whl

Download URL ghinbox-0.2.1-py3-none-any.whl
Size 122.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ba059acf3751a449a4d3982d7d961ab5112029cbfacff54c63d67956d09b4928
BLAKE2b-256 checksum
How to use checksums
6260d92266f5949b8b0737746d0b3ed13766f1687afaef48d55116ba5e0618b2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.6.6

Security for ghinbox 0.2.1

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