From a6fb0cdcaeb621296e93bee3426e97e5cd68c55e Mon Sep 17 00:00:00 2001 From: Theo Browne Date: Tue, 27 Oct 2026 01:15:58 -0700 Subject: [PATCH] fix(web,mobile): stopped runs no longer look like errors Co-Authored-By: Claude Opus 5.5 --- apps/mobile/src/features/threads/thread-work-log.tsx | 2 ++ apps/mobile/src/lib/threadActivity.ts | 2 ++ .../src/components/chat/TimelineV2EventRow.logic.ts | 10 +++++----- apps/web/src/components/chat/V2LifecycleRow.tsx | 11 +++-------- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/apps/mobile/src/features/threads/thread-work-log.tsx b/apps/mobile/src/features/threads/thread-work-log.tsx index 0ea7616f31d82..62251650c5b9b 100644 --- a/apps/mobile/src/features/threads/thread-work-log.tsx +++ b/apps/mobile/src/features/threads/thread-work-log.tsx @@ -407,6 +407,8 @@ function workRowSymbolName(icon: ThreadFeedActivity["icon"]): WorkContentIcon { return { ios: "globe", android: "public" }; case "search": return "magnifyingglass"; + case "stop": + return "stop.fill"; case "hammer": return { ios: "hammer", android: "construction" }; case "lock": diff --git a/apps/mobile/src/lib/threadActivity.ts b/apps/mobile/src/lib/threadActivity.ts index 444ca0ac6b293..4b92927ae91e7 100644 --- a/apps/mobile/src/lib/threadActivity.ts +++ b/apps/mobile/src/lib/threadActivity.ts @@ -111,6 +111,7 @@ export interface ThreadFeedActivity { | "eye" | "globe" | "search" + | "stop" | "hammer" | "lock" | "message" @@ -617,6 +618,7 @@ function itemIcon(item: OrchestrationV2TurnItem): ThreadFeedActivity["icon"] { return "hammer"; case "run_interrupt_request": case "run_interrupt_result": + return "stop"; case "system_notice": return "warning"; case "error": diff --git a/apps/web/src/components/chat/TimelineV2EventRow.logic.ts b/apps/web/src/components/chat/TimelineV2EventRow.logic.ts index fd12143ef30d0..e6c26057a9417 100644 --- a/apps/web/src/components/chat/TimelineV2EventRow.logic.ts +++ b/apps/web/src/components/chat/TimelineV2EventRow.logic.ts @@ -3,11 +3,11 @@ import { providerErrorPresentation } from "../../session-logic"; import { CheckIcon, CircleAlertIcon, + CircleStopIcon, GitForkIcon, type LucideIcon, MinusIcon, WrenchIcon, - XIcon, ZapIcon, } from "lucide-react"; import * as DateTime from "effect/DateTime"; @@ -38,15 +38,15 @@ export function v2EventPresentation(item: OrchestrationV2TurnItem): { return { label: "Interrupt requested", detail: item.message, - tone: "warning", - icon: CircleAlertIcon, + tone: "muted", + icon: CircleStopIcon, }; case "run_interrupt_result": return { label: "Run interrupted", detail: item.message, - tone: "danger", - icon: XIcon, + tone: "muted", + icon: CircleStopIcon, }; case "handoff": return { diff --git a/apps/web/src/components/chat/V2LifecycleRow.tsx b/apps/web/src/components/chat/V2LifecycleRow.tsx index 193ac1bf297a3..61524842aa0de 100644 --- a/apps/web/src/components/chat/V2LifecycleRow.tsx +++ b/apps/web/src/components/chat/V2LifecycleRow.tsx @@ -33,12 +33,12 @@ import type { TimestampFormat } from "@t3tools/contracts/settings"; import { BotIcon, ChevronRightIcon, + CircleStopIcon, ArrowRightLeftIcon, ArrowRightIcon, GitForkIcon, MessageSquareIcon, MinusIcon, - XIcon, } from "lucide-react"; import { Tooltip, TooltipTrigger, TooltipPopup } from "../ui/tooltip"; @@ -86,7 +86,7 @@ export function V2LifecycleRow(props: { if (item.type === "run_interrupt_request") { return (
-
+
@@ -104,12 +104,7 @@ export function V2LifecycleRow(props: { } if (item.type === "run_interrupt_result") { return ( - + ); } if (item.type === "compaction") {