fix(web): prevent pull request metadata overlap - #8790
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Warning Your free Security trial is over. An organization admin can activate Security or dismiss this notice. Comment |
There was a problem hiding this comment.
One finding on the overflow clip added to the row meta line. Details inline.
Posted via Macroscope — UI Consistency
ApprovabilityVerdict: Approved at 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. |
There was a problem hiding this comment.
One finding on the condensed topbar controls container.
Posted via Macroscope — UI Consistency
There was a problem hiding this comment.
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
1777e54 to
4ff1c86
Compare
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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
Dismissing prior approval to re-evaluate b4a2c72
Dismissing prior approval to re-evaluate 9773ee2
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ 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.
## 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

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:
After — filter controls remain separate and reachable, the search keeps a usable width, and refresh stays clear:
Narrow rows with the detail panel open
Before — metadata and the description-match label paint under the fixed timestamp and diff stats:
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:
Wide rows with the detail panel closed
Before — the row has room, but this is the unfixed baseline behavior:
After — the full description-match label returns when space is available and all metadata remains separated:
Verification
bun run fmt --check apps/web/src/components/pullRequest/PullRequestRow.tsx apps/web/src/routes/_chat.pull-requests.tsxbun run lint apps/web/src/components/pullRequest/PullRequestRow.tsx apps/web/src/routes/_chat.pull-requests.tsxbun run --cwd apps/web typecheckgit diff --checkBuilt 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
labelClassNameonPullRequestActorLabeland@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
searchExpandedto 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 shrinkvs fixedshrink-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
PullRequestRowImpland pull-requests header layoutPullRequestRowImplfrom a 3-column to a 2-column grid, placing theupdatedAtlabel inline with the title on the first row and the diff stat right-aligned on the second rowmatchedElsewheretext badge with an icon-and-tooltip chip usingSearchIcon, with an accessible sr-only label and a responsive text spanenvironmentLabel,PullRequestActorLabel, andreviewDecisionto prevent overflow;PullRequestActorLabelgains an optionallabelClassNameprop for independent truncation controlclassNameand truncate long labels, andExpandableSearchshrinks with a smaller minimum width instead of usingshrink-0Macroscope summarized 92bfd4e.