Contain focus and background interaction in mobile Device Setup #1134

Closed
opened 2026-08-19 14:23:56 +00:00 by rockachopa · 0 comments
Member

Problem

Mobile Device Setup is declared aria-modal=true, but opening it leaves the dashboard behind it keyboard- and assistive-technology-reachable. Tab can escape the sheet, background controls remain interactive, and closing does not restore focus to the launcher. This breaks the phone-readiness flow for keyboard, switch-control, and screen-reader operators.

User flow

  1. Open Device Setup from the app menu.
  2. While open, Tab and Shift+Tab cycle only through visible setup controls.
  3. The application shell behind the sheet is inert until setup closes.
  4. Escape, Close, or browser Back closes the sheet and restores focus to the opener.

Acceptance criteria

  • Device Setup traps forward and reverse focus within visible enabled controls.
  • Header, main workspace, and mobile task dock are inert only while setup is open and their previous inert state is preserved.
  • Every close path removes containment and restores focus to the element that opened setup.
  • Existing setup, permission-recovery, and Back-safe behavior remain green.
  • Packaged mobile Chromium test verifies rendered focus containment and focus restoration at a phone viewport.

Evidence / non-duplication

frontend/mobile-device-setup.js currently handles Escape only and never manages shell inertness or opener focus. Historical issue #315 covered browser Back for task overlays, while #555/#715/#1084/#1132 cover setup guidance, reminders, timer pausing, and blocked notification recovery—not modal focus containment.

## Problem Mobile Device Setup is declared `aria-modal=true`, but opening it leaves the dashboard behind it keyboard- and assistive-technology-reachable. Tab can escape the sheet, background controls remain interactive, and closing does not restore focus to the launcher. This breaks the phone-readiness flow for keyboard, switch-control, and screen-reader operators. ## User flow 1. Open Device Setup from the app menu. 2. While open, Tab and Shift+Tab cycle only through visible setup controls. 3. The application shell behind the sheet is inert until setup closes. 4. Escape, Close, or browser Back closes the sheet and restores focus to the opener. ## Acceptance criteria - Device Setup traps forward and reverse focus within visible enabled controls. - Header, main workspace, and mobile task dock are inert only while setup is open and their previous inert state is preserved. - Every close path removes containment and restores focus to the element that opened setup. - Existing setup, permission-recovery, and Back-safe behavior remain green. - Packaged mobile Chromium test verifies rendered focus containment and focus restoration at a phone viewport. ## Evidence / non-duplication `frontend/mobile-device-setup.js` currently handles Escape only and never manages shell inertness or opener focus. Historical issue #315 covered browser Back for task overlays, while #555/#715/#1084/#1132 cover setup guidance, reminders, timer pausing, and blocked notification recovery—not modal focus containment.
timmy was assigned by rockachopa 2026-08-19 14:23:56 +00:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
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: stackchain/stackchain-dashboard#1134
No description provided.