From 985594aaa3400b9814ccc9ab64f000632592eced Mon Sep 17 00:00:00 2001 From: Brooklyn Nicholson Date: Wed, 12 Aug 2026 20:34:58 -0500 Subject: [PATCH] fix(desktop): one git glyph on the composer's coding row, with the PR number leading MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The branch's PR chip carried its own pull-request icon next to the row's branch glyph, so the strip opened with two git marks in a row. The chip now takes showIcon, and the coding row renders it glyph-less and ahead of the branch name — the leading branch icon covers both, and the row reads icon → #number → branch. Sidebar rows keep the full chip. --- .../chat/composer/status-stack/coding-row.tsx | 7 +++++-- apps/desktop/src/app/chat/pr-tag.tsx | 19 +++++++++++++++---- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/apps/desktop/src/app/chat/composer/status-stack/coding-row.tsx b/apps/desktop/src/app/chat/composer/status-stack/coding-row.tsx index 51325e3e8ab38..5b69b2938119f 100644 --- a/apps/desktop/src/app/chat/composer/status-stack/coding-row.tsx +++ b/apps/desktop/src/app/chat/composer/status-stack/coding-row.tsx @@ -220,6 +220,11 @@ export const CodingStatusRow = memo(function CodingStatusRow({ } >
+ {/* PR number first, right against the leading git glyph — the chip + borrows that icon instead of carrying a second one of its own + (`showIcon={false}`), so the row reads glyph → #number → branch. */} + {pr && } + {/* Branch name — the other half of the review-pane target. `contents` so the button lays out nothing of its own: the label stays the same flex child it always was, and the hit area is the text. */} @@ -229,8 +234,6 @@ export const CodingStatusRow = memo(function CodingStatusRow({ - {pr && } - {/* Worktree path + copy — plain muted text, not a chip. Always in the flex so hover doesn't reflow the row; opacity alone reveals the pair. The path sizes to its content (the `flex-1` lives on the diff --git a/apps/desktop/src/app/chat/pr-tag.tsx b/apps/desktop/src/app/chat/pr-tag.tsx index 723be8588293a..bf0a5c1c94b19 100644 --- a/apps/desktop/src/app/chat/pr-tag.tsx +++ b/apps/desktop/src/app/chat/pr-tag.tsx @@ -22,8 +22,18 @@ export function openPullRequest(pr: HermesBranchPullRequest): void { /** The branch's PR as a row chip: state glyph plus number, tooltipped with the * title, and a link to the PR on click. Identity like {@link ProfileTag} — - * never a status dot. */ -export function PrTag({ className, pr }: { className?: string; pr: HermesBranchPullRequest }) { + * never a status dot. `showIcon={false}` drops the glyph for rows that already + * lead with a git icon the number can sit against (the composer's coding row), + * so the chip doesn't stack a second one beside it. */ +export function PrTag({ + className, + pr, + showIcon = true +}: { + className?: string + pr: HermesBranchPullRequest + showIcon?: boolean +}) { const style = PR_STYLE[pullRequestBucket(pr)] ?? PR_STYLE.open return ( @@ -51,8 +61,9 @@ export function PrTag({ className, pr }: { className?: string; pr: HermesBranchP onPointerDown={event => event.stopPropagation()} type="button" > - - {pr.number} + {showIcon && } + {/* Without the glyph the number needs the `#` to still read as a PR. */} + {showIcon ? pr.number : `#${pr.number}`} )