From d4eb50238935090ce29f91240c5062c411d375fa Mon Sep 17 00:00:00 2001 From: Dotta Date: Fri, 6 Mar 2026 07:58:30 -0600 Subject: [PATCH] feat(ui): unify comment assignee selector with icons and fix click flash Add renderTriggerValue/renderOption to the comment thread's assignee selector so it shows agent icons, matching the new issue dialog. Fix the InlineEntitySelector flash on click by only auto-opening on keyboard focus (not pointer-triggered focus). Co-Authored-By: Claude Opus 4.6 --- ui/src/components/CommentThread.tsx | 27 ++++++++++++++++++++++ ui/src/components/InlineEntitySelector.tsx | 7 +++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/ui/src/components/CommentThread.tsx b/ui/src/components/CommentThread.tsx index b96c1af0..f529382b 100644 --- a/ui/src/components/CommentThread.tsx +++ b/ui/src/components/CommentThread.tsx @@ -8,6 +8,7 @@ import { InlineEntitySelector, type InlineEntityOption } from "./InlineEntitySel import { MarkdownBody } from "./MarkdownBody"; import { MarkdownEditor, type MarkdownEditorRef, type MentionOption } from "./MarkdownEditor"; import { StatusBadge } from "./StatusBadge"; +import { AgentIcon } from "./AgentIconPicker"; import { formatDateTime } from "../lib/utils"; interface CommentWithRunMeta extends IssueComment { @@ -385,6 +386,32 @@ export function CommentThread({ emptyMessage="No assignees found." onChange={setReassignTarget} className="text-xs h-8" + renderTriggerValue={(option) => { + if (!option) return Assignee; + const agentId = option.id.startsWith("agent:") ? option.id.slice("agent:".length) : null; + const agent = agentId ? agentMap?.get(agentId) : null; + return ( + <> + {agent ? ( + + ) : null} + {option.label} + + ); + }} + renderOption={(option) => { + if (!option.id) return {option.label}; + const agentId = option.id.startsWith("agent:") ? option.id.slice("agent:".length) : null; + const agent = agentId ? agentMap?.get(agentId) : null; + return ( + <> + {agent ? ( + + ) : null} + {option.label} + + ); + }} /> )}