From c49bb028c44d8776e196b7de1d9ff76ffa4d918a Mon Sep 17 00:00:00 2001 From: Fusion Date: Sun, 24 May 2026 14:23:34 +0200 Subject: [PATCH] fix: remove ResizeObserver to prevent infinite resize loop The ResizeObserver triggered fit() which changed canvas dimensions, triggering the observer again in an infinite loop. We already have window resize handling and delayed fit() calls, so the observer was redundant. --- apps/web/src/components/terminal.tsx | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/apps/web/src/components/terminal.tsx b/apps/web/src/components/terminal.tsx index 5040fd4..a273930 100644 --- a/apps/web/src/components/terminal.tsx +++ b/apps/web/src/components/terminal.tsx @@ -242,25 +242,6 @@ export const TerminalComponent: React.FC = ({ window.addEventListener("resize", handleResize); - // Watch container size changes (keyboard, header auto-hide, etc.) - let resizeObserver: ResizeObserver | null = null; - if (terminalRef.current && typeof ResizeObserver !== "undefined") { - resizeObserver = new ResizeObserver(() => { - fitAddon.fit(); - const { cols, rows } = term; - if (ws.readyState === WebSocket.OPEN) { - ws.send( - JSON.stringify({ - type: "resize", - cols, - rows, - }) - ); - } - }); - resizeObserver.observe(terminalRef.current); - } - // Notify parent about terminal readiness if (onTerminalReadyRef.current) { const sendData = (data: string) => { @@ -289,9 +270,6 @@ export const TerminalComponent: React.FC = ({ return () => { clearTimeout(resizeTimeout); window.removeEventListener("resize", handleResize); - if (resizeObserver) { - resizeObserver.disconnect(); - } document.removeEventListener("visibilitychange", handleVisibilityChange); ws.close(); term.dispose();