Show a Github PR's combined checks state in branches list (and main view for selected branch) - #5874
Merged
Conversation
stefanhaller
force-pushed
the
github-checks
branch
from
July 30, 2026 15:17
1e76fa8 to
f785087
Compare
stefanhaller
force-pushed
the
github-checks
branch
2 times, most recently
from
July 30, 2026 18:39
020ad3e to
b1ef033
Compare
Contributor
|
I tried this out locally and lgtm! |
Collaborator
Author
|
I couldn't help trying to find ways to show it in the branches list too; it's just too useful there. I pushed a fixup that shows it instead of the github icon for open branches that have a state; it's potentially somewhat confusing because there's a |
stefanhaller
force-pushed
the
github-checks
branch
from
July 31, 2026 06:00
a927d6d to
c7c04c9
Compare
The fetch currently combines transport, JSON decoding, and model conversion, which makes response changes difficult to verify without exercising the network. Put the deterministic work behind a small parser so later payload changes can be covered with raw GraphQL fixtures.
GitHub exposes a combined status for the head commit without requiring individual check contexts. Include that rollup in the existing request and startup cache so every consumer sees the same state without making a second network request.
The branch controller should decide which pull request to show, not how its header is styled and linked. Move the existing formatter and state badge next to the branch presentation helpers so subsequent header changes stay in one layer.
stefanhaller
force-pushed
the
github-checks
branch
from
July 31, 2026 07:02
c7c04c9 to
36ae18b
Compare
In the branches list we show the checks icon (✓, ✗ etc) instead of the gihub icon for branches that are open and have a state. It is a little confusing, because the ✓ in front of the name means something very different than the ✓ after it, but the checks status is just too useful to see in the list. In the main view we show it as a compact status before the PR title, with a hyperlink that takes you directly to the checks tab in Github.
stefanhaller
force-pushed
the
github-checks
branch
from
August 2, 2026 11:06
36ae18b to
2669842
Compare
1 task
tmeijn
pushed a commit
to tmeijn/dotfiles
that referenced
this pull request
Aug 11, 2026
This MR contains the following updates: | Package | Update | Change | |---|---|---| | [jesseduffield/lazygit](https://github.com/jesseduffield/lazygit) | minor | `v0.63.1` → `v0.64.0` | MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot). **Proposed changes to behavior should be submitted there as MRs.** --- ### Release Notes <details> <summary>jesseduffield/lazygit (jesseduffield/lazygit)</summary> ### [`v0.64.0`](https://github.com/jesseduffield/lazygit/releases/tag/v0.64.0) [Compare Source](jesseduffield/lazygit@v0.63.1...v0.64.0) <!-- Release notes generated using configuration in .github/release.yml at v0.64.0 --> #### What's Changed This release has massive changes, but most of them should hopefully not be visible: I completely overhauled lazygit's concurrency model, which was, let's say, less than robust; there were lots of data races, and we were just lucky that this didn't result in crashes or misbehavior more often. We now have a robust concurrency model with no known data races, and in fact we run our integration test suite on CI with the `-race` flag to prove that. The user visible part of this is that some operations run a little more smoothly now; for example, there used to be an ugly spinner freeze at the end of checking out a branch, which is now gone. However, since the changes were so massive there's a higher-than-usual chance of regressions, so please report any that you find. Apart from that, we also have a few useful enhancements; the most notable one is probably that we now show the Github checks status of pull requests in the branches panel. ##### Enhancements 🔥 - Show a spinner for more long-running operations by [@​stefanhaller](https://github.com/stefanhaller) in [#​5765](jesseduffield/lazygit#5765) - Remove the BLOCK\_UI refresh mode by [@​stefanhaller](https://github.com/stefanhaller) in [#​5790](jesseduffield/lazygit#5790) - Support a `{{diffContext}}` template variable in external diff command by [@​stefanhaller](https://github.com/stefanhaller) in [#​5841](jesseduffield/lazygit#5841) - Some small UI polish by [@​stefanhaller](https://github.com/stefanhaller) in [#​5853](jesseduffield/lazygit#5853) - Auto-scroll when dragging to create range selection in staging view by [@​stefanhaller](https://github.com/stefanhaller) in [#​5855](jesseduffield/lazygit#5855) - Create a range selection in list views by dragging with the mouse by [@​stefanhaller](https://github.com/stefanhaller) in [#​5856](jesseduffield/lazygit#5856) - Reorder commits (or rebase todos) by dragging with the mouse by [@​stefanhaller](https://github.com/stefanhaller) in [#​5857](jesseduffield/lazygit#5857) - Rework the custom pager config (rename to diff renderer) by [@​stefanhaller](https://github.com/stefanhaller) in [#​5870](jesseduffield/lazygit#5870) - Show a Github MR's combined checks state in branches list (and main view for selected branch) by [@​stefanhaller](https://github.com/stefanhaller) in [#​5874](jesseduffield/lazygit#5874) ##### Fixes 🔧 - Fix stuck inline status when pushing/fetching by [@​stefanhaller](https://github.com/stefanhaller) in [#​5768](jesseduffield/lazygit#5768) - Escape the merge conflicts view before prompting to continue the rebase by [@​stefanhaller](https://github.com/stefanhaller) in [#​5822](jesseduffield/lazygit#5822) - Fix side panel rendering when branches/commits are not their panel's first tab by [@​stefanhaller](https://github.com/stefanhaller) in [#​5825](jesseduffield/lazygit#5825) - Suppress output from a few git commands that pollute the command log by [@​stefanhaller](https://github.com/stefanhaller) in [#​5834](jesseduffield/lazygit#5834) - Fix stall with ctrl+z and fg by [@​stefanhaller](https://github.com/stefanhaller) in [#​5830](jesseduffield/lazygit#5830) - Fix more problems related to concurrent repo switch and background refresh by [@​stefanhaller](https://github.com/stefanhaller) in [#​5839](jesseduffield/lazygit#5839) - Fix Windows crash when switching to fullscreen mode with a custom pager by [@​stefanhaller](https://github.com/stefanhaller) in [#​5838](jesseduffield/lazygit#5838) - Fix multi-selection of files with common prefix not working in commit files panel by [@​stefanhaller](https://github.com/stefanhaller) in [#​5868](jesseduffield/lazygit#5868) - Support absolute paths when detecting edit preset from EDITOR env var by [@​stefanhaller](https://github.com/stefanhaller) in [#​5876](jesseduffield/lazygit#5876) - Exclude more commit trailers from auto-wrapping by [@​stefanhaller](https://github.com/stefanhaller) in [#​5871](jesseduffield/lazygit#5871) - Prevent stale index.lock files from diffs rendered through a pty on Windows by [@​stefanhaller](https://github.com/stefanhaller) in [#​5888](jesseduffield/lazygit#5888) - Fix orphaned processes on Windows when quickly navigating between commits by [@​stefanhaller](https://github.com/stefanhaller) in [#​5885](jesseduffield/lazygit#5885) ##### Maintenance ⚙️ - Perform refresh model and view updates on the UI thread instead of using mutexes by [@​stefanhaller](https://github.com/stefanhaller) in [#​5767](jesseduffield/lazygit#5767) - Fix data race with status string by [@​stefanhaller](https://github.com/stefanhaller) in [#​5777](jesseduffield/lazygit#5777) - Fix data race with command log by [@​stefanhaller](https://github.com/stefanhaller) in [#​5779](jesseduffield/lazygit#5779) - Make integration tests using commits more robust by [@​stefanhaller](https://github.com/stefanhaller) in [#​5782](jesseduffield/lazygit#5782) - Synchronize ViewBufferManager.Close with a starting task by [@​stefanhaller](https://github.com/stefanhaller) in [#​5786](jesseduffield/lazygit#5786) - Make model<->view index conversions independent of rendering by [@​stefanhaller](https://github.com/stefanhaller) in [#​5785](jesseduffield/lazygit#5785) - Fix idle notification deadlock by [@​stefanhaller](https://github.com/stefanhaller) in [#​5821](jesseduffield/lazygit#5821) - Bump tcell to an unreleased snapshot to fix a shutdown race by [@​stefanhaller](https://github.com/stefanhaller) in [#​5824](jesseduffield/lazygit#5824) - Fix command log streaming race by [@​stefanhaller](https://github.com/stefanhaller) in [#​5789](jesseduffield/lazygit#5789) - Synchronize async view rendering by [@​stefanhaller](https://github.com/stefanhaller) in [#​5791](jesseduffield/lazygit#5791) - Run tests with race detection on CI by [@​stefanhaller](https://github.com/stefanhaller) in [#​5792](jesseduffield/lazygit#5792) - Gocui mouse event fixes by [@​stefanhaller](https://github.com/stefanhaller) in [#​5854](jesseduffield/lazygit#5854) - Move Github MR cache out of state.yml into a separate file by [@​stefanhaller](https://github.com/stefanhaller) in [#​5884](jesseduffield/lazygit#5884) - Make justfile commands available in the Nix development shell by [@​TyceHerrman](https://github.com/TyceHerrman) in [#​5890](jesseduffield/lazygit#5890) ##### Docs 📖 - Clarify contribution policy by [@​stefanhaller](https://github.com/stefanhaller) in [#​5809](jesseduffield/lazygit#5809) ##### I18n 🌎 - Update translations from Crowdin by [@​stefanhaller](https://github.com/stefanhaller) in [#​5891](jesseduffield/lazygit#5891) ##### Performance Improvements 📊 - Make scrolling down a very long diff with the scroll wheel much smoother by [@​stefanhaller](https://github.com/stefanhaller) in [#​5780](jesseduffield/lazygit#5780) #### New Contributors - [@​TyceHerrman](https://github.com/TyceHerrman) made their first contribution in [#​5890](jesseduffield/lazygit#5890) **Full Changelog**: <jesseduffield/lazygit@v0.63.1...v0.64.0> </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this MR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- This MR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yODguMCIsInVwZGF0ZWRJblZlciI6IjQzLjI4OC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiLCJhdXRvbWF0aW9uOmJvdC1hdXRob3JlZCIsImRlcGVuZGVuY3ktdHlwZTo6bWlub3IiXX0=-->
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
For a while now we have been showing Github icons in the branches panel to indicate which branches have an associated pull request. This PR changes this so that open PRs (which used to show a green Github icon) now show a colored symbol indicating the combined state of the Github checks (if any are configured for this repo):
This lets you see at a glance which of your PRs are ready to merge. (Note however that this feature knows nothing about which of the checks are required for merging, so a branch showing a failure icon may still be ready to merge if the failing checks are not required ones.)
It may be a little confusing for new users to see two green checkmarks for a branch, one to the left of the name and one to the right; they mean very different things. Still, seeing the Github checks state in the branches list is so useful that I think it's a good compromise; hopefully users will learn quickly enough what all the icons mean.
When selecting a branch that has a pull request, the main view already showed some information about the PR (its title, pr number, and the state (open/closed/merged). This PR adds an aggregated pull request checks field to this, indicating the overall checks state (passed/failed/pending/...). It has a hyperlink taking you directly to the checks tab on Github.
The update frequency of the checks badge is tied to the auto-fetch cadence for now (once every minute by default); you can fetch manually to force an update, and some user actions (including the focus-in refresh) update the PR states too, but anything more fancy (e.g. fetching just the checks state of the selected branch) would have been more work, and I want to see if this is good enough.