Hold'em dealer: 55 polish rounds, one merge #101

Merged
jheaps merged 71 commits from release/casino-holdem-polish into master 2026-09-02 10:00:15 -06:00
2 changed files with 18 additions and 10 deletions
Showing only changes of commit ebf22e3153 - Show all commits
@@ -296,7 +296,7 @@
<nav id="rulingsIndex" class="rulingsIndex" aria-label="Jump to a ruling"></nav> <nav id="rulingsIndex" class="rulingsIndex" aria-label="Jump to a ruling"></nav>
<section class="ruling"> <section class="ruling" data-short="Misdeal">
<h3>Redeal it — misdeal</h3> <h3>Redeal it — misdeal</h3>
<ul> <ul>
<li>The first card goes to the wrong seat.</li> <li>The first card goes to the wrong seat.</li>
@@ -306,7 +306,7 @@
</ul> </ul>
</section> </section>
<section class="ruling"> <section class="ruling" data-short="Board card early">
<h3>A board card turned too early</h3> <h3>A board card turned too early</h3>
<p> <p>
If the fourth board card gets turned before the betting round is finished, If the fourth board card gets turned before the betting round is finished,
@@ -315,7 +315,7 @@
</p> </p>
</section> </section>
<section class="ruling"> <section class="ruling" data-short="Out of turn">
<h3>Acting out of turn</h3> <h3>Acting out of turn</h3>
<p> <p>
A one-off is usually just backed up if no one has acted behind them. A one-off is usually just backed up if no one has acted behind them.
@@ -323,7 +323,7 @@
</p> </p>
</section> </section>
<section class="ruling"> <section class="ruling" data-short="Short all-in">
<h3>A short all-in doesn't reopen the betting</h3> <h3>A short all-in doesn't reopen the betting</h3>
<p> <p>
Somebody shoving in less than a full raise — say $3 more when the last Somebody shoving in less than a full raise — say $3 more when the last
@@ -338,7 +338,7 @@
</p> </p>
</section> </section>
<section class="ruling"> <section class="ruling" data-short="Uncalled bet">
<h3>Chips nobody called come back</h3> <h3>Chips nobody called come back</h3>
<p> <p>
Bet more than anyone was able to call and the excess is returned to you Bet more than anyone was able to call and the excess is returned to you
@@ -348,7 +348,7 @@
</p> </p>
</section> </section>
<section class="ruling"> <section class="ruling" data-short="Oversized chip">
<h3>One big chip, nothing said</h3> <h3>One big chip, nothing said</h3>
<p> <p>
The most common argument at a home table. A player facing a bet who The most common argument at a home table. A player facing a bet who
@@ -364,7 +364,7 @@
</p> </p>
</section> </section>
<section class="ruling"> <section class="ruling" data-short="Minimum raise">
<h3>A raise has to be a full raise</h3> <h3>A raise has to be a full raise</h3>
<p> <p>
At least as much again as the last raise, or the big blind if there At least as much again as the last raise, or the big blind if there
@@ -375,7 +375,7 @@
</p> </p>
</section> </section>
<section class="ruling"> <section class="ruling" data-short="Odd chip">
<h3>The odd chip in a split pot</h3> <h3>The odd chip in a split pot</h3>
<p> <p>
When a chopped pot won't divide evenly, the odd chip goes to the first When a chopped pot won't divide evenly, the odd chip goes to the first
@@ -385,7 +385,7 @@
</p> </p>
</section> </section>
<section class="ruling"> <section class="ruling" data-short="String bet">
<h3>Betting in one motion — the string bet</h3> <h3>Betting in one motion — the string bet</h3>
<p> <p>
A bet is whatever goes in on the first trip to the stack, unless the A bet is whatever goes in on the first trip to the stack, unless the
@@ -478,7 +478,15 @@ document.addEventListener("DOMContentLoaded", () => {
const jump = document.createElement("button"); const jump = document.createElement("button");
jump.type = "button"; jump.type = "button";
jump.className = "rulingsIndexBtn"; jump.className = "rulingsIndexBtn";
jump.textContent = heading.textContent; // A short label where the ruling gives one. The headings are sentences —
// "A short all-in doesn't reopen the betting" — and nine of those stacked
// one per row made the index 342px tall on a phone, which is most of the
// sheet before the first ruling. "Short all-in" says the same thing to
// somebody who is looking for it, and three fit on a line.
jump.textContent = section.dataset.short || heading.textContent;
// The full heading is still what it announces, so the short label never
// costs a screen reader the sentence.
if (section.dataset.short) jump.setAttribute("aria-label", heading.textContent);
jump.addEventListener("click", () => { jump.addEventListener("click", () => {
section.scrollIntoView({ block: "start", behavior: "smooth" }); section.scrollIntoView({ block: "start", behavior: "smooth" });
// The heading is what the dealer is now reading, so that is where the // The heading is what the dealer is now reading, so that is where the