Shorten the rulings index to the words a dealer would say #75

Closed
jheaps wants to merge 1 commits from fix/casino-holdem-rulings-index-compact into fix/casino-holdem-rulings-index
Owner

#74 added an index to the rulings sheet and I wrote down what it cost: 342px at the top of a 390px-wide sheet, so a dealer reading straight through scrolls past the whole thing first. That was an honest trade at the time. It's also fixable.

The index was labelled with the section headings, which are sentences — "A short all-in doesn't reopen the betting" — so nine of them stacked one per row. A dealer hunting for that ruling is looking for the words "short all-in", not the sentence.

Misdeal          Board card early    Out of turn
Short all-in     Uncalled bet        Oversized chip
Minimum raise    Odd chip            String bet
Index height Rows
Phone 342px → 143px 9 → 3
Desktop → 70px → 2
Landscape phone → 94px → 2

The first ruling now starts 309px into the sheet on a phone rather than ~440.

Each short label lives on its own section as data-short, next to the heading it shortens, and the index falls back to the heading when there isn't one — so a ruling added later still appears, still without anyone having to write it twice. The full sentence stays as the button's aria-label, so the short label never costs a screen reader the heading.

Validation

Checked at four sizes across touch and pointer contexts: nine labels, nine aria-labels, every chip 44px on touch, jumping still lands and focuses the right heading, contrast clean, no console errors. 244 tests still passing.

Also looked at, and left alone

The card picker already refuses a card that's been dealt — disabled, titled "Already dealt to Ann" — and every one of its 52 buttons clears 44px on a phone.

A deliberately messy nine-seat table (25/50 blinds, two folded players, a busted seat, accented and hyphenated names, a $125,000 stack, a filled notes field) audits clean at every size except the landscape phone already documented in #63.

#74 added an index to the rulings sheet and I wrote down what it cost: **342px** at the top of a 390px-wide sheet, so a dealer reading straight through scrolls past the whole thing first. That was an honest trade at the time. It's also fixable. The index was labelled with the section headings, which are sentences — *"A short all-in doesn't reopen the betting"* — so nine of them stacked one per row. A dealer hunting for that ruling is looking for the words **"short all-in"**, not the sentence. ``` Misdeal Board card early Out of turn Short all-in Uncalled bet Oversized chip Minimum raise Odd chip String bet ``` | | Index height | Rows | | --- | --- | --- | | Phone | 342px → **143px** | 9 → **3** | | Desktop | → **70px** | → **2** | | Landscape phone | → **94px** | → **2** | The first ruling now starts 309px into the sheet on a phone rather than ~440. Each short label lives on its own section as `data-short`, next to the heading it shortens, and the index falls back to the heading when there isn't one — so a ruling added later still appears, still without anyone having to write it twice. The full sentence stays as the button's `aria-label`, so **the short label never costs a screen reader the heading**. ## Validation Checked at four sizes across touch and pointer contexts: nine labels, nine aria-labels, every chip 44px on touch, jumping still lands and focuses the right heading, contrast clean, no console errors. 244 tests still passing. ## Also looked at, and left alone The card picker already refuses a card that's been dealt — disabled, titled "Already dealt to Ann" — and every one of its 52 buttons clears 44px on a phone. A deliberately messy nine-seat table (25/50 blinds, two folded players, a busted seat, accented and hyphenated names, a $125,000 stack, a filled notes field) audits clean at every size except the landscape phone already documented in #63.
jheaps added 1 commit 2026-09-01 17:37:02 -06:00
Last change added an index to the rulings sheet and I wrote down what it cost: 342px
at the top of a 390px-wide sheet, so a dealer reading straight through scrolls past
the whole thing first. That was an honest trade at the time. It is also fixable.

The index was labelled with the section headings, which are sentences -- "A short
all-in doesn't reopen the betting" -- so nine of them stacked one per row. A dealer
hunting for that ruling is looking for the words "short all-in", not the sentence.

  Misdeal          Board card early    Out of turn
  Short all-in     Uncalled bet        Oversized chip
  Minimum raise    Odd chip            String bet

  phone       342px -> 143px   9 rows -> 3
  desktop      ~200 -> 70px            -> 2
  landscape          -> 94px           -> 2

The first ruling now starts 309px into the sheet on a phone rather than 440.

Each short label lives on its own section as data-short, next to the heading it
shortens, and the index falls back to the heading when there is not one -- so a ruling
added later still appears, still without anyone having to write it twice. The full
sentence stays as the button's aria-label, so the short label never costs a screen
reader the heading.

Checked at four sizes across touch and pointer contexts: nine labels, nine aria-labels,
every chip 44px on touch, jumping still lands and focuses the right heading, contrast
clean, no console errors. 244 tests still passing.

Also looked at, and left alone: the card picker refuses a card already dealt --
disabled, titled "Already dealt to Ann" -- and every one of its 52 buttons clears 44px.
A messy nine-seat table with 25/50 blinds, two folded players, a busted seat, accented
and hyphenated names, a $125,000 stack and a filled notes field audits clean at every
size but the landscape phone already known from #63.

Co-Authored-By: Claude Opus 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_015bnp7xKUPFFSpwkYNFaPgb
jheaps closed this pull request 2026-09-02 09:57:53 -06:00

Pull request closed

Please reopen this pull request to perform a merge.
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jheaps/JoshHeaps.Net#75