Repository navigation
UI Consistency: 1 issue found
apps/web/src/components/pullRequest/PullRequestRow.tsx (line 75) — the new "matched in the description" pill uses min-w-0 with a shrink-0 icon and no clipping of its own, so when the meta line is narrow the icon paints outside the pill's rounded border and overlaps the following · separator and #number. Below the @xs container width the label is display:none, leaving the pill a ~22px flex base; proportional flex shrink squeezes it to ~4-9px on a ~200-300px meta line while the 12px icon keeps its width. Suggested fix posted inline: add overflow-hidden to the pill (or floor it at the icon with min-w-6).
No other findings. The header changes in apps/web/src/routes/_chat.pull-requests.tsx are consistent with the shared primitives: the filters crumb now overrides the primitive's shrink-0 with shrink so header deficit reaches the CompactFilterMenu labels that gained min-w-0 + truncate, the right-hand control group keeps its automatic min-content floor (no min-w-0), and the title crumb is now sr-only rather than unmounted, so the <h1> and aria-current="page" survive an expanded search.
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.
Verification performed
- Read the head versions of
PullRequestRow.tsx,_chat.pull-requests.tsx(condensed header region),pullRequestPresentation.tsx(PullRequestMetaLine,PullRequestActorLabel,PullRequestDiffStat),PullRequestChecksPopover.tsx,WorkspaceBreadcrumb.tsx,WorkspacePageHeader.tsx. - Confirmed
cn/tailwind-mergeordering: caller classes are merged last in all touched primitives, soshrinkoverrides the breadcrumb item'sshrink-0,min-w-4overrides the actor label'smin-w-0, andsr-onlycomposes with the item'sflex(absolutely positioned, out of flow, contributes no width and takes no flex gap). - Traced flex shrink distribution in the meta line and in the condensed header to identify which box absorbs a deficit and whether it clips, truncates, or overflows. Only the matched-in-description pill can overflow its own border box; the checks popover trigger only starts to be clipped by the meta line's
overflow-hiddenbelow ~155px, after every truncatable segment has reached its floor, which is not a change introduced by the current head. - Checked previously flagged items and confirmed they are addressed at head:
items-baseline→items-center, unmounted<h1>→sr-only,min-w-[8.125rem]removed,min-w-0on the header control group removed, the CSS-hidden meta segment replaced by an always-rendered pill (soPullRequestMetaLine's separator contract still holds viaChildren.toArray). - Other consumers of
PullRequestMetaLine/PullRequestDiffStat(detail panel, timeline, code tab) are unaffected: the newclassNameusage passes only contextual grid placement and typography, which matches the existing call-site convention.
🔍 Agent activity — 11 tool calls
💭 Let me check the current state at head commit d5a2eb7, since prior runs flagged many issues and I need to see if new ones exist in the diff.
1. browse_code — apps/web/src/components/pullRequest/PullRequestRow.tsx
2. browse_code — apps/web/src/routes/_chat.pull-requests.tsx
💭 I'm checking whether previously flagged issues were resolved: the items-baseline change to items-center at 9773ee2 looks addressed, and I'm now verifying the shrink-0 concern on PullRequestActorLabel from 7024f05 against the current min-w-4 usage. The separator issue from 7d35a9b appears resolved since the matchedElsewhere chip always renders with its icon visible even when text is hidden. The shrink-0 crumb concern from f60c816/c2478fb also seems deliberately handled now, with the state menu fixed and other crumbs shrinkable via min-w-0 and truncate, and the h1 unmounting issue from 4ff1c86 is fixed by using sr-only instead of removing the element. With most prior issues addressed, I'm moving on to check WorkspaceBreadcrumb for any remaining concrete problems at head. I want to verify whether sr-only applied to the current breadcrumb item behaves correctly when merged with the component's className, and whether it's applied to an li element appropriately. I also need to check if PullRequestDiffStat accepts a className prop, and I'm considering how container-type: inline-size on PullRequestMetaLine interacts with its flex layout and containment behavior in the block direction. I'm also revisiting the earlier concern about overflow-hidden hard-clipping interactive content in the meta line, specifically whether the checks popover trigger could still get clipped when segments are shrink-0 and space runs narrow.
3. browse_code — apps/web/src/components/pullRequest/pullRequestPresentation.tsx
4. browse_code — apps/web/src/components/pullRequest/PullRequestChecksPopover.tsx
💭 I'm checking the PullRequestActorLabel styling—since min-w-4 overrides min-w-0 in the merged classes, the element can shrink down to just 16px, which matches the avatar size and would truncate the login text entirely. Working through the flex math further, the avatar (16px) plus gap (6px) plus the truncatable span already exceed that 16px floor, so the avatar could visually overflow past the container edge and collide with the separator dot next to it. I'm trying to figure out whether this is the same overflow issue that was flagged in an earlier review comment, since switching from shrink-0 to min-w-4 doesn't seem to fully prevent it. No visible paint occurs, so no overlap results — this is really just an aesthetic tradeoff where the login text disappears without ellipsis rather than a hard bug. Checking the diffstat component, it correctly returns null when there are no additions or deletions, so the grid handles that fine. Now I'm looking at the inner grid structure where time sits in row 1 and diffstat in row 2 of the same auto-sized column, meaning that column's width is determined by whichever content is wider between the two rows. The row also uses content-visibility with a fixed intrinsic block size, and since it's still rendering two lines like before, the height should remain consistent. I'm also checking that changing the outer grid from three columns to two while keeping the gap doesn't introduce spacing issues — that looks fine. For the title row, the time column sizes to its content since it's auto-width and nowrap, which should behave correctly. Now I'm considering the container query setup on the meta line component — since container-type: inline-size establishes containment, that means the element's own inline size can't depend on its children's content, which could affect how the layout resolves. Since the track sizing uses minmax(0,1fr), the grid doesn't need to consult the meta line's minimum content width, so containment shouldn't cause any sizing problems there. The main thing to verify next is how the @xs breakpoint behaves under Tailwind v4's container query syntax. The 320px threshold means the "matched in the description" text only appears once the meta line container is wide enough, and since that container spans the full column, it's usually fine. I'm also checking the tooltip trigger markup — it uses a screen-reader-only label plus an aria-hidden icon, with the popup repeating "Matched in the description," which could cause a minor duplicate announcement but isn't a major issue. I'm now considering that placing this chip first in the meta line shifts its position relative to the
#numbersegment, altering the original ordering. I'm also worried about a layout edge case: since the chip isn'tshrink-0and usesmin-w-0, it could shrink past the width of its icon under extreme pressure, causing the icon to visually overflow the chip's rounded border and overlap the separator dot — a real but unlikely overlap risk. I'm now working through how flex-shrink is distributed across the meta line's segments to see which one absorbs space first when the container narrows. I'm worried the chip could shrink enough that its icon overlaps neighboring elements like the separator dot or #number text, since overflow-hidden on the meta line only clips at its own edges, not internally between siblings. Whether this overlap actually happens depends on how the shrink deficit gets distributed proportionally across items' base widths — the chip's small base width (icon plus padding) means it absorbs a small shrink share, but I need to check what happens at narrower container widths. Adding shrink-0 to the chip would fix the icon overflow but then the chip won't shrink at all, consuming space it shouldn't — and adding overflow-hidden instead just clips the icon differently. Neither is a clean fix, so I should look for a stronger, more concrete finding elsewhere. Now I'm checking the header changes in the pull requests file — specifically whethersr-onlyapplied to a breadcrumb item inside a flex list would take it out of flow since sr-only sets absolute positioning, which could affect the layout of the other list items. Since it's out-of-flow, gaps and widths from siblings shouldn't be affected, so this seems fine, and I want to check the WorkspaceBreadcrumb components themselves and the shrink behavior on the container next to it. I want to check the ExpandableSearch container's min-width against its inner search input to see if it clips when squeezed—need to look at that searchInput definition to be sure.
5. browse_code — Show the full source of WorkspaceBreadcrumb, WorkspaceBreadcrumbItem, WorkspaceBreadcrumbSeparator and WorkspacePageHeader components in apps/web/src (file path and code), including how className is merged and what element/flex layout each renders.
6. git_tools — searchInput=|const searchInput|searchInput:
💭 I'm checking that tailwind-merge treats
shrinkandshrink-0as the same conflict group, so when the filters crumb passesshrinkit correctly overrides the baseshrink-0. The title crumb, being the current one, usestext-foregroundand has no shrink-0 by default, so it keeps normal shrink behavior. For the searchExpanded state, applyingsr-onlydoesn't conflict with the baseflexclass since they're in different utility groups, so the element stays flex-displayed but visually hidden via absolute positioning. Since that absolute positioning resolves relative to the header (which is the nearest positioned ancestor) with no explicit offsets, the tiny 1px element stays in its normal flow position inside the overflow-hidden nav, so it should remain properly clipped and invisible. I'm also considering whether hiding the title crumb visually while expanding search introduces a real accessibility tradeoff—it's intentional since screen readers still pick it up, matching the earlier review's request to hide visually rather than unmount. Now I want to walk through the actual flex layout math for the condensed header to verify the overlap issue is truly resolved and no new overlap appears with the title bar controls and nav sharing the gap-3 spacing. Tracing through how the nav crumbs and filter items shrink and truncate, then how the right-side control group's minimum width interacts with the expandable search's collapsed size. So the group shrinks until it hits its 130px floor, then the nav absorbs the rest of the deficit—meaning both the breadcrumb and search input can end up truncated. The search input at 96px should still be usable since it's just placeholder text truncating, and the title/filter crumbs already have truncate classes to handle narrow widths. This all seems acceptable for the header layout. I'm now wondering about the nav's overflow-hidden clipping menu popups or focus rings, though menus are likely portaled so they escape clipping—focus rings might get slightly cut off at the edges, but that's minor. Turning to the row component, I want to check whether PullRequestMetaLine introduces any actual regression in PullRequestRow's behavior. The meta line's container-type creates layout containment, which shouldn't interfere with Base UI popovers since those portal to the document body rather than staying inside the containing element. Combined with content-visibility on the row, this all seems compatible with container queries without breaking anything. I'm also revisiting the overflow-hidden clipping concern from an earlier run — since the checks popover trigger sits at the end and is shrink-0, if all the shrinkable segments truncate to zero width under extreme narrowness, the fixed-width elements (separators, the #number group, checks icon) could still exceed the available space and get clipped by overflow-hidden. I need to figure out whether this is actually worse than the prior behavior before this change. Since overflow-hidden was newly added by this PR, this clipping risk is genuinely introduced by the diff, but the author already responded to the earlier flag by switching segments to truncate/min-w-0 instead of shrink-0, which substantially reduces the odds of this happening. Given that mitigation, the residual risk only shows up at extremely narrow widths, so I don't think this warrants re-flagging — I should move on to look for something more clearly broken, starting with the container query behavior. Checking the Tailwind v4 breakpoint thresholds, the text label should typically show since the meta line width usually exceeds 320px in normal list columns, so that seems fine. I'm now wondering whethercontent-visibility: autoon off-screen rows could interfere with how container queries evaluate width when a row is skipped for rendering. Now I'm double-checking the row height math againstcontain-intrinsic-block-size:54px—comparing the old two-line layout against the new inner grid with its title/time row and meta/diffstat row, factoring in the small chip's line-height from the arbitrary 10px text size to see if the total still lands around 54px. That gives roughly a 2px mismatch versus the intrinsic size estimate, but since this only affects offscreen rows and the chip's structure is unchanged from before, it's not really a new finding. I'm double-checking whether the list is virtualized, but content-visibility:auto suggests it isn't. Checking the diff stat's column placement and width — the time label and diff stat share the auto-width second column, with typical widths like "3 days ago" and "+1,234 -567" fitting comfortably. I'm now honing in on a real alignment question about how the row-one time label's vertical centering interacts with the fixed row height. Since each row forms its own grid, there's no cross-row alignment issue even though the right column width now varies per row — that matches the prior behavior too. I'm also checking that the diff stat chip's tooltip trigger, nested as a span inside the row's button, doesn't create invalid interactive nesting given its accessibility markup with sr-only and aria-hidden duplicates. But now I realize a real accessibility issue: since the tooltip trigger isn't focusable, keyboard users never see it on focus, only on hover. And since the chip lives inside the row button, its sr-only text gets folded into the button's accessible name by the browser's name computation — which could produce a confusing or duplicated label for the whole row. I'm also checking themin-w-4behavior on PullRequestActorLabel via twMerge — with min-w-4 overriding min-w-0, the actor box shrinks so tightly that the avatar essentially fills it and the truncated login text gets squeezed to near-zero width, which could make it effectively invisible rather than a real overflow bug. Checking the verdict and environment label spans confirms they're already safe with truncate and min-w-0. Now I'm shifting focus to whether moving the time label and diff stat inside the middle column's grid could regress row layout for long titles — title truncation and time nowrap both seem to hold up, but I want to trace how the meta line interacts with the column tracks. The container's inline-size containment forces its intrinsic min/max-content to zero, so the meta line doesn't affect the col1 track sizing, which stays a flexible minmax(0,1fr). The diffstat sits in col2 row2 justify-self-end, sharing that column's track with the time label in row1, so there shouldn't be a conflict there. I want to double-check the header for anything introduced by the most recent commit, so I'm going to look at the diff of the latest commit to see exactly what changed.
7. git_tools — e09b88b..d5a2eb7
💭 The latest commit, "center pull request row fields," likely swapped the alignment class from items-baseline to items-center. I want to check the diff on the last couple commits to confirm.
8. git_tools — d5a2eb7
9. git_tools — 9773ee2
💭 I'm noticing that in commit 9773ee2, the container query name moved from the middle wrapper span to the meta line itself, and the wrapper lost its overflow-hidden in favor of a grid layout. Since the container is now the meta line whose width roughly matches the column width, that changes how the descendant's container-based breakpoint behaves. I'm also checking the effects of inline-size containment on the grid item—since the outer column uses minmax(0,1fr) with a definite width from the full-width row, intrinsic sizing shouldn't be an issue. Then I turn to the items-center change on row1: since the title uses text-sm (20px line height) and the time uses text-xs (16px line box), centering would vertically align the smaller time box within the taller title's line height. Comparing that to the old flex-col right column, this new centered alignment means the time's baseline won't quite match the title's baseline, though the previous review just asked to fix baseline misalignment and center is a reasonable resolution—not something worth flagging further. Row2 is similarly fine since items-center just centers the diffstat against the meta line's content height rather than stretching it. Now I'm shifting to look for a genuinely concrete issue, focusing on the checks popover clipping and chip overflow behavior, particularly examining how the hidden aria span with truncate and container query classes handles overflow. I want to test whether the chip's truncation actually breaks down under a realistically narrow list column, since I noticed the column container uses min-w-0, meaning it could shrink significantly if the layout allows a resizable panel. I'm second-guessing whether I'm overanalyzing this, but I want to check one more real candidate: since the chip is now the first child in the meta line, and PullRequestMetaLine's separator logic treats index 0 specially, this positioning could break the expected separator contract between segments. Checking the avatar image sizing—that fits fine within its container. I keep ruling out candidates: the sr-only breadcrumb item isn't a bug, the comment about page title visibility is just documentation not a real issue. Now I'm looking at whether the CompactFilterMenu's shrink-0 on the first menu causes uneven truncation behavior compared to the other menus, checking if the parent list item's min-w-0 actually resolves this. With shrink-0 fixed on the first trigger, the space deficit falls entirely onto the second and third menus, which do truncate. But since the list item itself lacks overflow-hidden, the nav's overflow-hidden is what ultimately clips things—meaning the third menu could get cut off and become inaccessible to users. This mirrors a truncation issue flagged in earlier review threads, which the current author has partially fixed by making the crumb shrink and adding truncate styling; I'm now calculating whether the residual minimum widths of the second and third triggers (accounting for padding, the truncated span, and the fixed-size chevron icon) still leave room for both to render without being clipped. Adding up the other fixed elements in the header — sidebar toggle, gaps, search bar minimum width, refresh button, right panel control — I'm getting roughly 234px of fixed width, so a narrow column (say 300px) would leave the nav with only about 66px, well under the breadcrumb's 132px min-content. That means the host menu could genuinely get clipped and unreachable if the column shrinks that far, so I want to check whether the panel layout actually allows the column to get that narrow. Then I notice this clipping isn't strictly new: before this PR, the nav itself had no overflow-hidden, but the filters crumb did — so the crumb was already capable of being hard-clipped, just at a different layer. The PR just moved where the overflow-hidden lives, from the crumb to the nav, meaning the underlying clipping behavior is pre-existing rather than a new regression. Now I want to check whether the right-hand controls, like the refresh button and the collapsed search button, have shrink-0 so they don't get squished when the group is allowed to shrink — I need to look at the Button primitive and PullRequestRefreshControl to confirm. Since the group only has
shrinkwithoutmin-w-0, its default min-width:auto still enforces a min-content floor, so its items can't actually be squeezed below their natural size. That means the entire shrinkage burden falls on the nav, which does have min-w-0, so the nav's truncation logic is what determines whether content gets clipped once it runs out of truncation capacity. So really this trades an overlap bug for a clipping bug in the extreme narrow case, though the added truncation does help moderate cases. That's not a particularly strong new finding since it's been covered before, so I should look for something else entirely that hasn't been discussed yet. I'm now checking whether other similar row components—like a search result row or thread panel row—share this same three-column layout and would need consistent updates alongside PullRequestRow.
10. git_tools — PullRequestDiffStat|PullRequestMetaLine
💭 I'm considering whether moving the container query class onto PullRequestMetaLine itself could be genuinely broken — since it's a flex container with min-w-0, applying inline-size containment there interacts with its own layout sizing in a way that's worth scrutinizing. Chasing down potential issues: the container also becomes a containing block for absolutely positioned descendants, which would affect the sr-only span inside the chip. But since it's out-of-flow and clipped to 1px, it doesn't actually change any visible layout, so this path seems fine too. Now I'm checking the new grid layout for correctness — comparing how diff stat and time align in col2 versus the old flex column design, and they seem equivalent since both used gap-3 and items-end/justify-self-end similarly. I'm also confirming that PullRequestDiffStat's text styling and tabular-nums are self-contained, so removing inherited classes from the wrapper shouldn't matter, then considering what happens visually when the diff stat renders null and the time is left alone in that cell. Given the format requires JSON output per the schema rather than a plain "All clear" string, I'm leaning toward using "All clear" as the title or summary field if no real issues turn up, while still double-checking a couple of suspicious code spots before finalizing. Specifically, I'm looking closely at the breadcrumb item wrapping an h1 with truncate, checking what happens to it when the sr-only class is conditionally applied during search expansion. Now I'm working through how sr-only interacts with the element's other classes via tailwind-merge, confirming it doesn't conflict with the flex display and just makes the element visually hidden while remaining accessible. I'm also considering
min-w-4on the actor label — when shrunk to 16px, the login text becomes invisible with no ellipsis, but the tooltip and avatar still provide some context, so this feels like acceptable graceful degradation rather than a real bug. CheckingshowProjectTitle's truncate span forentry.repository— it lacksmin-w-0, but sincetruncatesets overflow to hidden, the flexbox spec's automatic minimum size rule kicks in and reduces it to zero anyway, so this should behave correctly without needing an explicitmin-w-0. Now I'm tracing a real overlap bug: the chip hasflex min-w-0(min-w-0 explicitly set), and when it's squeezed below roughly 20px width, its icon plus text content can paint outside the chip's rounded border, overlapping the·separator that follows it. This regression traces back to commit 9773ee2, which replacedshrink-0withmin-w-0on that chip — so I need to work out whether a narrow meta line width actually makes this squeeze scenario reachable in practice. Adding the checks icon and separator gaps, total base width comes to about 572px, so at a 320px container I need to shrink roughly 252px from the flexible items. Distributing that shrinkage proportionally across chip, repository, actor, and verdict, the chip ends up absorbing the most, shrinking down to about 61px while staying visible but truncated. At an even narrower 200px container, the chip's text disappears entirely once we're below the 320px breakpoint, dropping its base width to just 22px. Recalculating the total base and deficit at this size, the proportional shrink pushes the chip toward an impossibly small width, which means I need to account for minimum floors and iterate the shrink calculation rather than doing it in one pass. I'm checking whether a 200px meta line is actually realistic — the list column narrows when the detail panel is open or the window is small, and doing the math on the row's other elements, a column around 324px wide would produce this overlap. That's plausible on a laptop-sized window with the right panel open, so this isn't just a theoretical edge case. The other segments in the row clip their own text fine, but the chip's icon escapes its bounding box because ofmin-w-0added on the chip in this diff, which is a real regression introduced here. I'm now thinking about the smallest fix — reintroducingshrink-0would prevent the label from shrinking (which was the original complaint), so a better approach might be to dropmin-w-0entirely and rely on the natural min-content floor of icon plus padding, since the truncated text itself contributes zero to that minimum. Working through the math, the chip's automatic minimum width withoutmin-w-0should land right around the icon and border size, meaning it shrinks down to just the icon without ever cutting into it — while the label truncates normally. That looks like exactly the clean, minimal fix I want, changing just one line on the diff. I'm working through whether overflow:hidden's automatic minimum size of 0 actually clamps down the text span's min-content contribution, since clamping by a min of 0 wouldn't reduce a larger min-content value anyway—that's only a lower bound, not an upper one. Actually this is the classic issue: without min-w-0, nested flex children can't shrink below their content size, which breaks truncation and forces sibling segments to shrink instead. Since the label is hidden below the xs breakpoint anyway, the chip's floor would just be 22px there — so the real question is what happens above that breakpoint where the label is visible. Clipping the icon inside the pill isn't ideal either, but at least it avoids overlap. I'm considering a cleaner fix: setting a fixed minimum width on the chip sized to fit just the icon plus its padding and border, since Tailwind uses border-box sizing globally, so something likemin-w-5(20px) would need to account for that. Actually the simplest solution is to just swapmin-w-0foroverflow-hiddenon the chip itself, since overflow-hidden implicitly gives it a min size of zero while also clipping its own content — so truncation still works and it never bleeds into neighboring elements, even if the icon gets clipped under extreme squeezing. I want to sanity-check whether this overlap is really worth flagging given how many review rounds this PR has already been through, but since it matches the exact bug class the PR claims to fix and stems from a changed line, it seems legitimate even though triggering it needs an unusually long meta line. Let me verify the flex-shrink math behind this, since that's really the core of the argument. Running the numbers with a 200px width, an 448px base total, and a 248px deficit against a 309px shrinkable base, one shrink pass removes about 80% of each shrinkable element's base size — leaving the chip around 4.3px, well within bounds, so the icon ends up compressed to roughly 12px. That icon overflows about 10px past the separator into the repo number at this width. Checking W=260 (deficit 188, ratio 0.608) the icon still overflows by roughly 7px, but at W=320 the label appears and the chip's base jumps enough that it fits comfortably. So there's a band from about 180-319px where the icon overlaps its neighbor — right in the narrow state the PR is targeting. I also note a jump at the @xs boundary that's fine, and confirm the actor avatar still fits at 18px even with the login text gone. This points to flagging the chip's min-w-0 on line 75, and I want to double check whether overflow-hidden on the meta line is clipping the checks trigger at these same widths. Working through the flex-shrink math: as long as no item hits its floor above its fair share, the total sums to exactly W and nothing clips. At W=180, the actor gets frozen at its 16px floor since its computed share falls below that, so the remaining deficit redistributes among the other items — and everything still fits. Clipping only kicks in once every shrinkable item bottoms out at its floor: floors sum to 155px total. So below roughly 155px width, that's where the checks icon actually starts getting clipped. Given that, I'll write up the fix as a comment: swapmin-w-0foroverflow-hiddenon the chip trigger span. I want to verify this doesn't break truncation — since the chip is a flex container, its automatic min-width becomes 0 once overflow isn't visible, so the label can still truncate correctly, and now the icon gets clipped inside the pill boundary instead of overflowing out. Keeping bothmin-w-0andoverflow-hiddentogether is harmless and arguably clearer, so I'll suggest addingoverflow-hiddenalongside the existingmin-w-0rather than replacing it. I'm also weighing whether clipping the icon is actually the right outcome versus giving the chip a floor width so the icon never gets clipped and any deficit instead falls onto the truncatable text next to it, which already has ellipsis affordance — that feels like better UX, though it introduces a magic number tied to icon size plus padding. I'll mention both options but lead with the minimaloverflow-hiddenfix as an inline suggestion on the render span, and I need to check which line number that corresponds to in the diff hunk. I'll draft the comment explaining thatmin-w-0allows the pill to shrink smaller than the icon inside it, causing the icon to overflow past the pill boundary and overlap the adjacent separator or number text, rather than just narrowing the pill itself. I'll include a suggested fix and settle on the final wording for the review comment. The other segments avoid this because they truncate their own text, so the fix is to have the pill clip itself with overflow-hidden (which also preserves the automatic min-size-0 truncation behavior above @xs), or alternatively floor the icon width if the deficit should land elsewhere. I'll draft the suggestion applying overflow-hidden to the pill's className and post it.
11. modify_pr — 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).
Agent Credits: 158 credits
Token usage: 28 uncached input · 428,465 cache-read input · 81,723 cache-write input · 31,108 output
Agent Credits may also include non-token charges from external tools such as web research.