Make the pot button offer a pot-sized raise #94
Closed
jheaps
wants to merge 1 commits from
fix/casino-holdem-pot-sized-raise into fix/casino-holdem-chips-to-count-out
pull from: fix/casino-holdem-pot-sized-raise
merge into: :fix/casino-holdem-chips-to-count-out
: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.
The raise pad worked its quick amounts out as "the current bet plus the pot as it stands". That leaves out the raiser's own call, which is in the pot before the raise is measured off it, so every amount came out short.
Measured pre-flop at 1/2, four-handed:
A pot raise there is: call the $2, which makes the pot $5, then raise $5. The half-pot was so short it clamped up to the minimum and sat next to the Min button showing the same $4 twice — which is how it went unnoticed, since it looked like a table where those two happened to coincide.
"Pot" is not a suggestion. It's a definite number players say out loud, and a dealer tapping the button that claims to be it should be recording what was actually said.
What changed
The rule moves into
Betting.potRaiseTo, next to the other rules and testable on its own, rather than living as arithmetic inside a DOM renderer:Facing no bet it comes out as a plain pot-sized bet, because both the bet and the amount owed are zero. Facing a bet it comes out as three times the bet plus the dead money, which is the shape a player checks it against.
Verification
10 new tests in
tests/holdem/potRaise.test.js: pre-flop from each of the three positions (the small blind owes less so their pot raise is smaller; the big blind owes nothing so it's just the pot), post-flop facing a bet checked against both the long form and3×bet + dead money, facing no bet, a non-existent seat, that no fraction ever lands below a call, and that cent-sized blinds don't drift. Suite at 380 tests, 0 failures.Playwright MCP on a phone viewport: pre-flop the pad now reads
Min $4 · ½ pot $4.50 · Pot $7 · All-in $500; tapping Pot sets the draft to 7 and confirming lands Dee committed $7 with the pot at $10. On the flop facing a $10 bet into a $38 pot it readsMin $20 · ½ pot $34 · Pot $58, all three checked by hand. Contrast and layout audit clean, no console errors.Correction to #93. In that PR I said the standings' wide five-column layout has never rendered at any viewport. That was wrong, and I've fixed the description there. Measured across 390–3440px: it fires at 768px, where the sidebar becomes a full-width panel and the container reaches 41rem. It's unreachable only on desktop, where the sidebar is pinned at 320px.
Stacked on
fix/casino-holdem-chips-to-count-out.🤖 Generated with Claude Code
https://claude.ai/code/session_015bnp7xKUPFFSpwkYNFaPgb
The raise pad worked its quick amounts out as "the current bet plus the pot as it stands". That leaves out the raiser's own call, which is in the pot before the raise is measured off it, so every amount came out short. Measured pre-flop at 1/2: offered: Min $4 ½ pot $4 Pot $5 correct: Min $4 ½ pot $4.50 Pot $7 A pot raise there is: call the $2, which makes the pot $5, then raise $5. And the half-pot was so short it clamped up to the minimum and sat next to the Min button showing the same $4 twice, which is how it went unnoticed — it looked like a table where those two happened to coincide. "Pot" is not a suggestion. It is a definite number players say out loud, and a dealer tapping the button that claims to be it should be recording what was actually said. The rule moves into Betting.potRaiseTo, next to the other rules and testable on its own, rather than living as arithmetic inside a DOM renderer: raise to = the current bet + (pot + what they owe) × fraction Facing no bet it comes out as a plain pot-sized bet, because both the bet and the amount owed are zero. Facing a bet it comes out as three times the bet plus the dead money, which is the shape a player checks it against. Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_015bnp7xKUPFFSpwkYNFaPgbPull request closed