Fix the music bar queue popup: broken layout on desktop, unclosable on mobile #17
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/music-bar-queue-popup"
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?
Summary
Two reports, same root cause:
.musicBarQueuenever had a realpositionon either breakpoint despite its own comment saying it should float above the bar.positionat all → toggling the queue visible just pushed#musicBarPanel(the actual play/pause/skip controls) out of the way in normal flow, growing the fixed bottom bar upward instead of floating a popup over it.position: relative(just enough z-index to show above the full-screen now-playing panel) left it sized/placed by normal flow, overlapping the very#toggleQueueBtnused to open it — the only way that existed to close it.Fix:
.musicBargetsposition: relative; desktop's.musicBarQueuebecomesposition: absolute; left: 0; right: 0; bottom: 100%(floats directly above the bar without touching its layout); mobile's becomesposition: fixed; inset: 0(a real full-screen overlay,max-height: noneoverriding the base rule's50vh). Also added a dedicated#queueCloseBtnplus a click-outside-closes listener (same pattern asPlayer.ts's ownsettingsPanel), so closing it never again depends on where the toggle button happens to render underneath.Test plan
npm run typecheck(client) — cleannpm run build(client) — cleaninitMusicBarcalled directly against a reproduction of the real Shell markup.<iframe>— this sandbox'sresize_windowemulation is unreliable): with the now-playing panel opened first, the queue rendered as a genuine full-viewport overlay;elementFromPointat the close button's own center hit the button itself, not something covering it; closing the queue correctly returned to the still-open now-playing panel.🤖 Generated with Claude Code