Deal the straddle, instead of leaving the dealer to fake it #102
Closed
jheaps
wants to merge 1 commits from
feat/casino-holdem-straddle into fix/casino-holdem-landscape-ring
pull from: feat/casino-holdem-straddle
merge into: :fix/casino-holdem-landscape-ring
: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.
A straddle is a blind raise put out before the cards by the player left of the big blind, for twice it. Home games run them constantly, and the tool had no idea they existed — so a dealer's only way through was to deal the hand and have the straddler "raise" to $4, which gets the money right and the other two rules wrong.
Three rules at once:
Tap Straddle on the deal prompt and the tool posts it, puts the right player on the clock and prices the raise. The seat wears an STR badge for the hand, read off what the deal actually posted rather than off the count, so the badge can't outlive the chips it stands for. It's a one-hand decision like posting in, and it clears when the button moves. There's a rulings entry for it too, since the argument it settles is one a dealer gets asked about.
Where the control sits, and what it cost
Its own line cost 44px of felt on every deal prompt, straddle or no straddle — measured at 390x844, and this bar is docked over the seats. So it rides on the deal row, which was already there. Three buttons across a 360px phone then want to wrap, which made the bar 64px taller and put the bottom seat three fifths behind it — this layout deliberately doesn't shrink the felt to suit (see the
max-width: noneoverride, where capping was tried and rejected in an earlier round). A 7rem floor on the deal button keeps the row to one line, so arming a straddle costs no felt at all: the bar is 147px with or without, and the bottom seat clears it at every width measured.Validated
One thing this turned up
LayoutAudit.runAll()does not run the contrast check — it isn't in the list — and touch targets are opt-in behind a flag. So "audit clean" in these rounds has meant nine checks, not eleven, unless the other two were called by hand. Both work when called; they just aren't wired in. That's the next round, not this one.A straddle is a blind raise put out before the cards by the player left of the big blind, for twice it. Home games run them constantly, and the tool had no idea they existed — so a dealer's only way through was to deal the hand and have the straddler "raise" to $4, which gets the money right and the other two rules wrong. There are three at once: - the amount doubles as it goes left, and re-straddles carry on doubling; - first to act is left of the *straddler*, not left of the big blind, and the straddler keeps the option when it comes back round even if nobody raised; - the minimum raise is twice the straddle. Measured off the big blind underneath it, a $2/$4 game prices the next raise at $6, and every player at the table will argue — correctly. Tap Straddle on the deal prompt and the tool posts it, puts the right player on the clock and prices the raise. The seat wears an STR badge for the hand, read off what the deal actually posted rather than off the count, so the badge can't outlive the chips it stands for. It's a one-hand decision, like posting in, and it clears when the button moves. The control sits on the deal row rather than a line of its own: measured at 390x844, its own line cost 44px of felt on every deal prompt, straddle or no straddle, and this bar is docked over the seats. Three buttons across a 360px phone want to wrap, which made the bar 64px taller and put the bottom seat three fifths behind it — this layout deliberately doesn't shrink the felt to suit, so the deal button is given a 7rem floor instead, which keeps the row to one line and the cost to nothing. 20 new tests, checked by breaking each of the three rules on purpose first: the wrong first-to-act, the minimum measured off the big blind, and a flat rather than doubling chain each fail a different one. Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_015bnp7xKUPFFSpwkYNFaPgbjheaps referenced this pull request2026-09-02 03:33:32 -06:00
Pull request closed