Skip to content

Releases: danielnc/prhub

prhub 0.2.1

Choose a tag to compare

@danielnc danielnc released this 16 Oct 00:46
42d8051

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's Retry-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 read pr from these files must stop.
  • prhub status counts the PR records instead of reading them, and prhub wait checks for new state every second
    (--poll, was 3).
  • Releases also carry thin macOS builds, macos-arm64 and macos-x86_64 (wheels and binaries), half the size of the
    universal one, which stays.

prhub 0.2.0

Choose a tag to compare

@danielnc danielnc released this 15 Oct 22:22
c1ade3b

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/prhub keep 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 prhub and
    pipx install prhub install a prebuilt binary wheel for macOS and Linux (x86_64 and aarch64), and every release
    also carries standalone binaries with SLSA provenance.
  • events.jsonl no longer grows without bound: past 20 MB it moves to events.jsonl.1.

prhub 0.1.6

Choose a tag to compare

@danielnc danielnc released this 15 Oct 20:37
b526376

Fixed

  • Polls no longer grow with every commit anyone ever asked about. A state or wait on 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 a state keeps a commit tracked for 15 minutes, a running wait renews 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 to commit-watch.json take 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

Choose a tag to compare

@danielnc danielnc released this 14 Oct 15:25
4dcfc0c

Fixed

  • deployed matches an environment by its usual long and short forms when the repository does not use the exact name:
    production also matches prod/prd, staging matches stage/stg, development matches dev. A repository
    whose environment is prod made --until deployed (default --env production) wait until its timeout. When the
    repository deploys but never to the requested environment, wait now says which environments it saw.

prhub 0.1.4

Choose a tag to compare

@danielnc danielnc released this 14 Oct 13:00
a99ebc0

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

Choose a tag to compare

@danielnc danielnc released this 14 Oct 12:20
11ae98a

Fixed

  • green and done are 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 as NOT STARTED; green reports 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 as name (cancelled).
  • deployed is 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 (DEPLOYING until 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

Choose a tag to compare

@danielnc danielnc released this 12 Oct 15:41
375a8fd

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

Choose a tag to compare

@danielnc danielnc released this 12 Oct 09:09
839758a

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

Choose a tag to compare

@danielnc danielnc released this 11 Oct 19:44
2f503d9

First public release. See CHANGELOG.md.