From 868c8aadf0cd2500ab4ed50bf7a3dcca54394583 Mon Sep 17 00:00:00 2001 From: Naiyuan Qing <145280634+NevilleQingNY@users.noreply.github.com> Date: Fri, 24 Jul 2026 15:27:48 +0800 Subject: [PATCH] fix(views): transcript identity row reads as one sentence, not three peers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The row put the agent, the trigger word, and the person at near-equal weight with two same-size avatars, so it read as a jumble of names with "comment-triggered" floating between them. - The agent is the sole primary identity (avatar + medium weight). - Trigger + person collapse into one muted secondary unit set apart from the agent, ordered " · ". - Drop the person's avatar here (new AttributionBadge `hideAvatar`) so two same-size faces don't read as two agents; the name alone, being muted, can't be confused with the agent. Co-Authored-By: Claude Fable 5 --- .../agent-transcript-dialog.tsx | 41 +++++++++++-------- .../issues/components/attribution-badge.tsx | 20 +++++---- 2 files changed, 36 insertions(+), 25 deletions(-) diff --git a/packages/views/common/task-transcript/agent-transcript-dialog.tsx b/packages/views/common/task-transcript/agent-transcript-dialog.tsx index 390dbcbaf..7a6351394 100644 --- a/packages/views/common/task-transcript/agent-transcript-dialog.tsx +++ b/packages/views/common/task-transcript/agent-transcript-dialog.tsx @@ -516,34 +516,39 @@ export function AgentTranscriptDialog({ (status anchors the left), who ran it, why it exists (trigger), and who's accountable. All diagnostics move to the ⓘ popover. */}
-
+
{statusBadge} -
-
- {task.agent_id ? ( - - ) : ( -
- -
- )} - - {agentName || agentInfo?.name || ""} - -
- {/* Why this run exists: the trigger mechanism plus the - accountable human who's answerable for what the agent did. */} - {triggerLabel} + {/* Primary identity: the agent that ran this. It is the one + foreground entity — avatar + medium weight. */} +
+ {task.agent_id ? ( + + ) : ( +
+ +
+ )} + + {agentName || agentInfo?.name || ""} + +
+ {/* Provenance, one muted secondary unit set apart from the agent: + who triggered the run and how — reads as " · ", + not three peer entities. The person's avatar is dropped here so + two same-size faces don't read as two agents. */} +
{hasTriggeredBy && ( <> - + )} + {triggerLabel}
diff --git a/packages/views/issues/components/attribution-badge.tsx b/packages/views/issues/components/attribution-badge.tsx index 470316bbd..2e94cb651 100644 --- a/packages/views/issues/components/attribution-badge.tsx +++ b/packages/views/issues/components/attribution-badge.tsx @@ -49,10 +49,14 @@ export function AttributionBadge({ attribution, className, variant = "badge", + hideAvatar = false, }: { attribution?: TaskAttribution; className?: string; variant?: "badge" | "avatar" | "inline"; + /** Inline variant only: render the name without the avatar, so it does not + * compete with a nearby primary avatar (the transcript identity row). */ + hideAvatar?: boolean; }) { const { t } = useT("issues"); if (!attribution) return null; @@ -124,13 +128,15 @@ export function AttributionBadge({ className )} > - + {!hideAvatar && ( + + )} {name} }