ghp
Compact GitHub activity summary with repository-scoped checkpoints.
Install
uv tool install ghp
# or
uvx ghp
Dev
uv sync
uv run ghp --version
Usage
ghp # open issues + PRs snapshot
ghp upstream # use the GitHub repo from the upstream remote
ghp 1h # deltas since 1 hour ago
ghp upstream 1h # upstream deltas since 1 hour ago
ghp 2026-03-07T14:00:00Z # deltas since timestamp
ghp --json # machine-readable output
ghp --me @clod # highlight mentions
ghp --repo owner/name # explicit repo
Behavior
- Cursor defaults to the saved checkpoint for the current GitHub repository when
--sinceis omitted. upstreamselects the repository configured as the Git remote namedupstream.- Checkpoints are stored under
$XDG_STATE_HOME/ghp/checkpoints/. WhenXDG_STATE_HOMEis unset or invalid, ghp uses~/.local/state/ghp/checkpoints/. - Each repository has its own atomically replaced checkpoint file, so
origin,upstream, and--repoqueries do not advance each other's checkpoints. - Saved checkpoints include a one-second margin because GitHub's
sincefilters are strict and timestamps have second precision. Boundary activity may appear again on the next run. - Tool installs and upgrades leave checkpoint state in place.
- Repository-keyed
.ghp-last-update-timestampfiles are migrated to XDG state and removed after successful writes. Older plaintext files require an explicit window such asghp 1honce because they do not identify a repository. --sinceaccepts relative shorthands (30m,2h,1d,1w) and normalizes timestamps to canonical UTC.- Snapshot mode returns open issues and open PRs.
- Delta mode returns issues, PRs, issue comments, PR review comments, and recent commits since the cutoff.
- API or auth failures exit non-zero instead of silently pretending there was no activity.
--jsonprints a machine-readable payload; on failure it emits a JSON object with anerrorfield and exits non-zero.
Auth
Looks for tokens in this order:
$GITHUB_PAT$GITHUB_TOKEN$GH_TOKENgh auth token(gh CLI)
Test
uv run python -m unittest discover -s tests
scripts/test-install.sh
Metadata
Release files for ghp 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ghp-0.2.0.tar.gz | 12.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ghp-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 21.0 kB
Release files / ghp-0.2.0.tar.gz
| Download URL | ghp-0.2.0.tar.gz |
|---|---|
| Size | 12.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a40555e5f7ac694bb846440a653a0ce87a1546433e4f6e137ebad940335fd8c6
|
|
BLAKE2b-256 checksum How to use checksums |
4e995e3e4d28c7eb9e7491dc653f28c8b9ebe09dc1374486147261a9558a9fff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / ghp-0.2.0-py3-none-any.whl
| Download URL | ghp-0.2.0-py3-none-any.whl |
|---|---|
| Size | 8.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
202651ecf7a089b63447a33f2297f000172aa2b82989d7a5d80341e870c7f254
|
|
BLAKE2b-256 checksum How to use checksums |
70df063465a2ac9eaf790148d31ed0e47150ead16ee309da1fdca5c39f33b862
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|