Add a persistent hand history log to the Texas Hold'em dealer tool

Give the dealer a running record of resolved pots — hand number, total
pot, who got paid what, and the time — instead of losing that
information the moment the pot wizard closes. It's the kind of audit
trail a real dealer needs when a chip count gets disputed after the
fact.

- state.js tracks state.handNumber and state.handHistory (capped at 200
  entries) and persists both through the existing localStorage save/load
  path, with backfill defaults for tables saved before this change.
- potWizard.js now hands its final payouts back to the caller instead of
  discarding them once "Start Next Hand" is clicked.
- main.js records a history entry (skipping hands where nobody actually
  won anything) before advancing to the next hand, and wires up a "Clear
  history" control that also resets the hand counter.
- A new sidebar panel lists history entries newest-first; the header
  shows a running "Hand #N" badge next to the existing subtitle.

Verified via Playwright MCP: seated two players, resolved a pot, and
confirmed the header's hand counter incremented, the history panel
listed the payout, the entry survived a full page reload (localStorage
persistence), and Clear History reset both the log and the counter. No
console errors during the flow.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01C3NiiUDimoKDJ8GjC3KL3x
This commit is contained in:
2026-08-31 17:15:23 -06:00
co-authored by Claude Sonnet 5
parent 105a74bc51
commit 68e263f325
6 changed files with 156 additions and 2 deletions
@@ -51,6 +51,18 @@ body {
font-size: 0.9rem;
}
.handCounterBadge {
display: inline-block;
margin-top: 0.5rem;
padding: 0.2rem 0.65rem;
border-radius: 999px;
background: rgba(216, 180, 106, 0.12);
border: 1px solid rgba(216, 180, 106, 0.4);
color: #d8b46a;
font-size: 0.75rem;
letter-spacing: 0.04em;
}
#holdemHeaderActions {
display: flex;
gap: 0.6rem;
@@ -593,6 +605,50 @@ body {
padding: 0.3rem 0.5rem;
}
#handHistoryList {
display: flex;
flex-direction: column;
gap: 0.4rem;
max-height: 260px;
overflow-y: auto;
}
.handHistoryRow {
background: #141414;
border: 1px solid #2c2c2c;
border-radius: 6px;
padding: 0.45rem 0.6rem;
}
.handHistoryRowHeader {
display: flex;
align-items: baseline;
gap: 0.5rem;
font-size: 0.8rem;
}
.handHistoryHandNumber {
color: #d8b46a;
font-weight: 600;
}
.handHistoryPot {
color: #eee;
}
.handHistoryTime {
margin-left: auto;
color: #777;
font-size: 0.72rem;
}
.handHistoryPayouts {
margin-top: 0.15rem;
color: #aaa;
font-size: 0.75rem;
line-height: 1.4;
}
#tableNotes {
width: 100%;
box-sizing: border-box;