Skip to content

v2.22.10

Choose a tag to compare

@haxllo haxllo released this 04 Oct 19:25
· 524 commits to master since this release

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

  • 696fc2e fix(installer): clean stale hybrid key on updater runs
  • c8c26d7 fix(media): session switcher, stable progress bar and two-column layout
  • 20aa117 fix(media): use SMTC timeline timestamps for playback progress
  • babbedf fix(overlay): pass acrylic state to rebuilt webview
  • 3039ad7 fix(overlay): restore dark acrylic contrast and scrollbar
  • 1e3027f fix(media): stabilize progress after stale updates
  • f1c5544 test(discovery): isolate reconfiguration index
  • b8d9be1 fix(overlay): confine scrolling and strengthen acrylic glass
  • 87ed810 style(overlay): add frosted glass backdrop refraction
  • af6fdc0 style(overlay): use native DWM glass backdrop
  • 74d0adf style(overlay): reduce acrylic surface tint
  • 53a8951 fix(overlay): apply acrylic theme before first paint
  • 4e286bb fix(overlay): prepare foreground before first frame
  • 5d0cfe9 fix(overlay): activate before showing acrylic window
  • 9340e8c chore(media): remove ping-pong diagnostic logging

Binary