From 40f219030760efd3a91aa53c766db1e05e6e22bf Mon Sep 17 00:00:00 2001 From: hypercross Date: Sun, 12 Jul 2026 10:39:53 +0800 Subject: [PATCH] feat: sync player name and role on state patch Persist name and role to localStorage and URL parameters when received via patch to ensure synchronization. Broadcast full state upon successful connection. --- src/components/stores/journalStream.ts | 6 ++++++ src/workers/journal.worker.ts | 1 + 2 files changed, 7 insertions(+) diff --git a/src/components/stores/journalStream.ts b/src/components/stores/journalStream.ts index ee04dfa..e13a9be 100644 --- a/src/components/stores/journalStream.ts +++ b/src/components/stores/journalStream.ts @@ -154,6 +154,12 @@ function handlePatch(patch: WorkerPatch): void { s.players = patch.state.players; }), ); + // Persist name/role so URL and localStorage stay in sync + if (patch.state.myName) { + saveName(patch.state.myName); + syncUrlParam("player", patch.state.myName); + } + saveRole(patch.state.myRole); // Rebuild derived state (revealedPaths, stats) by replaying reducers replayReducers(); break; diff --git a/src/workers/journal.worker.ts b/src/workers/journal.worker.ts index 0b4a875..126afa3 100644 --- a/src/workers/journal.worker.ts +++ b/src/workers/journal.worker.ts @@ -190,6 +190,7 @@ async function connectStream( ); notifySubscribers({ type: "connectionStatus", status: "connected" }); + broadcastFullState(); resolve(); });