Skip to content

Add true full screen and music videos to the player - #106

Open
Kxsumi wants to merge 4 commits into
NUber-dev:mainfrom
Kxsumi:feat/music-video-source
Open

Kxsumi wants to merge 4 commits into
NUber-dev:mainfrom
Kxsumi:feat/music-video-source

Conversation

@Kxsumi

@Kxsumi Kxsumi commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Adds true full screen and proper music video support to the player.

F11 covers the whole monitor now, taskbar included, instead of the OS fullscreen that only fills the work area. Hover the top edge to get the title bar back.

The Song/Video toggle actually finds the right video. YT Music's search lies about titles and artists, so it kept landing on lyrics reuploads and fan edits. Candidates now get checked against what YouTube actually returns before one gets used, and if there's no real video it says so instead of settling for whatever is closest.

Comes with:

  • video mode sticks across tracks, and the next one is fetched while the current one plays
  • quality picks whatever the GPU can decode, up to 4K
  • SponsorBlock skipping for non music sections, marked on the seek bar, off by default

Settings added for quality, staying in video mode, preloading, and hiding the controls when idle.

Switching a track to Video picked the wrong upload often enough to be
unusable: YT Music's search results misreport both title and artist, so
a lyrics reupload or a fan edit would win on text alone.

Candidates are now checked against what YouTube actually says. Every
candidate is screened through oembed for its real title and channel,
which is cheap enough to run on all of them, and only a shortlist is
verified with yt-dlp for the things oembed cannot answer: the verified
badge, channel id, category and duration. A candidate is trusted when it
sits on the artist's own channel or a verified one, and lyrics or
translated reuploads are rejected unless the channel itself checks out.

Also:
- Song/Video toggle carries across tracks, with the next track's video
  warmed while the current one plays.
- Quality follows what the GPU can decode: auto probes for 4K VP9/AV1
  and steps down on dropped frames, or can be pinned from Settings.
- The backdrop is aligned to the audio element's own clock and trimmed
  by playback rate rather than seeking, which is what kept it up to half
  a second out of step.
- Optional SponsorBlock skipping for non-music sections, marked on the
  progress bar. Off by default, and it only ever sends a hash prefix of
  the video id.
- Full-screen controls fade once the mouse settles.
F11 covers the monitor outright, taskbar included, rather than using the
OS full screen which Windows only extends to the work area. The title
bar returns on a hover at the top edge and hides again once the pointer
leaves, with the reveal and hold zones kept apart so moving onto the bar
itself does not immediately dismiss it.

Resizing and the drop shadow are both turned off while covering the
monitor: Windows otherwise pads a resizable borderless window with an
invisible grab margin and reserves shadow space, which left the window a
few pixels off the screen edge.
Uploads from the same channel family share long standardised suffixes, so
overall token coverage could clear the bar on furniture alone. "Bite Marks
| Worlds 2025 Finals Opening Ceremony Presented by Mastercard" matched
GIANTS from 2019 at exactly 0.60, and "Pentakill: Mortal Reminder |
Official Music Video - League of Legends" matched Get Jinxed at 0.67.
Neither pair shares a single distinctive word.

The head of the title, meaning everything before the first structural
break, now has to match as well. Checked against the picks this was
already getting right, including one at 0.67 head coverage.

Also thins out the commentary through the video code.
…ndow

Off by default. When on, the floating player fades back to 35% once it
loses focus and comes straight back on hover, so it stays out of the way
of whatever is in front of it without having to be moved or closed.

It follows its own window's focus rather than the main window's, since
the floater is usually the only part of the app on screen. Hover wins
over focus so the card is readable before a click lands.

Also renames the full-screen idle setting to say where it applies.
@Kxsumi
Kxsumi force-pushed the feat/music-video-source branch from d3b8c90 to c4e6f6a Compare September 14, 2026 06:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant