Add App.confirm() in common.js: a promise-based dialog styled like the
site's modals, with a title, multi-line message and custom button labels.
Destructive actions use a red OK button and focus Cancel by default;
Escape and backdrop clicks cancel, and Tab stays inside the dialog.
Use it for folding when a check is possible, leaving the table,
confirming showdown winners and deleting tables from the lobby. After the
dialog closes, re-check that the action is still valid (turn not passed,
pot not already awarded, table still listed) before sending it.
Also add a "poker-test" launch config that runs on port 4672 with the
example keys from .env.example, for local browser testing.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Remove the deck, hole cards, board, hand evaluator and reveal logic
(cards are dealt physically; the site only tracks bets, pots and stacks)
- Showdown now waits for a winner per pot (main/side), chosen by a player
still in the hand or the host; multiple winners split the pot
- All-in with no further betting goes straight to showdown
- Remove the 30s action clock / auto sit-out (everyone is at the same table)
- UI: winner picker panel (main winner auto-fills side pots), compact table
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Hand engine (server/hand.js): crypto-shuffled deck kept server-side,
blinds (heads-up button = SB), min-raise rules incl. incomplete all-in,
uncalled bet refunds, side pots, split pots, all-in runout
- Hand evaluator (server/cards.js) and node:test suite (npm test)
- Table flow: hands auto-continue after host START, 30s action clock
(timeout = check/fold + sit out), sit out / sit in, rebuy, mid-hand leave
folds and keeps the seat reserved until the hand ends, pause freezes all clocks
- Only each player's own hole cards are sent until a showdown/runout reveal;
all actions validated server-side
- Play UI: board, hole cards, bets, action tags, turn timer, raise panel with
presets, showdown results with winning cards highlighted, compact 7+ layout
- Remove the host crown and the temporary "next phase" control
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>