Skip to content

feat(web): pull request list and detail polish - #217

Merged
badcuban merged 13 commits into
mainfrom
feature/pull-requests-polish
Sep 3, 2026
Merged

feat(web): pull request list and detail polish#217
badcuban merged 13 commits into
mainfrom
feature/pull-requests-polish

Conversation

@badcuban

@badcuban badcuban commented Sep 3, 2026

Copy link
Copy Markdown
Collaborator

The pull requests page read as a plain list: author logins as text, labels as dots, check state as words, one pull request open at a time, a header that stacked its facts in lines, and a filters popover of text fields.

This brings it up to the finish of the reference panel.

Rows. The author's avatar (derived from the login for people, looked up in one batched GraphQL call for bots, read from the host payloads on GitLab, Bitbucket and Azure DevOps), up to two label pills with the label's colour dot, a review glyph and a check glyph with tooltips, and a red triangle in place of the state glyph when the branch conflicts. Rows drop the pills and repository when the list is narrow.

Toolbar. A Sort menu (Merge readiness, Recently updated, Newest, Oldest, Largest, Smallest) and a Filters menu with submenus: Involvement, Author with search and avatars, Labels as a searchable checklist, Draft, Review, Checks, Project. Filters live in the URL as before.

Tabs. Every pull request opened from the list becomes a tab above the detail. Closing one falls back to its neighbour; the last close returns the list. Arrow keys walk the strip, middle click closes, and the selection link now carries the repository so same-number pull requests on different repositories stay apart.

Header. Repository and number with the action cluster (Check out, the state's primary action, Close, More), the title, avatar and author with a copyable checkout command, the branch line with conflict, stacked and behind markers beside the file count and diff stat, and the Summary, Code and Timeline strip with a checks summary that scrolls to the checks. The Summary opens with Reviewers, Labels and Comments rows and a collapsible description.

Needs you. A pull request of the viewer's own counts as needing them only when they can push to its repository, so contributions to repositories they cannot merge stay under Yours.

A second-opinion UI review ran on the result and its fourteen findings (selection identity, tab focus and scrolling, submenu keyboard handling, radio semantics, screen reader names, phone layout) are applied. Spec in docs/design/pull-requests.md, section Step 6.

Actors, reviewers, and reviewer candidates carry an avatar URL: derived from the host for plain GitHub logins, looked up in one batched GraphQL call for bots, read from the host payloads on GitLab, Bitbucket, and Azure DevOps. List rows carry the host's merge state so the list can mark conflicts.
…menus

Rows show the author's avatar, up to two label pills with the label's colour, a check glyph in place of the words, and a conflict triangle in place of the state glyph when the branch no longer merges. Sort and Filters are menus: Sort adds merge readiness, newest, oldest, largest and smallest; Filters gets submenus for involvement, author (searchable, with avatars), labels, draft, review, checks and project. Below tablet width the row keeps the number, author and glyph.
Every pull request opened from the list becomes a tab above the detail; closing one falls back to its neighbour and the last close returns the list. The header is rebuilt in five rows: repository and number with the action cluster, the title, author and updated time with a copyable checkout command, the branch line with conflict, stacked and behind markers beside the file count and diff stat, and the tab strip with a checks summary that scrolls to the checks. The Summary opens with reviewer, label and comment rows and a collapsible description.
The rule that trimmed rows on phones now reads the list's own width, so the column beside an open pull request gets the same treatment.
…us, and phone rows

The selection carries the repository so same-number pull requests on different repositories stay apart; tab selection keeps focus in the strip, tabs keep their last known state and scroll into view, close buttons leave the tab order when hidden; the Author and Project submenus are radio groups with their search field focused on open; the phone branch row wraps the files and diff stat onto their own line; row and tab names carry the state, conflict and repository for screen readers; copy buttons announce the copy.
A pull request of the viewer's own counts as needing them only when they can push to its repository, so contributions to repositories they cannot merge stay under Yours. The list carries the viewer's write access per row: from the cached repository access read for workspace rows and from the search's viewerPermission for authored rows. Rows show the review state as a glyph beside the checks glyph instead of a coloured word.
@vercel

vercel Bot commented Sep 3, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
threadlines Skipped Skipped Sep 3, 2026 4:31pm UTC

Request Review

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Sep 3, 2026
Jumping to the checks used scrollIntoView, which also scrolled every scrolling ancestor: the whole shell moved up and left a blank band under it that could not be scrolled back. The jump now moves only the Summary's own scroll box, and the Comments row jump does the same.
The running glyph in rows, the header rollup and the checks list fades in and out on a slow cycle so a live run reads as live. Opacity only, so it composites without a repaint, and it is still under reduced motion.
@badcuban
badcuban merged commit af37ea2 into main Sep 3, 2026
16 checks passed
@badcuban
badcuban deleted the feature/pull-requests-polish branch September 3, 2026 17:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant