Fixed
- Seek Stop Bug: Clicking the progress bar a second time no longer stops playback. Root cause: WebKit and GStreamer fire spurious ended events immediately after a direct audioNode.currentTime seek. A guard now checks lastSeekAt + playhead position to silently discard these false alarms.
- Play/Pause Hang: Rapidly double-clicking the play/pause button no longer freezes the audio pipeline. A 300 ms lock prevents a second toggle from issuing pause→play before GStreamer has finished the previous state transition.
- Queue DnD (macOS / Windows): Drop target index is now calculated from the mouse clientY position at drop time instead of refs, eliminating the dragend-before-drop timing race on macOS WKWebView and Windows WebView2.
Added
- Live Now Playing navigation: Clicking an entry in the Live dropdown now navigates to the corresponding album page.
Changed
- Hero blur: Increased background blur in the Hero section for a more immersive look.