Add auto-reconnect with exponential backoff
Sessions configured with auto-reconnect will automatically attempt to re-establish the connection when unexpectedly disconnected. Uses exponential backoff (1s, 2s, 4s, 8s... up to 30s) with a configurable maximum number of attempts (default 5). - New SessionReconnecting state with pulsing indicator in tab bar - SSH and Telnet profiles gain autoReconnect and maxReconnectTries fields - RAW protocol already had autoReconnect; now uses the shared mechanism - CancelReconnect API to abort in-progress reconnection - Frontend shows reconnect attempt notifications - Profile editor exposes toggle and max attempts in Advanced/Reconnection
This commit is contained in:
+12
-1
@@ -134,10 +134,21 @@ class App {
|
||||
this.terminals.handleData(payload.sessionID, payload.data);
|
||||
});
|
||||
|
||||
// Session state transitions (connecting → connected → disconnected)
|
||||
// Session state transitions (connecting → connected → reconnecting → disconnected)
|
||||
window.runtime.EventsOn('session:state', (payload) => {
|
||||
this.tabs.updateSessionState(payload.sessionID, payload.state, payload.error);
|
||||
this.updateStatusBar();
|
||||
|
||||
// Show reconnecting notification
|
||||
if (payload.state === 'reconnecting') {
|
||||
const attempt = payload.attempt || 1;
|
||||
const maxRetries = payload.maxRetries || 5;
|
||||
const delaySec = payload.delaySec || 1;
|
||||
this.notifications.info(
|
||||
`Reconnecting (attempt ${attempt}/${maxRetries}) in ${delaySec}s…`
|
||||
);
|
||||
}
|
||||
|
||||
// Once connected, ensure the backend PTY has the correct dimensions.
|
||||
// The initial fit happens before the SSH handshake completes, so the
|
||||
// onResize callback fires when the backend isn't ready. By the time
|
||||
|
||||
Reference in New Issue
Block a user