Fixes
- Playback no longer stops after about a minute. YouTube changed what its BotGuard check validates, so the token the app minted only earned a pending status, and a pending session serves 60 seconds of media and then refuses every request. The app now mints the token from the attestation data and config embedded in the watch page, with a fallback to the homepage when the watch page carries neither.
- The player no longer reloads in a loop. It treated three routine server backoffs as a broken session and rebuilt the player each time, and every rebuild minted a new session with a fresh 60 seconds, which hid the stop above. A backoff is now flow control. The player asks for a fresh session only when a session has delivered no media at all.
- A reload is invisible. The player comes back at the same frame and in the same paused or playing state, in whichever tab it happens.
- The dev server starts in seconds. Its ignore pattern started at the filesystem root, so it walked the whole disk before it opened a window.
Dependencies
- bgutils-js 4.0.3, dompurify 3.4.13, and the smaller Dependabot bumps up to the end of August.