Keep the big blind moving one player at a time when somebody leaves out of the blinds #87
Closed
jheaps
wants to merge 1 commits from
fix/casino-holdem-dead-button into fix/casino-holdem-discarded-pot
pull from: fix/casino-holdem-dead-button
merge into: :fix/casino-holdem-discarded-pot
:master
:feature/socialism
:polish/holdem-seats-one-size
:fix/holdem-dealer-chip-eats-its-seat
:polish/holdem-game-night-ready
:polish/holdem-round-next
:polish/holdem-seat-collisions
:polish/holdem-offline-and-render
:fix/naming-a-blind-deals-the-hand
:release/casino-holdem-polish
:fix/casino-holdem-phone-look
:fix/casino-holdem-sidebar-crowding
:fix/casino-holdem-contribution-rule
:fix/casino-holdem-one-stack-rule
:fix/casino-holdem-default-stack-buyin
:feat/casino-holdem-waiting-list
:feat/casino-holdem-misdeal
:feat/casino-holdem-cash-out
:feat/casino-holdem-clock
:feat/casino-holdem-rake
:fix/casino-holdem-stadium-ring
:fix/casino-holdem-phone-felt-shape
:fix/casino-holdem-audit-runs-everything
:feat/casino-holdem-straddle
:fix/casino-holdem-landscape-ring
:feat/casino-holdem-table-file
:fix/casino-holdem-touch-targets
:fix/casino-holdem-audit-modal-blindspot
:fix/casino-holdem-quicksplit-chop
:fix/casino-holdem-buildable-bet-sizes
:fix/casino-holdem-pot-sized-raise
:fix/casino-holdem-chips-to-count-out
:fix/casino-holdem-first-buy-in
:fix/casino-holdem-seating-a-table
:fix/casino-holdem-showdown-order
:fix/casino-holdem-hand-log-filter
:fix/casino-holdem-posting-in
:fix/casino-holdem-dead-button
:fix/casino-holdem-discarded-pot
:fix/casino-holdem-honest-tank-clock
:fix/casino-holdem-export-the-notes
:fix/casino-holdem-stacks-in-chips
:fix/casino-holdem-close-audit-blind-spots
:fix/casino-holdem-readable-dim-states
:fix/casino-holdem-drop-broken-watermark
:fix/casino-holdem-two-tabs
:fix/casino-holdem-unreadable-save
:fix/casino-holdem-say-when-not-saving
:fix/casino-holdem-shortcut-discovery
:fix/casino-holdem-rulings-index-compact
:fix/casino-holdem-rulings-index
:fix/casino-holdem-payout-in-chips
:fix/casino-holdem-move-seat-on-touch
:fix/casino-holdem-amount-fields-select
:fix/casino-holdem-touch-targets-by-pointer
:fix/casino-holdem-button-box-model
:fix/casino-holdem-blind-badge-placement
:fix/casino-holdem-buyin-deals-in
:fix/casino-holdem-bet-vs-raise
:fix/casino-holdem-deal-around-broke
:fix/casino-holdem-settle-up
:fix/casino-holdem-allin-and-bar
:fix/casino-holdem-one-dealer-button
:fix/casino-holdem-manual-deal
:fix/casino-holdem-less-guessing
:feature/casino-holdem-seat-editor
:fix/casino-holdem-landscape-table
:feature/casino-holdem-acting-seat
:feature/casino-holdem-raise-guard
:feature/casino-holdem-first-run
:feature/casino-holdem-contrast-audit
:feature/casino-holdem-layout-audit
:feature/casino-holdem-blind-fairness
:feature/casino-holdem-rulings-depth
:feature/casino-holdem-bank-audit
:feature/casino-holdem-fewer-taps
:feature/casino-holdem-render-perf
:feature/casino-holdem-keyboard-focus
:feature/casino-holdem-resilience
:feature/casino-holdem-messy-tables
:feature/casino-holdem-touch-mobile
:chore/casino-holdem-tech-debt
:feature/casino-holdem-dealer-batch
:feature/casino-holdem-seat-count-safety
:feature/casino-holdem-odd-chip
:feature/casino-holdem-button-moves
:feature/casino-holdem-allin-runout
:feature/casino-holdem-heads-up
:feature/casino-holdem-contrast
:feature/casino-holdem-touch-audit
:feature/casino-holdem-wizard-polish
:feature/casino-quicksplit-side-pots
:feature/casino-holdem-rebuys
:feature/casino-holdem-rulings
:feature/casino-holdem-sidebar-polish
:feature/casino-holdem-keyboard
:feature/casino-holdem-action-undo
:feature/casino-holdem-pace
:feature/casino-holdem-side-pot-breakdown
:feature/casino-holdem-gestures
:feature/casino-holdem-card-picker
:feature/casino-holdem-live-betting
:feature/casino-holdem-bet-chips
:feature/casino-holdem-seat-legibility
:feature/casino-holdem-undo-toasts
:feature/casino-holdem-quick-split
:feature/casino-holdem-mobile-table
:feature/casino-holdem-hand-history
:feature/casino-texas-holdem
:feature/casino-holdem-dealer-mode-polish
:feature/fractional-learned-weights
:fix/stockfish-dispose-hang
:fix/blog-cache-staleness
:fix/workflows
:gitea/workflows
:echo-acoustic-ranging
:chess-ui-overhaul
:feature/customChessEngine
:feature/blog
:AddProject
:feature/generalUpdate
:tech-debt/chess-cleanup
:tests/CreatePlaywrightTests
:UpdateParticleSimulatorButton
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Passing the button to the next player is right until a chair between the button and the blinds empties. Then it pulls the whole blind order forward a place. Measured four-handed — button on Ben, blinds Cal and Dee — with Cal cashing out between hands:
Ann is never asked for the big blind she owes, and Ben pays one a full orbit early. That is a real big blind out of a real stack, and it happens every time somebody stands up out of the blinds — which in a cash game is constantly. It is also the kind of thing the dealer gets blamed for, because the tool is what everyone at the table is reading position off.
What changed
The dead button rule holds the rotation to the seats for one hand instead of to the players. The button follows the small blind round, which at a table with nobody missing is the same next-player-along it always was; when that player has gone the button rests on their empty chair for a hand, and when the big blind has gone no small blind is posted. Either way the big blind advances exactly one player, which is the whole point of it.
postedBlinds, recorded where the blinds go in) rather than from the seating as it stands — by the time the question is asked, the people it turns on are the ones who have left, so the answer can't be read off the table any more.Verification
15 new tests in
tests/holdem/deadButton.test.jscovering both departures, the untouched ordinary rotation (including a thin 3-in-9 table, where holding to chairs would post blinds to nobody), the exemptions, migration, and that a one-blind hand moves exactly one big blind out of exactly one stack. Suite at 305 tests, 0 failures.Playwright MCP: dealt, walked the small blind off the table, pressed Next Hand — toast reads "dead button on seat 3", the button renders dashed on the empty chair, Dee takes the small blind badge and Ann the big, and dealing puts $1 and $2 in from those two with action to Ben. Repeated with the big blind leaving instead: no small blind badge anywhere, prompt explains it, deal posts $2 alone at a current bet of $2. Checked at 390/768/1280 — dead button on screen and dashed at every size, no prompt overflow, no sideways scroll, contrast and layout audit clean, no console errors.
Stacked on
fix/casino-holdem-discarded-pot.🤖 Generated with Claude Code
https://claude.ai/code/session_015bnp7xKUPFFSpwkYNFaPgb
Passing the button to the next player is right until a chair between the button and the blinds empties. Then it pulls the whole blind order forward a place. Measured, four-handed, button on Ben, blinds Cal and Dee, with Cal cashing out: tool: button Dee, small blind Ann, big blind Ben correct: dead button on Cal's chair, small blind Dee, big blind Ann Ann is never asked for the big blind she owes, and Ben pays one a full orbit early. That is a real big blind out of a real stack, and it happens every time somebody stands up out of the blinds — which in a cash game is constantly. It is also the kind of thing the dealer gets blamed for, because the tool is the thing everyone at the table is reading position off. The dead button rule holds the rotation to the seats for one hand instead of to the players. The button follows the small blind round, which at a table with nobody missing is the same next-player-along it always was; when that player has gone the button rests on their empty chair for a hand, and when the big blind has gone no small blind is posted. Either way the big blind advances exactly one player, which is the whole point of it. Worked out from who actually posted last hand rather than from the seating as it stands, because by the time the question is asked the people it turns on are the ones who have left. Heads-up is exempt — the button is the small blind there and there is no position to leave dead — as is a table too sparse to have a rotation to hold to, and a dealer who moves the button or names a blind by hand overrules it. Both dead positions are said out loud rather than left to look like a fault: the deal prompt explains them in a sentence, and the dead button goes hollow and dashed so the felt agrees with the words. Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_015bnp7xKUPFFSpwkYNFaPgbPull request closed