fix: respawn disabled state not persisted across server restarts

When /respawn/stop was called, the controller was stopped but remained
in the respawnControllers map. This caused persistSessionState() to
still read config.enabled=true and save respawnEnabled=true to state.json.

On server restart, the respawn controller would be re-enabled because
state.json had respawnEnabled=true.

Fix: Remove controller from map and clear any timed respawn when
/respawn/stop is called, so persistSessionState() correctly sets
respawnEnabled=false.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
arkon
2026-01-25 08:01:57 +01:00
co-authored by Claude Opus 4.5
parent 044021953a
commit 3455b27f6f
3 changed files with 12 additions and 2 deletions
+10
View File
@@ -790,6 +790,16 @@ export class WebServer extends EventEmitter {
controller.stop();
// Remove controller from map so persistSessionState doesn't save respawnEnabled: true
this.respawnControllers.delete(id);
// Clear any timed respawn
const timerInfo = this.respawnTimers.get(id);
if (timerInfo) {
clearTimeout(timerInfo.timer);
this.respawnTimers.delete(id);
}
// Clear persisted respawn config
this.screenManager.clearRespawnConfig(id);