Give undo and the card picker's buttons a fingertip to land on #98
Closed
jheaps
wants to merge 1 commits from
fix/casino-holdem-touch-targets into fix/casino-holdem-audit-modal-blindspot
pull from: fix/casino-holdem-touch-targets
merge into: :fix/casino-holdem-audit-modal-blindspot
: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 first thing the repaired audit from #97 found, run on a real touch context at 44px: three controls a dealer taps on a phone that are too small to tap.
.actionUndo#cardPickerClearBtn#cardPickerCloseBtnUndo is the worst of them. It is the control a dealer reaches for having just entered the wrong action with five people waiting, and it was fourteen pixels short of a fingertip. The picker's two are short for a specific reason: the touch rule that fixes every other small button on the page is scoped to
.panelBody, and the picker is a sheet — it never reached them. One of the two is destructive.All three now sit at 44px on touch. Nothing changes on a pointer device.
A thing I got wrong, and the measurement caught. I tried an invisible hit-area pad on undo first, to avoid spending bar height — the same trick the dealer puck uses. The measurement said it did nothing: the pill clips its overflow to keep a long label on one line, and giving it a positioning context made it clip the pad too. My comment had asserted the opposite. Growing the box is the honest fix, and it turned out to cost nothing anyway: the bar goes 138px → 152px and the felt stays at 366px, because it had slack against its 220px floor rather than sitting on it as I'd assumed in an earlier round.
Verification
Playwright MCP on
hasTouch/isMobilecontexts at 390×844 and 768×1024:bettingOpengoes true → false on a tap.Product suite unchanged at 387 tests, 0 failures — CSS only.
Stacked on
fix/casino-holdem-audit-modal-blindspot.🤖 Generated with Claude Code
https://claude.ai/code/session_015bnp7xKUPFFSpwkYNFaPgb
The first thing the repaired audit found, run on a real touch context at 44px: three controls a dealer taps on a phone that are too small to tap. .actionUndo 145x30 the "I recorded that wrong" pill #cardPickerClearBtn 50x40 wipes a player's cards #cardPickerCloseBtn 50x40 closes the picker Undo is the worst of them. It is the control a dealer reaches for having just entered the wrong action with five people waiting, and it was fourteen pixels short of a fingertip. The picker's two are short because the touch rule that fixes every other small button is scoped to .panelBody, and the picker is a sheet — it never reached them. One of them is destructive. All three now sit at 44px on touch. Nothing changes on a pointer device. I tried an invisible hit-area pad on undo first, to avoid spending bar height, and the measurement said it did nothing: the pill clips its overflow to keep a long label on one line, and giving it a positioning context made it clip the pad too. Growing the box is the honest fix, and it turned out to cost nothing anyway — the bar goes from 138px to 152px and the felt stays at 366px, because the felt had slack against its 220px floor rather than sitting on it as I had assumed. Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_015bnp7xKUPFFSpwkYNFaPgbPull request closed