beady-eye v0.25.0
Word from the kitchen: in beady-eye 0.25, a bead hears what is happening on its pull request
This post is more than a year old. It describes beady-eye v0.25.0; the latest release notes say what has changed since.
In beady-eye 0.25.0, a bead held back by a gh:pr gate
stops waiting in silence. While its pull request is open,
bdi gates comments on the bead when the checks fail, when
the branch conflicts with its base, when someone submits a review, and
when someone comments on the conversation. Each is told once, with the
reviewer or author named and a link to what they wrote. The gate stays
open.
brew upgrade codeforbreakfast/tap/bdi
# or
cargo install beady-eye
Read the demo as text
spoon $ bdi gates
bdi gates: settling the gh:pr gates of 1 project, for every owner's repositories, every 60s
greasy-spoon/till#42 has failing checks: spoon told spoon-1.2
greasy-spoon/till#42 was reviewed: spoon told spoon-1.2
greasy-spoon/till#42 was commented on: spoon told spoon-1.2
^C
spoon $ bd comments spoon-1.2
Comments on spoon-1.2:
[cook] at 2026-10-08 18:44
The checks on c0ffee1, the head of pull request greasy-spoon/till#42, failed, so the
gh:pr gate waiting on it stays open.
[cook] at 2026-10-08 18:44
saucier reviewed pull request greasy-spoon/till#42: changes requested.
https://github.com/greasy-spoon/till/pull/42#pullrequestreview-7
[cook] at 2026-10-08 18:44
pot-wash commented on pull request greasy-spoon/till#42. https://github.com/greasy-
spoon/till/pull/42#issuecomment-9
spoon $ bdi gates
bdi gates: settling the gh:pr gates of 1 project, for every owner's repositories, every 60s
greasy-spoon/till#42 is approved: spoon closed gate spoon-im5
^C
spoon $ bdi
▾ spoon ✓ 10s ago 2/8 3 agents
├── ○ spoon-1 The caff takes card payments 2/6
│ ├── ◐ .1 Wire the card reader to the till ◍ wK:p2 · working
│ ├── ◐ .3 Refund a cold bacon roll ◍ wK:p5 · idle
│ ├── ○ .2 Print the VAT line on the receipt 1/2
│ │ └┄┄ ✓ spoon-im5 Gate: gh:pr 42 ⇢ till #42
│ └── ✓ .4 Price the menu in pence
└── ○ spoon-2 The tea timer forgets the second sugar 0/2
└── ◐ .1 Count sugars per cup, not per order ◍ wK:p3 · working
reading spoon, where bdi was started --all-projects reads every project
─────────────────────────────────────────────────────────────────────────────────────────────
no pane · nobody is working this bead
a all ? keys / find q quit
So “changes requested” arrives on the bead itself, where whoever is working it already looks. Only what happens after the gate was made is told, so upgrading does not serve a pull request’s whole history to the beads already waiting on it. A failure or a conflict is told once per head commit, and a review or comment once each.
Close on approval
The demo’s gate closed on approval, not merge. Give a gate
awaits=approved and it closes once GitHub’s review
decision is approved, or once the pull request merges:
bd update "$gate" --set-metadata awaits=approved
A repository that requires no reviews has no review decision, so there the gate waits for the merge.
Before you upgrade: the webhook takes more orders
bdi gates --listen now acts on review, issue comment,
check suite and status deliveries as well as pull requests. Add the
Pull request reviews, Issue comments,
Check suites and Statuses events to your webhook once
you are on 0.25. Without them, the timed look still finds everything,
only later.
A fine-grained token that worked on 0.24 needs Commit
statuses read before failing checks are told. A classic token
with repo needs nothing more. Where a token cannot read
something, bdi gates skips only that kind of news, says so
once for each repository, and still settles the gate. The
configuration reference
lists what each permission is for.
Coming releases can now be tasted early. A candidate such as
0.25.0-rc.1 goes to crates.io, GitHub and the container
registry, and you get one only by asking for its exact version:
cargo install beady-eye --version 0.25.0-rc.1
Changes requested on table four. The bead heard. Order up.