fix(input_setup): keep backdrop-blur during calibration wizard#651
fix(input_setup): keep backdrop-blur during calibration wizard#651OmikronApex wants to merge 1 commit into
Conversation
Hiding the entire #input-setup-overlay removed it from the render tree, which also removed its backdrop-blur-sm — causing the background blur to vanish while the calibration wizard was open. Fix: hide only the [data-is-host] card inside the overlay, keeping the overlay element itself (and its backdrop-blur) alive in the DOM. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
byrongamatos
left a comment
There was a problem hiding this comment.
Thanks for chasing the lost blur — that's a real glitch. But I think this approach regresses the tuner exposure that the original full-overlay-hide was protecting (the failure mode the screen.js:167 comment calls out, and what core #577 fixed).
The problem
The change keeps #input-setup-overlay mounted (fixed inset-0 z-[210] bg-black/60 backdrop-blur-sm, pointer-events:auto) and hides only the inner card. But that overlay is full-screen, and the layering is:
| Layer | z-index |
|---|---|
| note_detect calibration wizard | 300 |
| #input-setup-overlay (kept by this PR) | 210 |
| player / highway / transport / tuner | 1–10 |
When the user hits "Minimize Wizard — Play Song", the wizard (z-300) sets itself background:transparent; pointer-events:none to expose the player/tuner underneath. With the overlay still mounted, the z-210 layer now sits between the transparent wizard and the player — so during the minimized state the tuner/player is:
- dimmed (
bg-black/60), - blurred (
backdrop-blur-sm), - and click-blocked — clicks fall through the now-
pointer-events:nonewizard and are swallowed by the z-210 overlay before they reach the player controls (z 1–10).
So "Minimize Wizard — Play Song" (and any tuner interaction during minimize) breaks. The original code hid the whole overlay precisely to avoid this. None of the test-plan steps here exercise the minimized state, which is where it shows up.
Suggested fix
Move the backdrop-blur-sm onto the calibration wizard overlay itself (note_detect side, z-300) instead of relying on input_setup's overlay. Then:
- wizard shown → blur present (on the wizard, above everything);
- wizard minimized → it goes transparent, so the blur correctly vanishes and the player/tuner is sharp + interactive;
- input_setup keeps fully hiding its overlay → no occlusion.
That gets the blur you want without re-occluding the tuner — but it's a change in note_detect, not here. Alternatively, if you want to keep it in input_setup, the overlay would at minimum need pointer-events:none and to drop its dim/blur whenever the wizard is in its minimized state — which is more coupling than it's worth.
Happy to take the wizard-side approach if you'd prefer.
Summary
#input-setup-overlayremoved it from the render tree, stripping itsbackdrop-blur-sm— so the background blur vanished while the calibration wizard was open and returned when it closed.[data-is-host]card inside the overlay; the overlay element itself stays in the DOM so its backdrop-blur remains active throughout.Test plan
🤖 Generated with Claude Code