Skip to content

feat: CI check status column (statusCheckRollup)#7

Merged
zombocoder merged 3 commits into
zombocoder:mainfrom
sashml:feat/ci-checks-indicator
Jul 1, 2026
Merged

feat: CI check status column (statusCheckRollup)#7
zombocoder merged 3 commits into
zombocoder:mainfrom
sashml:feat/ci-checks-indicator

Conversation

@sashml

@sashml sashml commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Summary

Add a CI column showing each PR's statusCheckRollup (✓ passing / ✗ failing /
… pending / · none). Unlike mergeable, statusCheckRollup is not lazily computed, so
this is reliable straight from the list/search API. See the mockup in the issue.

⚠️ Stacked on #5 (which is stacked on #4)

Cascades on top of the detail-pane PR. Until #4 and #5 merge, the diff shows all three
commits; review/merge after #4 and #5. Only the last commit (add CI check status column) belongs to this PR.

Changes

  • queries: commits(last:1){…statusCheckRollup{state}} in search & repo PR queries
  • models: PullRequest.checks_status (Option, #[serde(default)]) + a CiStatus
    classifier (Passing/Failing/Pending/None) decoupled from the raw GitHub enum
  • graphql: parse checks_status from the latest commit's rollup
  • ui: new CI list column driven by ci_status(); shape+color for accessibility
  • tests: ci_status covers SUCCESS / FAILURE+ERROR / PENDING+EXPECTED / none

Testing

cargo build, cargo test (8 binaries pass; graphql_parse 13), cargo fmt --check,
cargo clippy — clean (no new warnings).

Closes #6
Part of #1

sashml added 3 commits July 1, 2026 09:31
Add a colorblind-safe "State" column to the All PRs / Inbox / per-repo
tables showing GitHub's mergeable status (✓ ok / ✗ cf / ? unknown).

- queries: request mergeable + mergeStateStatus in search & repo PR queries
- models: PullRequest.mergeable + merge_state_status (Option, #[serde(default)]
  so older cache entries still deserialize)
- graphql: parse both fields; UNKNOWN/absent -> None (search API is lazy)
- ui: State column with theme colors, widths adjusted
- tests: parse roundtrip, CONFLICTING, and legacy-cache serde-default coverage

Refs: zombocoder#1, zombo-sash-eco-rpjg
Press `d` on a highlighted PR to open a detail overlay that fetches the PR
directly — forcing GitHub to compute a fresh mergeable/mergeStateStatus
(the search API returns UNKNOWN) — plus the CI check rollup and recent commits.

- queries: PR_DETAIL_QUERY (mergeable, mergeStateStatus, commits(last:5) +
  per-commit statusCheckRollup)
- github: fetch_pr_detail + parse_pr_detail; CommitInfo + PrDetail models
- state/update: detail_open + pr_details cache; ToggleDetail; Back closes the
  pane; Refresh clears cached details; resolved detail upgrades the list column
- event_loop: `d` key; 200ms debounce so holding j/k never sprays API calls and
  navigation stays responsive; fetch runs behind the existing semaphore
- ui: render_pr_detail_overlay (merge state + CI + commits), status-bar hint
- tests: toggle, back-closes-pane, list-upgrade, refresh-clears, failure path

Refs: zombocoder#1, zombo-sash-eco-zkk5
Show each PR's statusCheckRollup as a compact CI glyph in the list.
Unlike mergeable, statusCheckRollup is not computed lazily, so the search
API returns real values — a mergeable-but-red PR is now obvious at a glance.

- queries: request commits(last:1){...statusCheckRollup{state}} in search & repo queries
- models: PullRequest.checks_status (Option, #[serde(default)]) + CiStatus classifier
  (Passing/Failing/Pending/None) decoupled from the raw GitHub enum
- graphql: parse checks_status from the latest commit's rollup
- ui: new CI column (✓ passing / ✗ failing / … pending / · none), shape+color
- tests: ci_status covers SUCCESS / FAILURE+ERROR / PENDING+EXPECTED / none

Refs: zombocoder#6, zombo-sash-eco-9h3o
@sashml

sashml commented Jul 1, 2026

Copy link
Copy Markdown
Contributor Author

@zombocoder requesting your review 🙏 — CI check-status column. Cascades on #5 (→ #4); please review/merge after those.

@zombocoder zombocoder merged commit 01e4a68 into zombocoder:main Jul 1, 2026
@sashml sashml deleted the feat/ci-checks-indicator branch July 1, 2026 10:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: CI check status column (statusCheckRollup)

2 participants