From bca4d5eba724456545e820ffe89493bdea7a84ee Mon Sep 17 00:00:00 2001 From: Eric Wagoner Date: Fri, 30 Oct 2026 18:13:09 -0400 Subject: [PATCH] The seat wallet's cap of fifty drops the oldest seats, not the newest Seats are kept newest first, but the cap kept the tail, so a browser holding more than fifty threw away the seat it had just taken. Sitting in that room hid it (each room message remembers the seat again); the first games poll after moving to another table lost it for good. Co-Authored-By: Claude Opus 5.5 --- packages/web/src/net.svelte.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/web/src/net.svelte.ts b/packages/web/src/net.svelte.ts index 2a72ca6..d8b278f 100644 --- a/packages/web/src/net.svelte.ts +++ b/packages/web/src/net.svelte.ts @@ -754,7 +754,8 @@ class Net { for (const key of voided) { if (this.voidedOnce.has(key)) doubted.add(key); } this.voidedOnce = voided; let kept = this.seats.filter((s) => !doubted.has(`${s.roomId}:${s.name}`)); - if (kept.length > 50) kept = kept.slice(kept.length - 50); + // Newest first (rememberSeat puts a seat at the front): the oldest go. + if (kept.length > 50) kept = kept.slice(0, 50); if (kept.length !== this.seats.length) { this.seats = kept; saveSeats(this.seats);