Repository navigation
Releases: danielnc/prhub
Releases · danielnc/prhub
Release list
prhub 0.2.1
Changed
- A poll sends GitHub up to 4 requests at a time instead of one after another: the PR and commit batches, and the
REST reads of deploy runs and containment, which are now collected across all commits first and asked once each.
Answers keep their order, a batch GitHub times out on is still split and retried, and a secondary rate limit pauses
polling until GitHub'sRetry-After. - The daemon remembers which PRs are open instead of reading every PR record each poll to find them (1,696 files on
the maintainer's machine, 15/10), and sweeps old files hourly instead of every poll. A closed PR's record is deleted
a day after it closes, not seven. - PR records no longer carry the raw GraphQL fields (
pr): nothing read them, and each file shrinks to its summary.
Older records are still read; anything outside prhub that readprfrom these files must stop. prhub statuscounts the PR records instead of reading them, andprhub waitchecks for new state every second
(--poll, was 3).- Releases also carry thin macOS builds,
macos-arm64andmacos-x86_64(wheels and binaries), half the size of the
universal one, which stays.
prhub 0.2.0
Changed
- prhub is now a single Rust binary instead of a Python package. Commands, options, conditions, exit codes, output
lines and state files are the same, so agents, scripts and an existing~/.local/state/prhubkeep working; the
daemon picks up where the Python one left off. Measured on the maintainer's machine 15/10 (about 50 open PRs, 1,696
PR records): the daemon holds 6.7 MB between polls instead of 36.6 MB, and the Claude Code hook, which runs before
every Bash command, takes 4.4 ms instead of 58 ms.uv tool install prhuband
pipx install prhubinstall a prebuilt binary wheel for macOS and Linux (x86_64 and aarch64), and every release
also carries standalone binaries with SLSA provenance. events.jsonlno longer grows without bound: past 20 MB it moves toevents.jsonl.1.
prhub 0.1.6
Fixed
- Polls no longer grow with every commit anyone ever asked about. A
stateorwaiton a commit kept it tracked for
6 hours, and each finished commit was re-read every 5 minutes, so watches piled up and came due together: seen on
the maintainer's machine 15/10 with about 60 open PRs, 198 watched commits (170 not asked about for over an hour)
made every fifth-minute poll read about 190 commits and take 7 to 13 minutes, and waits went that long without fresh
data. Now astatekeeps a commit tracked for 15 minutes, a runningwaitrenews its claim every 5 minutes and
lets it lapse 10 minutes after it ends, and a poll reads at most 50 commits: those never read or just asked about
first, then those still running, then the stalest finished ones. Watches written by an older prhub expire an hour
after they were last asked about, instead of six. Updates tocommit-watch.jsontake a lock, and a commit GitHub
keeps failing on is skipped for 5 minutes so it cannot crowd out the rest.
prhub 0.1.5
Fixed
deployedmatches an environment by its usual long and short forms when the repository does not use the exact name:
productionalso matchesprod/prd,stagingmatchesstage/stg,developmentmatchesdev. A repository
whose environment isprodmade--until deployed(default--env production) wait until its timeout. When the
repository deploys but never to the requested environment,waitnow says which environments it saw.
prhub 0.1.4
Fixed
- Polls no longer slow down with many watched commits after a deploy. The run behind a later commit's deploy was asked
once per watched commit it might contain, every poll (46 requests for 11 runs, polls of up to 200 s, seen on the
maintainer's machine 14/10 with about 100 watched commits and 60 open PRs). It is now asked at most once per poll, shared through
runs.json; a successful run is remembered, and one that ended badly is asked again every 10 minutes.
prhub 0.1.3
Fixed
greenanddoneare no longer met while a workflow on the head is still waiting for its jobs. GitHub creates a
workflow's check suite at once but its check runs only when the jobs are created, which can take a minute (a
runner queue, a concurrency group), and its rollup ignores a suite with no runs, so a fast workflow that already
passed made the PR or commit read SUCCESS. An unfinished workflow run now keeps checks PENDING, for PRs and
commits. A head with more than 50 check suites stays PENDING, since an unread suite may still be running.- A workflow run cancelled before any of its jobs started (replaced in its concurrency group by a newer run while it
waited) is not a failure. It shows asNOT STARTED;greenreports it can never be met, since that commit's CI
never ran there, unless another run of the same workflow ran on it. A dispatched run cancelled before it started
is left out, like a cron run. Other cancelled runs are listed asname (cancelled). deployedis no longer met while a deploy is still running. A workflow makes one Deployment per job that names
the environment, and GitHub marks each one successful when its own job ends, so the build job's Deployment read
successful while the migrate and deploy jobs had not run yet. A Deployment made by a workflow run now counts only
once that run has finished successfully (DEPLOYINGuntil then); for a later commit's deploy, the daemon reads that
run's state once per poll until it has succeeded (a failed run is asked again, since a re-run keeps its id).- An HTTP 429 from GitHub always counts as the rate limit (PAUSED), whatever its body says.
- A GitHub response cut short mid-read (
IncompleteRead, a truncated JSON body) is a transient network error: the
daemon reports DEGRADED and retries, instead of logging a crash.
prhub 0.1.2
prhub no longer reads as down during GitHub incidents or on an overloaded machine: smaller batches that split and retry on GitHub errors, a DEGRADED state in which waits keep waiting, long polls counted as healthy, and no crash on a slow gh. Merged PRs and finished commits are re-read less often. See CHANGELOG.md.
prhub 0.1.1
Every GitHub release now carries the wheel, the sdist and their SLSA build provenance (prhub.intoto.jsonl); SECURITY.md shows how to verify them. The name parsers and the hook's command matcher are fuzzed with ClusterFuzzLite. See CHANGELOG.md.
prhub 0.1.0
First public release. See CHANGELOG.md.