Browser-restart resume UX: auto-resume to previous game on app-load instead of re-navigating #145

Closed
opened 2026-06-24 00:55:46 +02:00 by bosun · 0 comments
Owner

Behavior (operator playtest 2026-06-24 against v1.0.0)

"The player has to pick versus from the start screen first, enter his name and commit it. After that he finally lands back in the game he left; one could expect to get directly to the previous versus game instead."

Browser-restart resume works (#123 localStorage swap landed) BUT operator expected app-load to auto-resume to previous versus game. Current behavior:

  1. Mobile browser closed mid-versus
  2. Re-open browser within 25s grace window
  3. URL loads → title screen appears (NOT previous match)
  4. Operator must: tap VERSUS → enter name → commit → "Scanning the cellblock" → ... → finally lands in previous game

Expected: title screen should detect persisted localStorage resume-token and auto-restore to previous match without re-navigating versus flow.

Severity: MED — UX gap

#123 fixed the underlying persistence (token survives browser restart), but the UX path to use that token requires re-navigation. Defeats most of the UX value of cross-restart resume.

Likely root cause area

Title screen / main.ts boot path doesn't check for valid resume-token on load. Resume-token only consumed when versus matchmaking begins (after operator initiates it). Should detect at boot.

Fix-direction (Shipwright lane)

On app-load:

  1. Check localStorage for resume-token
  2. If present + within server's grace-window (server-verifiable): auto-attempt resume → restore to previous match state
  3. If token expired or rejected: clear + show title screen normally
  4. Operator sees previous match restored, not title screen

Cross-refs

  • cellblock#123 (parent — localStorage swap; persistence works, UX consumption gap surfaces here)
  • cellblock#115 (reconnect-via-resume substrate; same mechanism used here on app-load context)

Anchor

2026-06-24 operator playtest of v1.0.0 release.

## Behavior (operator playtest 2026-06-24 against v1.0.0) > "The player has to pick versus from the start screen first, enter his name and commit it. After that he finally lands back in the game he left; one could expect to get directly to the previous versus game instead." Browser-restart resume works (#123 localStorage swap landed) BUT operator expected app-load to auto-resume to previous versus game. Current behavior: 1. Mobile browser closed mid-versus 2. Re-open browser within 25s grace window 3. URL loads → title screen appears (NOT previous match) 4. Operator must: tap VERSUS → enter name → commit → "Scanning the cellblock" → ... → finally lands in previous game Expected: title screen should detect persisted localStorage resume-token and auto-restore to previous match without re-navigating versus flow. ## Severity: MED — UX gap #123 fixed the underlying persistence (token survives browser restart), but the UX path to use that token requires re-navigation. Defeats most of the UX value of cross-restart resume. ## Likely root cause area Title screen / main.ts boot path doesn't check for valid resume-token on load. Resume-token only consumed when versus matchmaking begins (after operator initiates it). Should detect at boot. ## Fix-direction (Shipwright lane) On app-load: 1. Check localStorage for resume-token 2. If present + within server's grace-window (server-verifiable): auto-attempt resume → restore to previous match state 3. If token expired or rejected: clear + show title screen normally 4. Operator sees previous match restored, not title screen ## Cross-refs - cellblock#123 (parent — localStorage swap; persistence works, UX consumption gap surfaces here) - cellblock#115 (reconnect-via-resume substrate; same mechanism used here on app-load context) ## Anchor 2026-06-24 operator playtest of v1.0.0 release.
bosun closed this issue 2026-06-24 12:55:32 +02:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
frankenbit/cellblock#145
No description provided.