Repository navigation
v2.22.10
The media view grew up, and the window went glass
Pressing Tab while music plays now opens a proper little player: album art on the left, track info and controls on the right, a volume slider that matches the rest, and dots in the corner when two things play at once (browser video plus Spotify) so you can flip between them.
The window itself went frosted glass — it blurs what's behind it like a native panel instead of sitting flat.
What changed
- Two-column media view: Art on the left, song name, artist, progress bar, and controls stacked on the right. Play button matches the others now, and the whole transport row is centered.
- Session dots: With two live sources (say a browser stream and Spotify), dots appear top-right — one per app. Click to take over that session's controls; the view stops guessing and follows your pick.
- Volume where it belongs: Mute button plus a slim slider tucked into the transport row, styled like the progress bar. Arrow keys nudge it while the view is open.
- Honest progress bar: The bar now asks the system what each source actually allows. Live radio shows a LIVE badge instead of a dead bar; unskippable ads show progress but refuse dragging (and the updater-side seek can't hang on them anymore); drags clamp to the real seekable window.
- Frosted glass window: Native blur backdrop with proper theme contrast, so the overlay feels part of the desktop in both dark and light mode.
Bug Fixes
- Progress bar jumping back and forth: The bar used to re-anchor on every position push, and each push lagged the snapshot cost behind reality — so it coasted ahead, then snapped back, every few seconds. Positions are now corrected at the source with exact capture timestamps, the bar runs on calculation except for genuine events, and the session pick sticks instead of flapping between sources on every status blip.
- Tab crashing on random non-Spotify media: Dead sessions are skipped outright, the view only opens for live playback, and seeking on streams with no duration just says so instead of hanging.
- Phantom "All users" install surviving every update: The updater moved the install tree before setup ran, so the installer's cleanup check always saw nothing there — plus a trailing-slash mismatch in the post-install comparison. Both fixed; the stale entry gets removed on the next update.
- First-open flash and scroll bleed: Foreground is prepared before the first frame paints, acrylic state survives WebView rebuilds, and scrolling stays inside the results list.
Commit Log
696fc2efix(installer): clean stale hybrid key on updater runsc8c26d7fix(media): session switcher, stable progress bar and two-column layout20aa117fix(media): use SMTC timeline timestamps for playback progressbabbedffix(overlay): pass acrylic state to rebuilt webview3039ad7fix(overlay): restore dark acrylic contrast and scrollbar1e3027ffix(media): stabilize progress after stale updatesf1c5544test(discovery): isolate reconfiguration indexb8d9be1fix(overlay): confine scrolling and strengthen acrylic glass87ed810style(overlay): add frosted glass backdrop refractionaf6fdc0style(overlay): use native DWM glass backdrop74d0adfstyle(overlay): reduce acrylic surface tint53a8951fix(overlay): apply acrylic theme before first paint4e286bbfix(overlay): prepare foreground before first frame5d0cfe9fix(overlay): activate before showing acrylic window9340e8cchore(media): remove ping-pong diagnostic logging