Skip to content

fix(onboarding): calibration Tuner step exposed the input-select overlay underneath#577

Merged
byrongamatos merged 1 commit into
mainfrom
fix/input-setup-overlay-occludes-tuner
Jun 23, 2026
Merged

fix(onboarding): calibration Tuner step exposed the input-select overlay underneath#577
byrongamatos merged 1 commit into
mainfrom
fix/input-setup-overlay-occludes-tuner

Conversation

@byrongamatos

Copy link
Copy Markdown
Contributor

Bug

Tester report: "I get to the point in the wizard that asks if I want to tune. If I press the tuner button, the wizard starts a second instance at the step where I need to select an input."

Root cause

Stacked full-screen overlays during onboarding:

Layer Overlay z-index
onboarding modal #v3-onboarding 200
input-device setup #input-setup-overlay 210
note_detect Calibration Wizard (inline) 300
Tuner #tuner-plugin-ui 1000

input_setup launches note_detect's Calibration Wizard on top of its own still-mounted overlay. When the player opens the Tuner, the calibration wizard minimizes itself to background:transparent; pointer-events:none so the Tuner (z-1000) is usable — but the input-setup overlay underneath (still on its "select your input" card) then shows through behind the floating tuner, reading as a second wizard at the input step. The onboarding modal (z-200) sits behind that.

Fix

Hide each overlay while a higher surface owns the screen:

  • input_setup — hide #input-setup-overlay while launchCalibration runs; restore on its onDone/onCancel (note_detect's calibrationWizardClose always fires exactly one of them, so it can't get stuck hidden).
  • onboarding runInputSetup — hide #v3-onboarding for the whole input-setup phase (the input-setup overlay replaces it visually anyway); restore in a finally before advancing to the calibration-challenge step.

Net: device-selection shows only the input-setup overlay; the calibration wizard shows alone; the Tuner shows alone over a clear screen.

Holding for Codex review (usage-limited until ~Jun 25) before merge. Related: note_detect PR #38 (the calibration-wizard tester-feedback batch) — its auto-open-tuner change would have made this overlay collision fire automatically, so this is the necessary companion fix.

🤖 Generated with Claude Code

…elect overlay

Tester: "at the tune step, pressing the Tuner button starts a second wizard at
the input-select step."

Root cause is stacked full-screen overlays. During onboarding the input-setup
flow runs as #input-setup-overlay (z-210) on top of the onboarding modal
#v3-onboarding (z-200), and note_detect's Calibration Wizard (z-300) launches on
top of that. When the player opens the Tuner, that wizard minimizes itself to
transparent + pointer-events:none so the Tuner (z-1000) is usable — but the
input-setup overlay underneath, still showing its "select your input" card, then
shows through behind the floating tuner and reads as a second wizard.

Two targeted hides so only the active surface is visible:
- input_setup: hide #input-setup-overlay while launchCalibration runs; restore on
  its onDone/onCancel (one always fires on close), so the calibration wizard /
  tuner own the screen.
- onboarding runInputSetup: hide #v3-onboarding for the whole input-setup phase
  (its own overlay replaces it visually); restore in finally before advancing to
  the calibration-challenge step.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@byrongamatos
byrongamatos merged commit a43e7b1 into main Jun 23, 2026
0 of 3 checks passed
@byrongamatos
byrongamatos deleted the fix/input-setup-overlay-occludes-tuner branch June 23, 2026 10:52
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