Skip to content

fix(web): prevent pull request metadata overlap - #8790

Merged
juliusmarminge merged 17 commits into
pingdotgg:mainfrom
MatthewFeroz:fix/pull-request-row-overlap
Aug 31, 2026
Merged

fix(web): prevent pull request metadata overlap#8790
juliusmarminge merged 17 commits into
pingdotgg:mainfrom
MatthewFeroz:fix/pull-request-row-overlap

Conversation

@MatthewFeroz

@MatthewFeroz MatthewFeroz commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Pull request list before and after: overlapping metadata at branch start and the corrected responsive layout

Branch point 8f525af → current e90e9c7

Problem

Opening a pull request detail panel narrows the list. Row metadata, including the “matched in the description” hint, could paint underneath the fixed timestamp and diff-stat column. In the condensed header, an active search could also squeeze the breadcrumb until the Open filter painted underneath the search field.

Fix

Keep each row in a two-line grid: the title and timestamp share the first row, while metadata and reported diff stats share the second. Timestamp and diff stats own a non-shrinking right column. Title, repository, environment, review decision, and description-match text truncate on the left; at narrow row widths the author login folds into its avatar, with the full login retained in the tooltip and accessible text.

In the condensed header, reserve a usable floor for search and refresh, let filter labels truncate without clipping their focusable controls, and visually hide the page title while preserving its heading semantics when an active search owns the limited width. The Open filter remains fully readable in both panel states.

UI changes

Condensed header with search expanded

Before — the involvement filter and search activity collide:

Before condensed header: filter controls overlap the expanded search

After — filter controls remain separate and reachable, the search keeps a usable width, and refresh stays clear:

After condensed header: filters, expanded search, and refresh remain separated

Narrow rows with the detail panel open

Before — metadata and the description-match label paint under the fixed timestamp and diff stats:

Before narrow rows: metadata overlaps the timestamp and diff-stat column

After — the timestamp aligns with the title, reported diff stats stay on the metadata row, and lower-priority text truncates without displacing either fixed field or clipping the checks control:

After narrow rows: truncated metadata and compact match badge remain inside their column

Wide rows with the detail panel closed

Before — the row has room, but this is the unfixed baseline behavior:

Before wide rows: full description-match label in the baseline layout

After — the full description-match label returns when space is available and all metadata remains separated:

After wide rows: full description-match label and metadata remain separated

Verification

  • bun run fmt --check apps/web/src/components/pullRequest/PullRequestRow.tsx apps/web/src/routes/_chat.pull-requests.tsx
  • bun run lint apps/web/src/components/pullRequest/PullRequestRow.tsx apps/web/src/routes/_chat.pull-requests.tsx
  • bun run --cwd apps/web typecheck
  • git diff --check
  • Browser-verified with matched before/after captures for the condensed header, narrow rows with the detail panel open, and wide rows with it closed.

Built with GPT-5.6 Sol in T3 Code through the Codex harness.


Note

Low Risk
Presentation-only CSS and layout changes in the pull-requests list and header; no API, auth, or data-flow changes.

Overview
Fixes layout overlap when the PR list is narrow (detail panel open) or the condensed header search is expanded.

List rows move from a three-column shell to a two-column grid with an inner two-row grid: updated time sits on the title row (right), and diff stats sit on the metadata row (right) so they no longer stack in a fixed column that metadata could paint under. Metadata chips get stronger truncation and min-width rules; the author login can collapse to avatar-only at small widths via a new labelClassName on PullRequestActorLabel and @container/pr-row-meta. The “matched in the description” hint becomes a compact search icon + tooltip badge with responsive label text instead of a full inline string.

Condensed header tracks searchExpanded to visually hide the “Pull Requests” title (still in the DOM for accessibility) while search is open, drops the breadcrumb separator in that state, and lets filters/search shrink with truncated filter menu labels and a flexible expanded search width (min-w-24 shrink vs fixed shrink-0).

Reviewed by Cursor Bugbot for commit 92bfd4e. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Fix pull request metadata overlap in PullRequestRowImpl and pull-requests header layout

  • Reworks the row layout in PullRequestRowImpl from a 3-column to a 2-column grid, placing the updatedAt label inline with the title on the first row and the diff stat right-aligned on the second row
  • Replaces the plain matchedElsewhere text badge with an icon-and-tooltip chip using SearchIcon, with an accessible sr-only label and a responsive text span
  • Updates truncation and min-width classes across environmentLabel, PullRequestActorLabel, and reviewDecision to prevent overflow; PullRequestActorLabel gains an optional labelClassName prop for independent truncation control
  • In the pull-requests route header, the condensed breadcrumb hides the title when search is expanded, filter menu triggers accept external className and truncate long labels, and ExpandableSearch shrinks with a smaller minimum width instead of using shrink-0

Macroscope summarized 92bfd4e.

@coderabbitai

coderabbitai Bot commented Aug 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 1ed5a7bf-3299-41a3-bba4-2708878d9ca2

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:XS 0-9 changed lines (additions + deletions). labels Aug 30, 2026

@macroscopeapp macroscopeapp Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the overflow clip added to the row meta line. Details inline.

Posted via Macroscope — UI Consistency

Comment thread apps/web/src/components/pullRequest/PullRequestRow.tsx Outdated
@macroscopeapp

macroscopeapp Bot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 8180b27

Macroscope's review found this PR approvable — This is a focused UI bug fix that keeps pull-request metadata and header controls within narrow layouts without changing data, workflows, or product defaults. The implementation is limited to existing components and responsive presentation behavior.

You can add or adjust custom eligibility rules. Learn more.

@github-actions github-actions Bot added size:S 10-29 changed lines (additions + deletions). and removed size:XS 0-9 changed lines (additions + deletions). labels Aug 30, 2026

@macroscopeapp macroscopeapp Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the condensed topbar controls container.

Posted via Macroscope — UI Consistency

Comment thread apps/web/src/routes/_chat.pull-requests.tsx Outdated

@macroscopeapp macroscopeapp Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One new finding on the breadcrumb scope crumb. The previously raised min-w-0 on the header controls container (apps/web/src/routes/_chat.pull-requests.tsx:1903) is unchanged at this head, so it is not re-posted here.

Posted via Macroscope — UI Consistency

Comment thread apps/web/src/routes/_chat.pull-requests.tsx Outdated
Comment thread apps/web/src/routes/_chat.pull-requests.tsx Outdated
@MatthewFeroz
MatthewFeroz force-pushed the fix/pull-request-row-overlap branch from 1777e54 to 4ff1c86 Compare August 30, 2026 21:57
@github-actions github-actions Bot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Aug 30, 2026

@macroscopeapp macroscopeapp Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two layout/accessibility regressions in the condensed pull-requests header. The row meta-line changes look right now that the text segments truncate instead of relying on the clip.

Posted via Macroscope — UI Consistency

Comment thread apps/web/src/routes/_chat.pull-requests.tsx Outdated
Comment thread apps/web/src/routes/_chat.pull-requests.tsx Outdated

@macroscopeapp macroscopeapp Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One new finding on the latest commit: the container-query hidden on the checks indicator leaves a dangling · separator in the meta line.

Posted via Macroscope — UI Consistency

Comment thread apps/web/src/components/pullRequest/PullRequestRow.tsx Outdated

@macroscopeapp macroscopeapp Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the latest commit: the filters crumb was changed back to shrink-0, which disables the truncation this PR added to CompactFilterMenu and lets the new overflow-hidden nav hard-clip a filter trigger while the topbar search is expanded.

Posted via Macroscope — UI Consistency

Comment thread apps/web/src/routes/_chat.pull-requests.tsx Outdated

@macroscopeapp macroscopeapp Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the condensed header: the filter crumb's shrink-0 makes the new truncation path in CompactFilterMenu unreachable, so the header deficit lands as hard clipping of the trailing filter triggers instead of shortened labels.

Posted via Macroscope — UI Consistency

Comment thread apps/web/src/routes/_chat.pull-requests.tsx Outdated
Comment thread apps/web/src/routes/_chat.pull-requests.tsx Outdated
macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Aug 30, 2026

@macroscopeapp macroscopeapp Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding: removing shrink-0 from the author label lets that segment collapse below its own avatar, which re-introduces the metadata overlap this PR is fixing.

Posted via Macroscope — UI Consistency

Comment thread apps/web/src/components/pullRequest/PullRequestRow.tsx Outdated
@macroscopeapp
macroscopeapp Bot dismissed their stale review August 30, 2026 22:54

Dismissing prior approval to re-evaluate b4a2c72

macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Aug 30, 2026
@macroscopeapp
macroscopeapp Bot dismissed their stale review August 30, 2026 23:51

Dismissing prior approval to re-evaluate 9773ee2

@macroscopeapp macroscopeapp Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the row/header layout changes for UI consistency. One concrete layout regression in the new PullRequestRow grid; commented inline.

Posted via Macroscope — UI Consistency

Comment thread apps/web/src/components/pullRequest/PullRequestRow.tsx Outdated

@macroscopeapp macroscopeapp Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding in PullRequestRow.tsx: the new "matched in the description" pill can be squeezed narrower than the icon it contains, so the icon escapes the pill and overlaps its neighbour in the meta line — the same overlap class this PR is fixing elsewhere. The header changes in _chat.pull-requests.tsx now read consistently (crumb shrinks, labels truncate, title stays in the accessibility tree).

Posted via Macroscope — UI Consistency

Comment thread apps/web/src/components/pullRequest/PullRequestRow.tsx Outdated

@macroscopeapp macroscopeapp Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the new match badge: overflow-hidden stops the icon painting outside the pill, but with min-w-0 still in place the pill now has no width floor at all, so the badge clips itself away instead of clipping excess text. Details inline.

Posted via Macroscope — UI Consistency

Comment thread apps/web/src/components/pullRequest/PullRequestRow.tsx Outdated

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 1891b0e. Configure here.

Comment thread apps/web/src/components/pullRequest/PullRequestRow.tsx
@juliusmarminge
juliusmarminge enabled auto-merge (squash) August 31, 2026 02:03
@juliusmarminge
juliusmarminge merged commit cefec32 into pingdotgg:main Aug 31, 2026
25 checks passed
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Aug 31, 2026
## What's Changed
* Remove Messages Glass Lab experiment by @juliusmarminge in pingdotgg/t3code#8599
* Require human review for pull requests changing product defaults by @juliusmarminge in pingdotgg/t3code#8603
* fix(codex): avoid quadratic app-server input buffering by @juliusmarminge in pingdotgg/t3code#8605
* fix(mobile): stabilize iOS header item transitions by @juliusmarminge in pingdotgg/t3code#8607
* chore(mobile): upgrade to Expo SDK 57 by @juliusmarminge in pingdotgg/t3code#8609
* fix(mobile): harden native header toolbar items by @juliusmarminge in pingdotgg/t3code#8611
* fix(server): stop querying Claude context usage after turns by @t3dotgg in pingdotgg/t3code#8610
* chore: vouch ryanrhughes by @t3dotgg in pingdotgg/t3code#8613
* feat(web): attach PDFs, ZIPs, and other files to a turn by @t3dotgg in pingdotgg/t3code#8236
* feat(web): keybinding settings as settings rows by @StiensWout in pingdotgg/t3code#8532
* feat: let an environment publish themes as a file by @ryanrhughes in pingdotgg/t3code#8569
* fix(web): clean up provider settings list and editor by @StiensWout in pingdotgg/t3code#8504
* fix(web): keep project picker popup inside the sidebar by @SunkenInTime in pingdotgg/t3code#8627
* fix(mobile): prevent header overflow and back-button artifacts by @juliusmarminge in pingdotgg/t3code#8624
* fix(server): retry automatic thread title generation by @Bil0000 in pingdotgg/t3code#8087
* fix(client-runtime): refresh edited pull request comments by @Bil0000 in pingdotgg/t3code#8094
* fix(web): four composer spacing defects by @Bil0000 in pingdotgg/t3code#8090
* perf(desktop): skip duplicate browser updates by @Bil0000 in pingdotgg/t3code#8018
* fix(web): render nested markdown images correctly by @flamboh in pingdotgg/t3code#8501
* fix(web): unify activity logs and composer banners by @juliusmarminge in pingdotgg/t3code#8693
* fix(mobile): reduce dev-client reload and Metro startup cost by @juliusmarminge in pingdotgg/t3code#8694
* revert(web): restore previous composer banners by @t3dotgg in pingdotgg/t3code#8733
* test(web): remove tests for unreachable helpers by @t3-code[bot] in pingdotgg/t3code#8738
* feat(mobile): update tool summaries and chat transitions by @juliusmarminge in pingdotgg/t3code#8793
* feat(web): play video attachments in chat by @Bil0000 in pingdotgg/t3code#8688
* fix(web,mobile): snooze menu no longer offers the same wake time twice by @vitalyiegorov in pingdotgg/t3code#8741
* fix(grok): allow model changes in existing threads by @ahmed-besic in pingdotgg/t3code#8392
* feat(mobile): pick, share, and receive files in threads by @t3dotgg in pingdotgg/t3code#8237
* fix(web): reduce title bar scroll fade height by @maria-rcks in pingdotgg/t3code#8799
* fix(windows): strip quotes from repaired PATH by @UtkarshUsername in pingdotgg/t3code#8746
* fix(web): open agent images in expanded preview by @maria-rcks in pingdotgg/t3code#8807
* fix(git): follow repository instructions in generated source control text by @maria-rcks in pingdotgg/t3code#8804
* fix(server): stop overpricing cached Claude tokens by @SunkenInTime in pingdotgg/t3code#8806
* fix(web): keep image preview above sidebar control by @maria-rcks in pingdotgg/t3code#8811
* fix(web): keep right panel synced with agent edits by @maria-rcks in pingdotgg/t3code#8803
* fix(web,mobile): render Codex citations and artifact templates by @Yash-Singh1 in pingdotgg/t3code#8584
* chore: add Windows setup script to t3.json by @UtkarshUsername in pingdotgg/t3code#8814
* fix(web): fold interim turn responses by @maria-rcks in pingdotgg/t3code#8828
* fix(web): use circle alert for failed tool calls by @maria-rcks in pingdotgg/t3code#8840
* feat(mobile): add offline iPhone voice input by @t3dotgg in pingdotgg/t3code#8614
* fix(web): prevent pull request metadata overlap by @MatthewFeroz in pingdotgg/t3code#8790

## New Contributors
* @ryanrhughes made their first contribution in pingdotgg/t3code#8569
* @ahmed-besic made their first contribution in pingdotgg/t3code#8392
* @MatthewFeroz made their first contribution in pingdotgg/t3code#8790

**Full Changelog**: pingdotgg/t3code@v0.0.36...v0.0.37

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M 30-99 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants