v2.0.0-rc.31
Pre-release
Pre-release
Correctness fixes across the shared spine (bottom of the v2 player trio).
- dispatch: a before-hook delay that rejects with
undefinedis now correctly treated as prevented - plugin-registration: a throwing plugin constructor/initialize is contained instead of aborting the whole setup pipeline
- tab-leader: abort a queued Web Lock request on dispose (no cross-tab playback stall)
- auth: insert access_token before the URL #fragment, not after
- auth-fetch: route an abort during retry backoff through the NetworkError contract
- storage: LocalStorageBackend.get() falls back to the in-memory map on a null read
- audio-output: read the bound element's live sinkId, not a stale cache
- cast-sender: stop a spurious cast:media-changed on self-load
- spectrum: propagate runtime fftSize/smoothing to stereo L/R analysers; disconnect shared analyser from splitter on stereo dispose
- core: fix RAF id leak, enhanced-LRC word parsing, HLS/native #fragment matching, HLS content-type matching, VTT whitespace-only line splitting, and volume re-push on unmute
- i18n: separate dedup namespaces for static translations vs the loadTranslations hook