Skip to content

feat: PR detail-on-highlight pane (fresh mergeable + CI + git log)#5

Merged
zombocoder merged 2 commits into
zombocoder:mainfrom
sashml:feat/pr-detail-pane
Jul 1, 2026
Merged

feat: PR detail-on-highlight pane (fresh mergeable + CI + git log)#5
zombocoder merged 2 commits into
zombocoder:mainfrom
sashml:feat/pr-detail-pane

Conversation

@sashml

@sashml sashml commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Summary

Press d on a highlighted PR to open a detail pane that fetches the PR directly —
forcing GitHub to compute a fresh mergeable/mergeStateStatus (the list/search API
returns UNKNOWN) — plus the CI check rollup and recent commits (git log). See the overlay
mockup in the issue.

⚠️ Stacked on #4

This PR cascades on top of #4 (merge-state column). Until #4 merges, the diff here
shows both commits; review/merge after #4. The first commit (add merge-state column)
belongs to #4.

Changes

  • queries: PR_DETAIL_QUERY (mergeable, mergeStateStatus, commits(last:5) +
    per-commit statusCheckRollup); fetch_pr_detail client method
  • models: CommitInfo + PrDetail
  • 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

Testing

cargo build, cargo test (8 binaries pass), cargo fmt --check, cargo clippy — clean.

Closes #3
Part of #1

sashml added 2 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
@sashml

sashml commented Jul 1, 2026

Copy link
Copy Markdown
Contributor Author

@zombocoder requesting your review 🙏 — task 2 of 2 (detail-on-highlight pane). This cascades on #4; please review/merge after #4.

@zombocoder zombocoder merged commit 82846de into zombocoder:main Jul 1, 2026
3 of 4 checks passed
@sashml sashml deleted the feat/pr-detail-pane 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: PR detail-on-highlight pane (fresh mergeable + CI + git log)

2 participants