summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Hill <[email protected]>2026-01-05 14:53:19 +0000
committerGitHub <[email protected]>2026-01-05 09:53:19 -0500
commit2cb3b0484ba90cd6b8d434cebff00816f4893963 (patch)
treea05650beddcc9703be4321fe1e0ede4615b93e85
parent11b0df6b868ce13c6c3690a5461827d6e551b3e5 (diff)
downloadopencode-2cb3b0484ba90cd6b8d434cebff00816f4893963.tar.gz
opencode-2cb3b0484ba90cd6b8d434cebff00816f4893963.zip
fix: cleaner interrupted experience (#6785)
Co-authored-by: Dax <[email protected]>
-rw-r--r--packages/opencode/src/cli/cmd/tui/app.tsx1
-rw-r--r--packages/opencode/src/cli/cmd/tui/routes/session/index.tsx18
2 files changed, 16 insertions, 3 deletions
diff --git a/packages/opencode/src/cli/cmd/tui/app.tsx b/packages/opencode/src/cli/cmd/tui/app.tsx
index 91be02bb9..e22423309 100644
--- a/packages/opencode/src/cli/cmd/tui/app.tsx
+++ b/packages/opencode/src/cli/cmd/tui/app.tsx
@@ -569,6 +569,7 @@ function App() {
sdk.event.on(SessionApi.Event.Error.type, (evt) => {
const error = evt.properties.error
+ if (error && typeof error === "object" && error.name === "MessageAbortedError") return
const message = (() => {
if (!error) return "An error occurred"
diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx
index 971f76e8d..1503e37d9 100644
--- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx
+++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx
@@ -1204,7 +1204,7 @@ function AssistantMessage(props: { message: AssistantMessage; parts: Part[]; las
)
}}
</For>
- <Show when={props.message.error}>
+ <Show when={props.message.error && props.message.error.name !== "MessageAbortedError"}>
<box
border={["left"]}
paddingTop={1}
@@ -1219,15 +1219,27 @@ function AssistantMessage(props: { message: AssistantMessage; parts: Part[]; las
</box>
</Show>
<Switch>
- <Match when={props.last || final()}>
+ <Match when={props.last || final() || props.message.error?.name === "MessageAbortedError"}>
<box paddingLeft={3}>
<text marginTop={1}>
- <span style={{ fg: local.agent.color(props.message.agent) }}>▣ </span>{" "}
+ <span
+ style={{
+ fg:
+ props.message.error?.name === "MessageAbortedError"
+ ? theme.textMuted
+ : local.agent.color(props.message.agent),
+ }}
+ >
+ ▣{" "}
+ </span>{" "}
<span style={{ fg: theme.text }}>{Locale.titlecase(props.message.mode)}</span>
<span style={{ fg: theme.textMuted }}> · {props.message.modelID}</span>
<Show when={duration()}>
<span style={{ fg: theme.textMuted }}> · {Locale.duration(duration())}</span>
</Show>
+ <Show when={props.message.error?.name === "MessageAbortedError"}>
+ <span style={{ fg: theme.textMuted }}> · interrupted</span>
+ </Show>
</text>
</box>
</Match>