From 0bc59bbae391ee45ab3a7cfb2dc703c8b27e5772 Mon Sep 17 00:00:00 2001 From: Julius Marminge Date: Wed, 2 Sep 2026 22:31:45 -0700 Subject: [PATCH] fix(web): let the pull request list use wide screens (#9351) Co-authored-by: Claude Code --- .../components/pullRequest/PullRequestRow.tsx | 49 ++++++++++++++----- apps/web/src/routes/_chat.pull-requests.tsx | 2 +- 2 files changed, 39 insertions(+), 12 deletions(-) diff --git a/apps/web/src/components/pullRequest/PullRequestRow.tsx b/apps/web/src/components/pullRequest/PullRequestRow.tsx index 2284144d7fd191b75fc389c18da5af6e8d73a9ac..6ee686a9de7e698c8a28e5c67ad8765a1723e375 100644 --- a/apps/web/src/components/pullRequest/PullRequestRow.tsx +++ b/apps/web/src/components/pullRequest/PullRequestRow.tsx @@ -16,19 +16,46 @@ import { PullRequestStateGlyph, } from "./pullRequestPresentation"; +/** + * Each slot past the first only appears once the meta line is wide enough to hold it, so a + * narrow row shows one label and a "+N" while a wide one spreads out up to three. The "+N" + * rides on whichever pill is the last visible one, and is hidden as soon as the next slot shows. + */ +const LABEL_SLOTS = [ + { pill: "", overflow: "@xl/pr-row-meta:hidden" }, + { pill: "hidden @xl/pr-row-meta:inline-flex", overflow: "@3xl/pr-row-meta:hidden" }, + { pill: "hidden @3xl/pr-row-meta:inline-flex", overflow: "" }, +] as const; + function PullRequestRowLabels({ labels }: { labels: EnvironmentPullRequestEntry["labels"] }) { - const label = labels[0]; - if (!label) return null; - const dot = pullRequestLabelColor(label.color); + if (labels.length === 0) return null; return ( - - - {label.name} - {labels.length > 1 ? +{labels.length - 1} : null} + + {LABEL_SLOTS.map((slot, index) => { + const label = labels[index]; + if (!label) return null; + const dot = pullRequestLabelColor(label.color); + const remaining = labels.length - index - 1; + return ( + + + {label.name} + {remaining > 0 ? ( + +{remaining} + ) : null} + + ); + })} ); } diff --git a/apps/web/src/routes/_chat.pull-requests.tsx b/apps/web/src/routes/_chat.pull-requests.tsx index aaf6f9a63a2f0aef65b4dd7dda3297694cfdfb60..912366d14ab47e1df7c93005531b1c35aaab0272 100644 --- a/apps/web/src/routes/_chat.pull-requests.tsx +++ b/apps/web/src/routes/_chat.pull-requests.tsx @@ -2296,7 +2296,7 @@ function PullRequestsColumn({ {/* The top padding is the shared fade band's height, the same pairing the settings page makes: at rest the controls sit fully below the mask, and only content actually passing under the chrome fades. */} - +
{searchInput} -- 2.54.0