diff --git a/gui/tabs/terminal_tab.py b/gui/tabs/terminal_tab.py index 3ae8b09..2e1d505 100644 --- a/gui/tabs/terminal_tab.py +++ b/gui/tabs/terminal_tab.py @@ -69,7 +69,6 @@ class TerminalTab(ctk.CTkFrame): alias = self._current_alias self._terminal.set_status(t("term_connecting").format(alias=alias), "#ccaa00") - self._terminal.reset() self._intentional_disconnect = False def _do_connect(): @@ -81,10 +80,19 @@ class TerminalTab(ctk.CTkFrame): cols, rows = self._terminal.get_size() session, is_new = self.session_pool.get_or_create_shell_session(alias, server, key_path) if is_new: - # Configure the session with proper terminal dimensions + # New session — reset terminal for clean start + self.after(0, self._terminal.reset) session.cols = cols session.rows = rows session.connect() + else: + # Reused session — restore saved buffer instead of resetting + saved_buf = self.session_pool.get_shell_state(alias) + def _restore_buffer(): + self._terminal.reset() + if saved_buf: + self._terminal.feed(saved_buf + b"\n") + self.after(0, _restore_buffer) # Set up callbacks even if session already existed session.on_data = self._on_data_received @@ -92,6 +100,7 @@ class TerminalTab(ctk.CTkFrame): self._session = session else: # Legacy behavior without session pool + self.after(0, self._terminal.reset) cols, rows = self._terminal.get_size() session = ShellSession(server, key_path, cols=cols, rows=rows) session.on_data = self._on_data_received diff --git a/releases/ServerManager-v1.8.3-win-x64.exe b/releases/ServerManager-v1.8.3-win-x64.exe index 3ea6875..2aba754 100644 Binary files a/releases/ServerManager-v1.8.3-win-x64.exe and b/releases/ServerManager-v1.8.3-win-x64.exe differ