A re-let chair was handed the previous occupant's mucked hand

FixMediaService
Shipped
September 8, 2026 at 6:03 PM UTC
Author
Kamo
Commit
8a7a68c

Two defects the linger made reachable, found by reviewing the commit that added it. THE REDACTION. viewFor matched hand-seat rows to seats by seat NUMBER alone. That was safe for exactly as long as a finished hand was invisible — a hand seat and a seat were the same person for the whole life of a frame. They are not any more: a hand stays on the felt for RESULT_LINGER_SECONDS, and a player who folded and stood up in that gap frees a chair somebody else can take. The new occupant is then the reader of their own seat, `mine` is true, and the frame hands them the previous occupant's mucked hole cards. Two lines of redaction defeated by two people sharing a chair number. Matched on memberId as well now, which also stops the new occupant being credited with the old one's winnings and captioned with a stranger's showdown hand. THE HEADLINE POT. `hand.pot` records everything that went in, including an uncalled bet that was handed straight back — raise to 600 with both blinds folding writes 900, of which 500 was played for and 400 returned. Showing 900 as the pot while the payouts add up to 500 is the felt disagreeing with itself at the one moment everybody is reading it. A completed hand's totalPot is now the sum of the solved pots; `hand.pot` is untouched as the record of what went in, and the two are equal on every hand that was actually called. The pot tests move onto a three-handed shape, because two seats cannot express the arithmetic: with 600 against 300 the cap makes the pot 600 and the point disappears. 100, 200 and 600 is the hand the commit message describes.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing