fix(playback): serve streams via WEB_REMIX only - #42
Open
mihaimetal wants to merge 4 commits into
Open
mihaimetal wants to merge 4 commits into
mihaimetal wants to merge 4 commits into
Conversation
mihaimetal
force-pushed
the
fix/web-remix-streams
branch
from
July 27, 2026 13:43
0cfd295 to
077c90c
Compare
Contributor
Author
|
Rebased onto current |
mihaimetal
force-pushed
the
fix/web-remix-streams
branch
3 times, most recently
from
August 6, 2026 19:10
3e7b852 to
8b62b1c
Compare
Seal cookie jars with an app-data AES key (mode 0600) instead of macOS Keychain, so ad-hoc rebuilds no longer prompt for Keychain access. Isolate login/keeper WebViews with per-account data_store_identifier, inject a login script that fails WebAuthn so Google offers password / another way, and keep 0.4.7's ServiceLogin replay (NUber-dev#79) plus ytubic:// deep-link registration. WEB_REMIX stream download (register_stream_source, no yt-dlp spawn) lives in the same lib.rs overlay because spawn_downloader is not separable from the auth helpers.
Resolve googlevideo URLs via Music/WEB_REMIX (cookies + decipher), register them with Rust, and stream from that URL only. Drop the launch-time yt-dlp download and do not spawn yt-dlp on a miss — ANDROID_VR is also left disabled. Keep 0.4.7's navigator.mediaSession handlers and Discord pause clearing; audio-engine still calls streamUrlFor(), which now does the WEB_REMIX head-start.
0.4.7's audio-engine still warms the upcoming queue item. Restore prefetchStream against /stream after registering a WEB_REMIX URL so that path does not 404 (the Rust /prefetch route was yt-dlp-only and is gone).
Do not warm the upcoming queue item — that resolve/download competed with the track the user just hit play on. Kick WEB_REMIX in the background and hand /stream to the audio element immediately; Rust already polls for the registered URL and starts progressive play at the first 32 KB.
mihaimetal
force-pushed
the
fix/web-remix-streams
branch
from
August 26, 2026 12:19
8b62b1c to
3f67c96
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
/playerplusyoutubei.jsdecipher.logs/stream.logat 2 MiB with rotation tostream.log.1.resolving…/WEB_REMIX/ timing).Why
Cold start with managed PyInstaller yt-dlp was very slow (~12s process spawn). WEB_REMIX with a proper cookie/SAPISIDHASH path gives reliable progressive playback without the multi-client fallback noise (ANDROID_VR
LOGIN_REQUIRED, MWEB 403s, etc.).Design notes for review
'unsafe-eval'so nsig decipher can run in the webview.stream.log/ console for debugging; just not shown under the artist.Commits
Test plan
stream.logshowsweb_remix/ probe / music+cookie path (no yt-dlp / android_vr spam)YTubic.appruns successfullyRelated
Independent of the macOS packaging and auth PRs; can merge in any order, though packaging helps reviewers who build on Mac.