From 2f1be914cdd396ff777eeae920b45c9c820ab840 Mon Sep 17 00:00:00 2001 From: adamelmore <2363879+adamdottv@users.noreply.github.com> Date: Sat, 24 Jan 2026 16:22:57 -0600 Subject: [PATCH] fix(app): remove terminal connection error overlay --- packages/app/src/components/terminal.tsx | 6 ++ packages/app/src/context/terminal.tsx | 1 - packages/app/src/pages/session.tsx | 71 ++++-------------------- 3 files changed, 17 insertions(+), 61 deletions(-) diff --git a/packages/app/src/components/terminal.tsx b/packages/app/src/components/terminal.tsx index 6bedcfae2..02d561fba 100644 --- a/packages/app/src/components/terminal.tsx +++ b/packages/app/src/components/terminal.tsx @@ -111,6 +111,8 @@ export const Terminal = (props: TerminalProps) => { const mod = await import("ghostty-web") ghostty = await mod.Ghostty.load() + const once = { value: false } + const url = new URL(sdk.url + `/pty/${local.pty.id}/connect?directory=${encodeURIComponent(sdk.directory)}`) if (window.__OPENCODE__?.serverPassword) { url.username = "opencode" @@ -258,6 +260,8 @@ export const Terminal = (props: TerminalProps) => { }) socket.addEventListener("error", (error) => { if (disposed) return + if (once.value) return + once.value = true console.error("WebSocket error:", error) local.onConnectError?.(error) }) @@ -266,6 +270,8 @@ export const Terminal = (props: TerminalProps) => { // Normal closure (code 1000) means PTY process exited - server event handles cleanup // For other codes (network issues, server restart), trigger error handler if (event.code !== 1000) { + if (once.value) return + once.value = true local.onConnectError?.(new Error(`WebSocket closed abnormally: ${event.code}`)) } }) diff --git a/packages/app/src/context/terminal.tsx b/packages/app/src/context/terminal.tsx index 147c4f8f7..72f93edc2 100644 --- a/packages/app/src/context/terminal.tsx +++ b/packages/app/src/context/terminal.tsx @@ -13,7 +13,6 @@ export type LocalPTY = { cols?: number buffer?: string scrollY?: number - error?: boolean } const WORKSPACE_KEY = "__workspace__" diff --git a/packages/app/src/pages/session.tsx b/packages/app/src/pages/session.tsx index d898e93dc..01368896e 100644 --- a/packages/app/src/pages/session.tsx +++ b/packages/app/src/pages/session.tsx @@ -2466,66 +2466,17 @@ export default function Page() {
- {(pty) => { - const [dismissed, setDismissed] = createSignal(false) - return ( -
- terminal.update({ ...data, id: pty.id })} - onConnect={() => { - terminal.update({ id: pty.id, error: false }) - setDismissed(false) - }} - onConnectError={() => { - setDismissed(false) - terminal.update({ id: pty.id, error: true }) - }} - /> - -
- -
-
{language.t("terminal.connectionLost.title")}
-
- {language.t("terminal.connectionLost.description")} -
-
- -
-
-
- ) - }} + {(pty) => ( +
+ terminal.clone(pty.id)} /> +
+ )}