authorgravatar for julius0216@outlook.comJulius Marminge <julius0216@outlook.com> 2026-02-12 21:18:54-08:00
committergravatar for jmarminge@gmail.comJulius Marminge <jmarminge@gmail.com> 2026-02-12 21:24:49-08:00
loge6d645072817752553b610a6f53bf3e4ae586498
tree50fa28ada675f14e7999b7559569bce39ecf70fb
parent739205872f89dec116e81a0a2cf4c1cb3a6f0acb

Use terminal close API with exit fallback in ChatView

- Call `api.terminal.close` when available when closing a terminal tab - Fall back to writing `exit\n` to preserve compatibility with older/uninitialized terminals

1 files changed, 9 insertions(+), 3 deletions(-)

apps/web/src/components/ChatView.tsx+9-3
...@@ -302,9 +302,15 @@ export default function ChatView() {...@@ -302,9 +302,15 @@ export default function ChatView() {
302 const closeTerminal = useCallback(302 const closeTerminal = useCallback(
303 (terminalId: string) => {303 (terminalId: string) => {
304 if (!activeThreadId || !api) return;304 if (!activeThreadId || !api) return;
305 void api.terminal.write({ threadId: activeThreadId, terminalId, data: "exit\n" }).catch(() => {305 const fallbackExitWrite = () =>
306 // Ignore write errors so the UI can still close an uninitialized or already-exited terminal.306 api.terminal.write({ threadId: activeThreadId, terminalId, data: "exit\n" }).catch(() => {
307 });307 // Ignore write errors so the UI can still close an uninitialized or already-exited terminal.
308 });
309 if ("close" in api.terminal && typeof api.terminal.close === "function") {
310 void api.terminal.close({ threadId: activeThreadId, terminalId }).catch(() => fallbackExitWrite());
311 } else {
312 void fallbackExitWrite();
313 }
308 dispatch({314 dispatch({
309 type: "CLOSE_THREAD_TERMINAL",315 type: "CLOSE_THREAD_TERMINAL",
310 threadId: activeThreadId,316 threadId: activeThreadId,