Skip to content

Pull requests: Match GitHub's list layout - #70

Merged
whereareiam merged 1 commit into
devfrom
feat/pull-request-list-layout
Oct 3, 2026
Merged

whereareiam merged 1 commit into
devfrom
feat/pull-request-list-layout

Conversation

@whereareiam

@whereareiam whereareiam commented Oct 3, 2026 •

Copy link
Copy Markdown
Owner

The pull request list still followed GitHub's earlier layout. This gives it the same layout as the issue list.

Changes

  • Sidebar: the pull request list gets the issue list's sidebar. It holds the saved filters that were in the Filters menu (pull requests, assigned to me, created by me, mentioned, review requested, recent activity) and the Milestones, All states, Search syntax and Labels links. It collapses the same way and remembers its state separately from the issue list.
  • Heading row: "All pull requests" (or the active filter's name) with the New pull request button, instead of one row holding Filters, search, Labels/Milestones and New.
  • Search: a full-width field below the heading, using the shared search component.
  • List header: "Open" and "Closed" with counters and no icons; Author is the first filter.
  • Empty state: both lists use a new theme-empty-compact variant of the shared empty state, which is GitHub's compact block: a 24px muted icon, a 20px/32.5px heading and one muted 14px line with 32px of padding (about 150px tall, GitHub's is 152px). It was 296px tall with a 24px heading on the pull request list. The pull request heading reads "No pull requests matched your search", as on GitHub; the issue list keeps Forgejo's translated "No results" and gains the icon.
  • Shared code: both lists use one sidebar template and one stylesheet block. pull_list.ts is removed, along with the rules written for the old search markup (about 250 lines).

Row content is Forgejo's own and unchanged: the bulk-selection checkboxes, the "#10 opened 2 days ago by sam" wording, the target branch, and the check result after the title.

Comparison

At 1456px in dark mode, in the dev preview (acme/webapp/pulls).

Element Before After
Sidebar none filters and pages, as on the issue list
Rows above the list one: Filters + search + Labels/Milestones + New heading + New, then search
Search field joined to the Filters button full width, trailing search button
Open / Closed "2 Open", "2 Closed" with icons "Open 2", "Closed 2" with counters
First filter Label Author

Reference: github.com/cli/cli/pulls viewed signed out shows the heading row, the full-width search and the counters, but no sidebar; its issue list does have one. The sidebar here follows the issue list and was not checked against a signed-in GitHub view.

Before and after screenshots were captured but are not attached: no signed-in browser was available to upload them.

Checks

  • Tests, type check and formatting pass (402 tests).
  • Dev preview (http://localhost:3000, Forgejo 16.0.3): open and closed lists, each saved filter view, the empty pull request and issue lists on alex/notes, a search with no results, and a 500px viewport with the sidebar collapsed. Apart from its empty state, the issue list is pixel-identical before and after.

🤖 Generated with Claude Code

@whereareiam whereareiam added the change Intentional style, template, or compatibility improvements label Oct 3, 2026
@whereareiam
whereareiam force-pushed the feat/pull-request-list-layout branch 2 times, most recently from b780bf5 to e551d8e Compare October 3, 2026 15:34
The pull request list still followed GitHub's earlier layout: a Filters
menu joined to the search field in one row with the New button, and
open and closed counts shown with icons.

It now uses the same layout as the issue list: a sidebar, a heading
with the New button, a full-width search field, and Open and Closed
with counters. Both lists share their sidebar template and their styles
instead of the pull request list keeping its own copies, which also
drops rules written for the old search markup.

The empty state of both lists follows GitHub's compact block: a 24px
muted icon, a 20px heading and one muted line with 32px of padding. It
is a compact variant of the shared empty state, not a page rule.

The saved filters from the Filters menu and the Labels and Milestones
links move into the sidebar, with "Review requested" added for pull
requests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@whereareiam
whereareiam force-pushed the feat/pull-request-list-layout branch from e551d8e to 9d17726 Compare October 3, 2026 15:43
@whereareiam
whereareiam merged commit dc6bd32 into dev Oct 3, 2026
9 of 14 checks passed
@whereareiam
whereareiam deleted the feat/pull-request-list-layout branch October 3, 2026 15:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

change Intentional style, template, or compatibility improvements

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant