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.
This commit is contained in:
Fusion
2026-05-24 16:04:00 +02:00
parent f6fb984ec6
commit 0094ba01cd
+11
View File
@@ -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."""