From 54c0a075bc30fda43b2d476e2ae40ef4ae4b36e2 Mon Sep 17 00:00:00 2001 From: suraj-markup Date: Mon, 2 Mar 2026 00:35:55 +0530 Subject: [PATCH] Revert "fix(terminal): preserve text selection while terminal receives output" This reverts commit 3ac26ba6e8eb1c85fbd9ca4c0ab3d937f58e1a76. --- .../web/src/components/DirectTerminal.tsx | 34 +------------------ 1 file changed, 1 insertion(+), 33 deletions(-) diff --git a/packages/web/src/components/DirectTerminal.tsx b/packages/web/src/components/DirectTerminal.tsx index 762268e42..a4c1221c3 100644 --- a/packages/web/src/components/DirectTerminal.tsx +++ b/packages/web/src/components/DirectTerminal.tsx @@ -201,40 +201,10 @@ export function DirectTerminal({ ); }; - // Buffer incoming data while the user is selecting text so that - // terminal.write() doesn't clear the xterm.js selection mid-drag. - let selecting = false; - const writeBuffer: string[] = []; - - const flushBuffer = () => { - if (writeBuffer.length > 0) { - terminal.write(writeBuffer.join("")); - writeBuffer.length = 0; - } - }; - - const onMouseDown = () => { - selecting = true; - }; - const onMouseUp = () => { - selecting = false; - // Small delay so the selection is still visible when the user - // releases the mouse and can hit Cmd+C before the flush clears it. - setTimeout(flushBuffer, 150); - }; - - const el = terminalRef.current!; - el.addEventListener("mousedown", onMouseDown); - el.addEventListener("mouseup", onMouseUp); - websocket.onmessage = (event) => { const data = typeof event.data === "string" ? event.data : new TextDecoder().decode(event.data); - if (selecting) { - writeBuffer.push(data); - } else { - terminal.write(data); - } + terminal.write(data); }; websocket.onerror = (event) => { @@ -314,8 +284,6 @@ export function DirectTerminal({ // Store cleanup function to be called from useEffect cleanup cleanup = () => { - el.removeEventListener("mousedown", onMouseDown); - el.removeEventListener("mouseup", onMouseUp); window.removeEventListener("resize", handleResize); disposable.dispose(); websocket.close();