Force redraw on reconnect and speed up screenshots

- Send Ctrl+L and resize on reconnect to avoid black screens
- Increase replay buffer to 256KB
- Add get_screen_has_changes for non-destructive dirty checks
- Tighten screenshot cache TTLs and SSE debounce
- Update tests for new behavior and timings
This commit is contained in:
GitHub Copilot
2026-01-27 19:09:41 +00:00
parent 13816ae2fd
commit bb94f9359d
4 changed files with 36 additions and 2 deletions
@@ -43,6 +43,32 @@ async def test_websocket_creates_session_on_resize(tmp_path):
await client.close()
assert created["args"] == ("test", 90, 25)
# Reconnect should trigger redraw without creating a new session
called = {"redraw": 0, "stdin": 0}
class DummySession:
def is_running(self):
return True
async def force_redraw(self):
called["redraw"] += 1
async def send_bytes(self, data: bytes):
called["stdin"] += 1
server.session_manager.routes["test"] = "sid"
server.session_manager.sessions["sid"] = DummySession()
client = await _make_client(server)
try:
ws = await client.ws_connect("/ws/test")
await ws.close()
finally:
await client.close()
assert called["redraw"] == 1
assert called["stdin"] == 1
@pytest.mark.asyncio
+1 -1
View File
@@ -29,7 +29,7 @@ class TestTerminalSession:
"""Test replay buffer size constant."""
from textual_webterm.terminal_session import REPLAY_BUFFER_SIZE
assert REPLAY_BUFFER_SIZE == 64 * 1024 # 64KB
assert REPLAY_BUFFER_SIZE == 256 * 1024 # 64KB
def test_init(self):
"""Test TerminalSession initialization."""