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)) }