diff --git a/ui/src/screens/Lobby.svelte b/ui/src/screens/Lobby.svelte index d80af3e..89df2cf 100644 --- a/ui/src/screens/Lobby.svelte +++ b/ui/src/screens/Lobby.svelte @@ -55,7 +55,11 @@ void load(); }); $effect(() => { - if (app.lastEvent) void load(); + // Refetch on a real game event only — not the 10 s keep-alive heartbeat. Refetching on every + // heartbeat turned the lobby into a 10 s poll whose REST view of a just-committed opponent move + // could update (and blink) a card seconds before the matching your_turn event/toast arrived + // over the slower live stream; gating it keeps the card, its blink and the toast on one event. + if (app.lastEvent && app.lastEvent.kind !== 'heartbeat') void load(); }); const myId = $derived(app.session?.userId ?? '');