Repository navigation
UI Consistency: 1 issue found
apps/web/src/components/pullRequest/PullRequestRow.tsx:129 — className="hidden @xs/pr-row-meta:inline-flex" on PullRequestChecksPopover CSS-hides a PullRequestMetaLine segment. The meta line only omits its · separator when a segment is nullish, so below the @xs container width the row renders a trailing separator with nothing after it (the checks indicator is the last segment). Suggested fix: drop the class — with the sibling text segments now truncating, the line's min-content is small enough that the shrink-0 14px trigger is no longer clipped by overflow-hidden.
Previously reported findings that remain unaddressed (not re-posted): the min-w-[8.125rem] floor on the condensed control group and the unmounted <h1>/aria-current crumb while the topbar search is expanded, both in apps/web/src/routes/_chat.pull-requests.tsx.
Details
Note
Your check run agent prompt is: .macroscope/check-run-agents/ui-consistency.md
More information about how Check Run Agents work can be found in our Help Center.
Reviewed the delta since the last run (4ff1c86..7d35a9b): the checks popover gained a container-query hidden class, and overflow-hidden moved off the filter breadcrumb item to the breadcrumb nav.
Verified:
@container/pr-row-metais applied to a grid item, so it is blockified andcontainer-type: inline-sizedoes apply; the named query resolves.cnmerge order leaveshidden @xs/pr-row-meta:inline-flexwinning over the primitive's baseinline-flex, so the segment is genuinelydisplay:nonebelow 20rem.PullRequestMetaLine(pullRequestPresentation.tsx:406-431) inserts a separator before every segment after the first, based onChildren.toArray, which cannot see CSS visibility — hence the stray dot.- The filter menu triggers now truncate (
min-w-0+truncatelabel,shrink-0chevron), so moving the clip up to thenavno longer hard-clips an unreachable trigger; the earlier breadcrumb finding is addressed.
🔍 Agent activity — 11 tool calls
💭 I'm checking the current state of the code at the head commit, 7d35a9b, to see what's changed since the earlier flagged commit 4ff1c86.
1. git_tools — 4ff1c86..7d35a9b
2. browse_code — apps/web/src/components/pullRequest/PullRequestRow.tsx
💭 I'm checking the route file to see if the previously flagged issues—the
min-w-[8.125rem]comment and the h1 unmounting behavior—are still present in the current head, since I don't want to duplicate comments on findings already raised. Since the prior run's flagged commit (4ff1c86) doesn't seem to exist anymore, likely due to a force-push, I want to check the PR's commit history to understand what actually changed between that run and the current head.
3. github_api_read_only — repos/{owner}/{repo}/pulls/{pull_number}/commits
4. browse_code — apps/web/src/routes/_chat.pull-requests.tsx
💭 The last commit "hide clipped pull request controls" seems to be the relevant change since the earlier commit, so I'm going to diff between those two commits to see exactly what changed.
5. git_tools — 4ff1c86..7d35a9b
6. browse_code — apps/web/src/routes/_chat.pull-requests.tsx
💭 The latest commit hides the checks popover entirely below the @xs breakpoint instead of letting it clip, directly addressing my earlier concern about clipped interactive content. But this trades clipping for a different issue—narrow columns now lose the checks status information altogether, which I'm not sure is fully acceptable either. I need to verify PullRequestChecksPopover actually accepts a className prop, since if it doesn't, this change would be a no-op. I'm also now looking at the removal of overflow-hidden from the WorkspaceBreadcrumbItem, which means content there could now overflow visibly instead of being clipped—I need to check how that component behaves without the constraint. The tooltip trigger span pairs sr-only descriptive text with an aria-hidden icon, matching the existing provider icon tooltip pattern elsewhere in the file, though the sr-only text duplicates the popup content somewhat—not a major concern. More importantly, I want to check whether hiding the checks indicator strips away accessibility or functional information, which means I need to look closer at PullRequestChecksPopover.
7. browse_code — apps/web/src/components/pullRequest/PullRequestChecksPopover.tsx
8. git_tools — WorkspaceBreadcrumbItem|function WorkspaceBreadcrumb
9. browse_code — apps/web/src/components/WorkspaceBreadcrumb.tsx
💭 I'm tracing how the shrink override propagates through the breadcrumb item's flex children—since overflow-hidden was removed, the item can now shrink freely, with the first filter menu staying fixed-width while later items truncate via min-w-0. The truncated span itself resolves to a zero minimum width because of its overflow:hidden property, so it can compress fully even without an explicit min-w-0, letting the trigger and its parent flex containers shrink as needed within the nav's overflow-hidden boundary. I'm now looking at whether the shrink-0 on the first menu item risks clipping the host menu at extreme widths, but since the title crumb unmounts when the search expands, the remaining shrinkable items absorb the deficit reasonably well. Turning to the latest commit, I'm checking a new className combining hidden and inline-flex on the checks popover, and tracing how tailwind-merge resolves the conflict between those two display-related classes given their ordering in the cn() call. I confirm tailwind-merge drops the plain inline-flex in favor of hidden since they're in the same conflicting group, but keeps the variant-prefixed @xs/pr-row-meta:inline-flex intact since it has its own breakpoint scope, so the checks indicator stays hidden until that container query kicks in. I'm now verifying that @xs maps to 20rem in Tailwind v4's default container size scale, and thinking through whether the pr-row-meta container could realistically shrink below that threshold in a narrow list column when the right panel is open. Doing the math on a 400px list column, subtracting gaps, the time column, and padding, I land around 276px for the middle section, well under the 320px @xs threshold, meaning the checks status and description label collapse away entirely in a very common panel-open layout, which strikes me as a real usability gap since that's the only CI status affordance in the row. What bugs me is the truncation priority: the row will happily truncate author name, environment, and repo text but hide the fixed-size 14px checks icon outright. Since the guidance calls for preserving accessibility and responsive geometry, I think this is worth flagging — keep the tiny shrink-0 checks icon always visible and let the already-truncating meta text absorb the space deficit instead. But wait, the original clipping issue was overflow-hidden cutting it off, and PullRequestMetaLine still has overflow-hidden on that line, so I need to check what's happening there.
10. git_tools — PullRequestMetaLine|PullRequestActorLabel
💭 I realize this creates a real visual bug: since PullRequestMetaLine uses Children.toArray to insert separator dots between visible children, hiding the checks popover with CSS still counts it as a rendered child, so a dangling
·separator remains at narrow widths even though nothing follows it. The fix isn't trivial because container-query visibility happens purely in CSS, so PullRequestMetaLine can't know in JS whether the checks segment is actually visible. The cleanest solution is to teach the meta line/segment abstraction to propagate the same responsive hidden class to its separator, so the dot disappears alongside the segment it precedes. Confirmed checks is last in the segments array, so hiding it leaves a trailing separator dot exposed — that's a real bug to fix. But now I'm second-guessing the container query setup itself: the@container/pr-row-metaclass sits on a<span>, which is display:inline by default, and per spec, size containment doesn't apply to inline-level non-atomic elements. That means this container query might not even be taking effect as intended, which could be a more fundamental issue than the stray dot. I need to check whether the span actually gets an inline display, though — its class list has no explicit display utility, but it's sitting inside a grid, so its computed display might get blockified anyway, which would let containment apply after all. The tooltip trigger uses a non-focusable span with sr-only text, so keyboard users can't tab to it but screen readers still get the label — a minor accessibility gap, but not something new to flag since the sr-only text covers the content. I'm noting the two previously flagged issues (min-w on the header, h1 unmount) shouldn't be repeated, and the actual new finding for this pass is the stray separator dot appearing when the checks popover gets hidden via CSS. Checking how tailwind-merge resolves conflicting display classes,hiddencorrectly overridesinline-flexsince it comes later in the class string, withshrink-0staying intact from the base styles. I'm also tracing whether removingoverflow-hiddenfrom the breadcrumb item causes any new clipping regression now that the parent nav handles overflow — walking through the flex layout when the title crumb unmounts during search expansion, it seems like clipping still happens at the nav level as before, so behavior is essentially unchanged, though I want to double-check the ol child's overflow behavior more carefully. My earlier concern about focusable menu triggers causing scroll-into-view issues during clipping is now addressed since overflow moved to the nav and children truncate properly, so I don't need to re-flag that. I'm now thinking through the best fix to suggest: simply reverting the className change would reintroduce the clipping problem since the meta line's minimum content width can still exceed the container with many segments, meaning overflow-hidden would just clip it again rather than truncating gracefully. I want a fix that hides the separator alongside the trigger rather than leaving a stray dot. I'm weighing options — pushing the responsive hiding logic up a level so segment and separator drop together, using a CSS sibling selector trick to hide the preceding dot when the checks trigger is hidden, or reordering elements — but each has tradeoffs, particularly around fragility or not solving the stray-separator problem when the hidden element sits in the middle of the sequence. I'm reconsidering the CSS relationship problem since the separator sits before the segment, making sibling selectors unreliable. A cleaner fix might be to have PullRequestMetaLine propagate the same responsive hidden classes onto its separators, treating it as a small but real contract change. I keep circling other options—wrapping the whole trailing group, moving the checks indicator elsewhere—but they all feel like overkill for this problem. The cleanest fix is probably to not have the call site CSS-hide a meta-line segment directly, since the line component itself owns separator logic for nullable segments; if narrow-width hiding is genuinely needed, it should live there instead. Since truncatable segments can collapse to zero width, the line's minimum content is really just the shrink-0 items, which stay comfortably under any realistic container width—so clipping essentially never happens and the hidden class is just adding an unnecessary stray dot. That confirms removing the className is the right fix, and it's a clean inline suggestion touching only the diff lines. Now I'm drafting the actual review comment: the root issue is thatPullRequestMetaLinerenders separators between children and only skips one when a segment is null, but CSS-hiding a segment (rather than removing it from the tree) still counts it as present, so below the@xsbreakpoint a trailing dot appears with nothing after it since the checks indicator becomes invisible but not absent. I'm also verifying that the checks popover is always the last segment, and confirming thatChildren.toArraycorrectly drops null/false children when using conditional rendering — this holds, so the fix is simply to remove the offending class and let the suggestion delete that line before posting the comment.
11. modify_pr — One new finding on the latest commit: the container-query hidden on the checks indicator leaves a dangling · separator in the meta line.
Agent Credits: 85 credits
Token usage: 16 uncached input · 289,286 cache-read input · 61,095 cache-write input · 10,998 output
Agent Credits may also include non-token charges from external tools such as web research.