Instead of adding surface area to an already-deep chain, I audited what has accumulated across these rounds. It turned up an inconsistency worth fixing:
Double-tapping a seat to fold someone was undoable. Tapping Fold in the action bar — the button a dealer actually uses all hand — was not. Nor was Call, Raise, or dealing a street. The safest path through the tool was the shortcut; the main one had no way back.
Every action from the bar now goes through one place that records it first.
The bar carries a standing Undo naming what it will take back — "↶ Bens fold", "↶ dealing the flop".
Twelve steps deep. A misclick usually gets noticed a beat late, so one level of undo would only cover the luckiest case.
Its a control, not a toast per action. A dealer taps this bar constantly; a toast after every fold is noise theyd learn to ignore — precisely when theyd miss the one that mattered.
The history is discarded whenever a hand starts or settles, since those snapshots describe a hand that no longer exists. The whole-hand Undo on the toast already covers that boundary.
Validation (Playwright, headed)
The scenario it exists for: Ann calls, Ben is folded by mistake. Undo restores Ben unfolded, action back on Ben, and the button reverts to naming Anns call. A second Undo steps back past the call — pot $5 → $3, stack 198 → 200, action back on Ann.
Dealing a street reverts: flop → preflop with currentBet 0 → 2.
Boundaries hold: history is empty immediately after starting a hand and after resolving a pot, so nothing can be undone into a finished hand.
The cap is real: after 25 actions, exactly 12 undo steps are available — the history doesnt grow without limit.
Status row wraps cleanly at 390px, undo pill on the second line beside the think timer. No console errors.
Based on feature/casino-holdem-pace (PR #25) — merge order #22 → #23 → #24 → #25 → this (#21 is already in master).
Instead of adding surface area to an already-deep chain, I audited what has accumulated across these rounds. It turned up an inconsistency worth fixing:
**Double-tapping a seat to fold someone was undoable. Tapping Fold in the action bar — the button a dealer actually uses all hand — was not.** Nor was Call, Raise, or dealing a street. The safest path through the tool was the shortcut; the main one had no way back.
- Every action from the bar now goes through one place that records it first.
- The bar carries a **standing Undo naming what it will take back** — "↶ Bens fold", "↶ dealing the flop".
- **Twelve steps deep.** A misclick usually gets noticed a beat late, so one level of undo would only cover the luckiest case.
- Its a **control, not a toast per action**. A dealer taps this bar constantly; a toast after every fold is noise theyd learn to ignore — precisely when theyd miss the one that mattered.
- The history is **discarded whenever a hand starts or settles**, since those snapshots describe a hand that no longer exists. The whole-hand Undo on the toast already covers that boundary.
## Validation (Playwright, headed)
- **The scenario it exists for**: Ann calls, Ben is folded by mistake. Undo restores Ben unfolded, action back on Ben, and the button reverts to naming Anns call. A second Undo steps back past the call — pot $5 → $3, stack 198 → 200, action back on Ann.
- **Raise reverts completely**: stack 200 → 175 → 200, currentBet 2 → 25 → 2, pot $5 → $30 → $5.
- **Dealing a street reverts**: flop → preflop with currentBet 0 → 2.
- **Boundaries hold**: history is empty immediately after starting a hand and after resolving a pot, so nothing can be undone into a finished hand.
- **The cap is real**: after 25 actions, exactly 12 undo steps are available — the history doesnt grow without limit.
- Status row wraps cleanly at 390px, undo pill on the second line beside the think timer. No console errors.
Based on `feature/casino-holdem-pace` (PR #25) — merge order **#22 → #23 → #24 → #25 → this** (#21 is already in master).
An audit of what's accumulated turned up an inconsistency worth fixing: double-
tapping a seat to fold someone was undoable, but tapping Fold in the action bar
— the button a dealer actually uses all hand — was not. Nor was Call, Raise, or
dealing a street. The safest path through the tool was the shortcut, and the
main one had no way back.
Every action taken from the bar now goes through one place that records it
first, and the bar carries a standing Undo naming what it will take back:
"Ben's fold", "dealing the flop". Twelve steps deep, because a misclick usually
gets noticed a beat late and one level of undo would only cover the luckiest
case.
It's a control rather than a toast per action. A dealer taps this bar
constantly, and a toast after every fold is noise they'd learn to ignore —
which is precisely when they'd miss the one that mattered.
The history is discarded whenever a hand starts or settles, because those
snapshots describe a hand that no longer exists. The whole-hand Undo on the
toast already covers that boundary.
Co-Authored-By: Claude Sonnet 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_015bnp7xKUPFFSpwkYNFaPgb
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.
Instead of adding surface area to an already-deep chain, I audited what has accumulated across these rounds. It turned up an inconsistency worth fixing:
Double-tapping a seat to fold someone was undoable. Tapping Fold in the action bar — the button a dealer actually uses all hand — was not. Nor was Call, Raise, or dealing a street. The safest path through the tool was the shortcut; the main one had no way back.
Validation (Playwright, headed)
Based on
feature/casino-holdem-pace(PR #25) — merge order #22 → #23 → #24 → #25 → this (#21 is already in master).