Call a bet a bet and a raise a raise #66
Closed
jheaps
wants to merge 1 commits from
fix/casino-holdem-bet-vs-raise into fix/casino-holdem-deal-around-broke
pull from: fix/casino-holdem-bet-vs-raise
merge into: :fix/casino-holdem-deal-around-broke
: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 bar decided which word to use from what the acting player still owes. That gets the big blind's option backwards — they owe nothing, so it offered "Bet", but their own blind is a live bet and putting more in is a raise. And it gets the other half wrong too: open the pad to make a first bet on the flop and the confirm button said "Raise to", then wrote "Ann's raise to $10" into the undo control for it. Stacked on #65.
The arithmetic was always right —
minRaiseToreturns two big blinds for the big blind's option and one for an opening bet, and I checked both before touching anything. This is only what it's called. For a tool a dealer announces the action from, that isn't a small thing: a dealer who says "bet" when the big blind puts more in gets corrected by the table.The test is whether there's a live bet to raise, not whether this player owes anything, and it's one helper rather than a condition written out five times.
The warnings follow the same word
Under-minimum with a bet in front of you leaves you calling it; with an empty pot there's nothing to call.
Same for the all-in-for-less note, and for the amount field's screen-reader label, which announced "Raise to amount" for a bet.
Validation
8 tests (206 total), including a table playing without blinds — which opens with a bet, and is the one preflop case where the old condition happened to be right.
Driven through Playwright at seven viewports in both spots: every label correct, contrast clean, no console errors. (The 844x390 and 360x640 offenders are the known bar-over-seat cases from #63, unchanged — this PR only touches strings.)
Found and deliberately not touched
I fuzzed 40 hands of random actions with rebuys first, looking for something bigger. Chips stayed conserved to the cent throughout, no negative stacks, and the acting seat was always a seat that could act — the engine held up. It did turn up one disagreement:
isStreetCompletereturns false during an all-in run-out where one player still has chips and hasn't acted, whileactingSeatIndexis correctly null. It has no symptom — the bar picks its layout fromactingSeatIndexand shows "Deal Turn" as it should. Changing a betting-round predicate with no observable fault behind it is a worse trade than leaving it written down here.The bar decided which word to use from what the acting player still owes. That gets the big blind's option backwards -- they owe nothing, so it offered "Bet", but their own blind is a live bet and putting more in is a raise. And it gets the other half wrong too: open the pad to make a first bet on the flop and the confirm button said "Raise to", then wrote "Ann's raise to $10" into the undo control for it. preflop, action back to the big blind was: Fold | Check | Bet pad: "Raise to" now: Fold | Check | Raise pad: "Raise to" flop, nobody has bet was: Fold | Check | Bet pad: "Raise to" undo: "Ann's raise to $10" now: Fold | Check | Bet pad: "Bet" undo: "Ann's bet of $10" The arithmetic was always right -- minRaiseTo returns two big blinds for the big blind's option and one for an opening bet, and I checked both before touching anything. This is only what it is called. For a tool a dealer announces the action from, that is not a small thing: a dealer who says "bet" when the big blind puts more in gets corrected by the table. The test is whether there is a live bet to raise, not whether this player owes anything, and it is one helper rather than a condition written out five times. The warnings follow the same word. Under-minimum with a bet in front of you leaves you calling it; with an empty pot there is nothing to call: "$3 is under the $4 minimum. A legal raise is $4 or more -- otherwise it's a call, or all-in." "$1 is under the $2 minimum. A legal bet is $2 or more -- otherwise it's a check, or all-in." Also the field's screen-reader label, which announced "Raise to amount" for a bet. 8 tests (206 total), including a table playing without blinds -- which opens with a bet, and is the one preflop case where the old condition happened to be right. Driven through the UI at seven viewports in both spots: every label correct, contrast clean, no console errors. One thing found and deliberately not touched. Fuzzing 40 hands with random actions and rebuys -- chips stayed conserved to the cent throughout, no negative stacks, and the acting seat was always a seat that could act -- turned up one disagreement: isStreetComplete returns false during an all-in run-out where one player still has chips and hasn't acted, while actingSeatIndex is correctly null. It has no symptom, because the bar picks its layout from actingSeatIndex and shows "Deal Turn" as it should. Changing a betting-round predicate with no observable fault behind it is a worse trade than leaving it written down. Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_015bnp7xKUPFFSpwkYNFaPgbPull request closed