Skip to content

Manage Game console: names on every control, phone card chevron, unsaved-changes guards, confirms, contrast (v1.8.12) - #84

Merged
Isorgcom merged 2 commits into
mainfrom
GameNight-CheckinShape
Oct 16, 2026
Merged

Isorgcom merged 2 commits into
mainfrom
GameNight-CheckinShape

Conversation

@Isorgcom

Copy link
Copy Markdown
Owner

The check-in console (Manage Game) measured against the same guidelines as the layout editor (v1.8.8/9) and the event editor (v1.8.11): Nielsen, Shneiderman, Fitts and Hick, WCAG 2.2, WAI-ARIA. This is the first of two patch releases; the second (keyboard access to the strips, menus, dialogs and the roster) follows on its own branch.

Every control on the console now says what it is and whom it is for. Screen readers and the browser's own tools had almost nothing to go on: the Setup fields, the payout rows, the chip rows, the blinds grid, the walk-in box and every per-player control in the roster were unnamed, and a row's buttons read as six identical "Eliminate"s. Each control now names the player ("Buy in for Ava", "RSVP for Ben", "Remove Finn", "Money history for Cleo", "Move Dev"), the Setup labels are tied to their fields, payout inputs are named by place, chip rows by their value, blind cells by round and column, every column header carries its scope, the header's icon buttons keep their names when their labels collapse on a phone, the "?" tips read their text, and the add-on count (which removes the last add-on) is a real button. The modals are labelled dialogs and the Help modal's group labels are headings. In www/checkin.php and www/event_blinds.js.

A player card on a phone opens from a ▾ button as well as a tap. The card's summary row was the only way in and nothing on it was focusable, so a keyboard or switch user could not reach rebuys, cash, table, RSVP, Eliminate, Notes or Remove on a phone, and nothing hinted that the row opened at all. Each card carries a chevron (aria-expanded, 44px on touch) beside the status badge. The bulk-action bar is hidden on phones: the checkboxes it acts on live in the desktop table.

Setup guards unsaved work. Leaving the page with unsaved Setup changes gets the browser's prompt, the back arrow asks first, Load preset asks before dropping unsaved edits, and a payout total over 100% is refused before anything is saved (it used to be caught after the game settings had already been written). After Save game the amber dot goes out and "Saved ✓" shows for a moment; the dot used to stay lit.

More actions ask first, and name the player. Bulk Eliminate, un-ticking a buy-in, putting a cashed-out player back in play, taking a player off a table through Move, switching off a reward chip that holds amounts; Deny says who. A declined confirm leaves the control exactly as it was. The console's passing notices are announced through a live region, as is the saving progress card.

Fixed: contrast and sizes. Light greys (#94a3b8) on section titles, seat info, log and ledger times, chip placeholders, the "$" prefix, hints and the Help modal's headings are #64748b; "Playing", pool totals, payout amounts and profit (#22c55e) are #15803d; Eliminate, Approve, Finish, Add Table and the reward chips take the #15803d fill Save & Send took in 1.8.11; the warning ambers are #b45309; the winner's "1st" and the "?" tips are readable. Input borders are unchanged. The small row controls are at least 24px, and finger-sized on touch through a pointer: coarse block.

Fixed: Setup's tab strip lit two tabs on a phone. With five or six tabs the strip wraps, and the sliding thumb spanned both rows. The thumb now takes the active button's row as well as its width (www/pk-seg.js), which every segmented control inherits.

Verified on dev: a new self-seeding suite (50 checks: names, scope, the chevron by keyboard, the hidden bulk bar, computed colours, target sizes, the wrapped strip, the dot and tick after Save, the live region, every guard and confirm declined), the existing check-in suites, php -l on every page, the generated-JS sweep, the double-dispatch sweep (948 controls, 0 failed) and the escaping greps.

🤖 Generated with Claude Code

Isorgcom and others added 2 commits October 16, 2026 20:41
…ved-changes guards, confirms, contrast

Every control on the check-in console has an accessible name and the row
controls name the player; column headers carry scope; the Setup, payout,
chip and blinds fields are labelled; the modals are labelled dialogs. Phone
cards gain a chevron button to open them and the bulk bar is hidden on
phones. Setup gets beforeunload, a confirm on the back arrow and on Load
preset, and the payout total is refused before anything is saved. Bulk
Eliminate, un-ticking a buy-in, clearing a cash-out, taking a player off a
table, switching off a reward chip with values and Deny all ask, naming the
player. The toast and pending banner are live regions. Contrast and target
sizes fixed; the segmented-control thumb takes the active button's row so a
wrapped strip no longer lights two tabs.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@Isorgcom
Isorgcom merged commit 96d5478 into main Oct 16, 2026
1 check passed
@Isorgcom
Isorgcom deleted the GameNight-CheckinShape branch October 16, 2026 20:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant