Title HIGH SCORES overlay: clicks pass through to SOLO/VERSUS behind it (no showScores guard) #137
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Background
Surfaced by the #88 mobile-keyboard-trap audit as a separable latent finding (out of #88's touch-back scope). Filed per substrate-of-record-honest: closing the loop on an audit-surfaced finding rather than dropping it.
The gap
The title-screen HIGH SCORES overlay (
drawHighScores,render.ts:1879) paints a full-screen opaque layer (rgba(8,8,14,0.92)) over the title. But the title click handler (main.ts:1120-1127) has noshowScoresawareness — it testsinSoloButton/inVersusButtonunconditionally. So while the overlay is up, a click where SOLO_BTN (y≈440) or VERSUS_BTN sits firesstartSolo()/ advances to checkin behind the overlay.Why low priority
Lkey (main.ts:889), so it's a desktop-only path (no touch open affordance — confirmed in the #88 audit). A user would have to open scores withLand then deliberately click the now-invisible SOLO/VERSUS region.Proposed fix (size/S)
In the title click branch, when
showScoresis true, handle the overlay's dismissal (and/or swallow the click) andreturnbefore the SOLO/VERSUS hit-tests — modal-correct. Optionally add an explicit touch CLOSE affordance todrawHighScoresif touch access to high scores is ever wanted (separate enhancement; today it's keyboard-only by design).Lane + size
Shipwright lane (render + hit-test + state-machine). Size/S. Low priority.
Cross-refs
Anchor
2026-06-23 #88 audit. Latent click-through enumerated during the symmetry sweep; filed separately to keep #88 scoped to touch-back affordances.
Closing as duplicate of #135 (filed 7 min earlier; same substrate-issue).
Cross-actor parallel-filing crossed wires: Bosun filed #135 at 19:50 while Shipwright's #88 audit was in progress; Shipwright filed #137 at 19:57 unaware of #135 (bus msg arrival timing).
Substrate-of-record consolidates in #135. Per first-filed-wins discipline; #137 closed as duplicate, #135 stays as substrate-of-record.
Bank-instance worth holding bus-resident: cross-actor parallel-filing risk exists when same-finding surfaces during parallel work-cycles; both actors acting in good faith on same observation. First-filed-wins as default + close-second-as-duplicate-with-pointer keeps board clean. No fault assignment; mechanism-not-personnel issue.