diff --git a/web/src/Shell.tsx b/web/src/Shell.tsx
index 51811b9..ece8160 100644
--- a/web/src/Shell.tsx
+++ b/web/src/Shell.tsx
@@ -75,7 +75,7 @@ export default function Shell({ me: hubMe, onLoggedOut }: { me: Me; onLoggedOut:
// Switching machines: reset everything that belongs to a host, then re-fetch its identity.
const switchMachine = (name: string | null) => {
setMachine(name); sessionStorage.setItem('hamlab.machine', name ?? ''); if (!name) sessionStorage.removeItem('hamlab.machine')
- handles.current = {}; setTerms([]); setActive(null); setRemoteMe(null); setRemoteErr(''); setDrawer(false)
+ handles.current = {}; setTerms([]); setActive(null); setRemoteMe(null); setRemoteErr(''); setDrawer(false); setOnline(true)
setMachineState(name)
if (view === 'machines') setView('dashboard')
}
@@ -136,7 +136,7 @@ export default function Shell({ me: hubMe, onLoggedOut }: { me: Me; onLoggedOut:
{machine && remoteErr && offline}
{me.load}
-
+
logout
diff --git a/web/src/TerminalPane.tsx b/web/src/TerminalPane.tsx
index fca9f3a..1c7ccd0 100644
--- a/web/src/TerminalPane.tsx
+++ b/web/src/TerminalPane.tsx
@@ -80,9 +80,8 @@ export default function TerminalPane({ id, active, register, onStatus, onExit }:
} catch { /* ignore */ }
}
sock.onclose = () => {
- if (ws !== sock) return
+ if (ws !== sock || closed) return
cbs.current.onStatus(false)
- if (closed) return
setConn('reconnecting')
retryTimer = window.setTimeout(connect, Math.min(1000 * 2 ** retry++, 15000))
}