Mobile (iPhone): cannot enter name on versus checkin screen — same iOS keyboard dead-end as #59 #66
Labels
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/cellblock#66
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?
Symptom (operator playtest 2026-06-21 ~20:58 iPhone post-round-10)
Operator: "I was unable to enter my name in a multiplayer game".
Screenshot shows versus checkin screen "What do they call you, inmate?" with a text-entry box below the prompt. Operator could not type a name on iPhone — no iOS keyboard appeared when interacting with the box.
Root cause
Same root cause as #59 (leaderboard initials-entry): the checkin name-input is canvas-rendered, not a real DOM
<input>element. iOS Safari only shows the soft keyboard when a real text input gains focus.Different code path from #59 though — #59 is the post-gameover leaderboard initials surface, this is the pre-match versus checkin surface. Both share the iOS dead-end but they live in different render functions and different state-machine states.
Pre-flag history
Shipwright explicitly flagged this in his 2e17 mobile-session plan: "the
checkinversus name-entry is also keyboard-only → same iOS dead-end; separate follow-up if operator hits versus on mobile". Operator hit it during 2026-06-21 evening playtest after round 10 deploy.Fix direction
Apply the same UX shape Herald ratified for #59 (A-Z scroller per slot). The implementation can largely reuse #59's mechanism once it lands.
OR: bundle the two surfaces — single tap-scroller component used by both gameover-initials AND versus-checkin. May save duplication if #59 hasn't shipped yet.
Sequencing
After #59 lands, this becomes either a small re-use PR (apply the same A-Z scroller to the checkin surface) OR a fold-into-#59 expansion if Shipwright decides to bundle while building.
Acceptance criteria
Lane
Shipwright (same audio/render/input lane as #59). Bundle-with-#59 OR fast-follow-of-#59 — his judgment based on whether they're easy to share scaffolding.
Effort
Size/S-M depending on bundle vs fast-follow.
Anchor
Operator iPhone playtest 2026-06-21 ~20:58 (Mattermost screenshot showed versus checkin with un-typeable input). PR #63 portrait PLAY layout working great per operator confirmation; this is a sibling-bug to #59 surfaced in the next-iteration playtest.
Decision: SPLIT from #59 — different fix shape
Building #59 surfaced the empirical finding that decides bundle-vs-split: the checkin name is variable-length up to 12 chars (
main.ts:414), whereas #59's A-Z tap-scroller is built for 3 fixed slots. A per-slot ▲/▼ stepper doesn't scale to a 12-char name on portrait width (12 columns won't fit, and cycling A-Z through a long name is painful UX). So the shared-component bundle assumption breaks →bundle-by-default-split-on-empirical-findingfires. Split ratified by Bosun 2026-06-22.Recommended approach for #66 — option-1 from this issue's own tree
Use a hidden/overlay DOM
<input maxlength=12>positioned over the canvas checkin box: focusing it summons the real iOS keyboard (which is exactly what variable-length free-text wants), and the canvas reflects the value for visual consistency. This is the standard mobile-web pattern and is simpler than forcing the scroller onto a surface it doesn't fit — it leans on the OS keyboard instead of reimplementing text entry.Note this diverges from AC#2 ("UX shape matches #59"): the A-Z scroller shape is right for fixed-3 initials but wrong for a variable-length name. Flagging for operator/Herald — if shape-consistency is preferred over fit, the alternative is a fixed-max N-slot scroller with a space-in-cycle for trailing trim, but I'd recommend the DOM-input for the name field. Operator's call.
#59 is now PR #74 (the scroller lands there). This becomes a fast-follow once a direction is confirmed.
AC-tick pass (retroactive) — closed by PR #75 @
c7a2ba88: