diff --git a/apps/web/src/components/terminal.tsx b/apps/web/src/components/terminal.tsx index 38710d7..2235ca9 100644 --- a/apps/web/src/components/terminal.tsx +++ b/apps/web/src/components/terminal.tsx @@ -254,16 +254,15 @@ export const TerminalComponent: React.FC = ({ ws.send(data); }); - // Handle window resize with debounce + // Handle container resize with ResizeObserver (more reliable than window resize) let resizeTimeout: ReturnType; - const handleResize = () => { + const resizeObserver = new ResizeObserver(() => { clearTimeout(resizeTimeout); resizeTimeout = setTimeout(() => { fitTerminal(); - }, 250); - }; - - window.addEventListener("resize", handleResize); + }, 100); + }); + resizeObserver.observe(container); // Refit after mobile header auto-hides (3s delay + 0.3s transition) const headerHideTimeout = setTimeout(() => { @@ -298,7 +297,7 @@ export const TerminalComponent: React.FC = ({ return () => { clearTimeout(resizeTimeout); clearTimeout(headerHideTimeout); - window.removeEventListener("resize", handleResize); + resizeObserver.disconnect(); document.removeEventListener("visibilitychange", handleVisibilityChange); if (ws) { ws.close();