History

Clear terminal viewport before final close

Julius Marminge committed 9 months ago

Commit 0be98ea1 parent 2cd92ae1 file · +10 −4Browse files

Unified · Split

apps/web/src/components/ChatView.tsx+10−4
@@ -314,14 +314,20 @@ export default function ChatView() { · 313 unmodified lines
314314 const closeTerminal = useCallback(
315315 (terminalId: string) => {
316316 if (!activeThreadId || !api) return;
317+ const isFinalTerminal = (activeThread?.terminalIds.length ?? 0) <= 1;
317318 const fallbackExitWrite = () =>
318319 api.terminal
319320 .write({ threadId: activeThreadId, terminalId, data: "exit\n" })
320321 .catch(() => undefined);
321322 if ("close" in api.terminal && typeof api.terminal.close === "function") {
322− void api.terminal
323− .close({ threadId: activeThreadId, terminalId, deleteHistory: true })
324− .catch(() => fallbackExitWrite());
323+ void (async () => {
324+ if (isFinalTerminal) {
325+ await api.terminal
326+ .clear({ threadId: activeThreadId, terminalId })
327+ .catch(() => undefined);
328+ }
329+ await api.terminal.close({ threadId: activeThreadId, terminalId, deleteHistory: true });
330+ })().catch(() => fallbackExitWrite());
325331 } else {
326332 void fallbackExitWrite();
327333 }
@@ -332,7 +338,7 @@ export default function ChatView() { · 4 unmodified lines
332338 });
333339 setTerminalFocusRequestId((value) => value + 1);
334340 },
335− [activeThreadId, api, dispatch],
341+ [activeThread?.terminalIds.length, activeThreadId, api, dispatch],
336342 );
337343
338344 const handleRuntimeModeChange = async (mode: "approval-required" | "full-access") => {