From 0094ba01cd0f86f008a7dd4caee4d6ec2d6b984d Mon Sep 17 00:00:00 2001 From: Fusion Date: Sun, 24 May 2026 16:04:00 +0200 Subject: [PATCH] fix: send stty command to resize container shell Docker exec doesn't forward PTY resize to the container process, so the container bash stays at 80x24 regardless of frontend resize. Work around this by sending a stty command through the terminal on first resize to set the correct dimensions inside the container. --- apps/api/src/services/terminal_session.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/apps/api/src/services/terminal_session.py b/apps/api/src/services/terminal_session.py index d4e504e..d91f8dd 100644 --- a/apps/api/src/services/terminal_session.py +++ b/apps/api/src/services/terminal_session.py @@ -146,6 +146,17 @@ class TerminalSession: self._rows = rows logger.info(f"resize() called for session {self.session_id}: {cols}x{rows}") self._set_terminal_size(cols, rows) + + # Docker exec doesn't forward PTY resize to the container process, + # so we need to explicitly set the size inside the container shell. + # Only do this on the first resize to avoid interfering with user input. + if not getattr(self, '_stty_sent', False): + self._stty_sent = True + # Clear any partial input and send stty command + # \x15 = Ctrl+U (clear line), \x0d = Enter + stty_cmd = f"\x15stty cols {cols} rows {rows}\x0d".encode() + await self.write_input(stty_cmd) + logger.info(f"Sent stty command to container for session {self.session_id}") async def reset(self) -> None: """Reset the session by killing the process and clearing state."""