diff --git a/apps/desktop/src/app/session/hooks/use-prompt-actions.ts b/apps/desktop/src/app/session/hooks/use-prompt-actions.ts index 744f3f47df06..b96684134454 100644 --- a/apps/desktop/src/app/session/hooks/use-prompt-actions.ts +++ b/apps/desktop/src/app/session/hooks/use-prompt-actions.ts @@ -768,8 +768,9 @@ export function usePromptActions({ if (result?.status === 'queued') { triggerHaptic('submit') // Inline note (not a toast) so the nudge lives in the transcript next - // to the turn it steered — same centered system-note style as slash output. - appendSessionTextMessage(sessionId, 'system', `⏩ steered · ${text}`) + // to the turn it steered. The `steer:` prefix is rendered as a codicon + // row by SystemMessage (see STEER_NOTE_RE), same style as slash output. + appendSessionTextMessage(sessionId, 'system', `steer:${text}`) return true } diff --git a/apps/desktop/src/components/assistant-ui/thread.tsx b/apps/desktop/src/components/assistant-ui/thread.tsx index c34c345b361d..a38ebce4f341 100644 --- a/apps/desktop/src/components/assistant-ui/thread.tsx +++ b/apps/desktop/src/components/assistant-ui/thread.tsx @@ -820,6 +820,7 @@ const UserMessage: FC<{ } const SLASH_STATUS_RE = /^slash:(?\/[^\n]+)\n(?[\s\S]*)$/ +const STEER_NOTE_RE = /^steer:(?[\s\S]+)$/ const SystemMessage: FC = () => { const text = useAuiState(s => messageContentText(s.message.content)) @@ -828,6 +829,23 @@ const SystemMessage: FC = () => { return null } + const steerNote = text.match(STEER_NOTE_RE) + + if (steerNote?.groups) { + return ( + + + steered + · + {steerNote.groups.text.trim()} + + ) + } + const slashStatus = text.match(SLASH_STATUS_RE) if (slashStatus?.groups) {