From a006621cd0162e8aa19d2bfe676500d52ad4d7c0 Mon Sep 17 00:00:00 2001 From: arkon Date: Thu, 22 Jan 2026 21:22:07 +0100 Subject: [PATCH] fix: don't wipe session state from state.json on server shutdown cleanupSession() always called store.removeSession() which deleted the session from state.json. On server stop, cleanupSession(id, false) was called for all sessions - preserving screens but deleting their saved state. On next restart, state.json was empty so nothing was restored. Now only removes from state.json when killScreen=true (user explicitly deleting a session), preserving state for recovery on restart. Co-Authored-By: Claude Opus 4.5 --- src/web/server.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/web/server.ts b/src/web/server.ts index 947ef2b5..8d62d516 100644 --- a/src/web/server.ts +++ b/src/web/server.ts @@ -1390,7 +1390,11 @@ export class WebServer extends EventEmitter { session.removeAllListeners(); await session.stop(killScreen); this.sessions.delete(sessionId); - this.store.removeSession(sessionId); + // Only remove from state.json if we're also killing the screen. + // When killScreen=false (server shutdown), preserve state for recovery. + if (killScreen) { + this.store.removeSession(sessionId); + } } this.broadcast('session:deleted', { id: sessionId });