New features
- Emby joins Plex and Jellyfin as a first-class backend: same onboarding, browsing, search, watch state and downloads
- TrueHD audio is packed into a MAT/IEC 61937 carrier and bitstreams to the receiver
- Android Automotive: the app reads the vehicle's driver-distraction state, scales the whole interface (adjustable in Appearance), keeps music playing while parked but silences it while driving, and never starts video in a moving car
- Every tracker sign-in dialog (Trakt, Simkl, MDBList, MAL, AniList) shows a QR code and a copyable link, and fits on TV screens
- MDBList syncs watched history, scrobbles and ratings
- Linux renders video on a native Wayland plane, which carries HDR (PQ/HLG on BT.2020) instead of the 8-bit sRGB texture path
- Android TV refreshes the Watch Next row in the background without the app open
- tvOS Top Shelf fetches Continue Watching live and shows poster art
- The player and TV home show a clock in the system's 12/24-hour format
- Library context menus gain a watchlist toggle
- Appearance gains a toggle to hide the Explore tab
- Text subtitles can be anchored to the bottom of the screen, in the black bars under widescreen video
- Android downloads can follow the app onto adoptable storage
- Playback Buffer offers Auto, Large and Extra Large read-ahead tiers instead of a fixed 50 seconds
Playback
- Plex transcodes open at the resume position instead of buffering forever
- On transcodes, subtitles are delivered by the server again: Plex burns them in, Jellyfin burns bitmaps or streams text files, and the open guard no longer drops them
- A server that keeps refusing a stream at open now shows an actionable dialog instead of retrying silently
- A stalled ExoPlayer session recovers, handing off to mpv at the position reached, instead of spinning on a frozen frame
- TrueHD leaves the carrier and decodes when playback speed is not 1x, or when a stream contradicts its container
- Every AudioTrack release is reported, so a failed release can recover instead of pinning playback in buffering
- A keyboard Enter no longer switches the app into focus navigation
- Skips count from where a jump actually landed, not from a stale target
- The remote stays on the player surface when the window regains focus
- Escape only exits fullscreen the player itself entered
- Linux stops scheduling a second audio recovery after resume, removing a double stutter
- Watch Together ignores clock replies from anyone but the host, and the playback anchor holds while the host reloads
- Marking something watched clears its resume position and its queued progress
- A refreshed Discover row overrides a stale local watch patch instead of losing to it
Music
- Shuffle now shuffles the head of the queue too, not just the tail
- A gaplessly advanced track reports its own timeline, so Plex no longer records a phantom play and Last.fm scrobble
Live TV
- Guide rows navigate in the order they are displayed across multiple DVRs
- A guide emptied by the favorites filter says so and offers "Show All Channels"
Android, TV & automotive
- Fire TV Stick 4K stops tunneling 24p content, ending the judder; Audio Passthrough moves from the player sheet to Settings > Video Playback
- Single-line and multiline text entry uses the native Android IME again
- tvOS: Siri Remote swipes scale to the focused item, and one flick can no longer move focus two steps
- Plex validates a failover candidate with the server itself before switching endpoints
- Capped Plex transcodes keep compatible audio copied through instead of degrading it
- The Plex sign-in dialog fits a QR code on a car screen
UI
- Sheets size to their content instead of filling 75% of the window
- Delete-from-server dialogs name the exact item and warn when sibling episodes or file parts go with it
- A Plex Home user reads as "user via account" in one translated chip
- The profile picker keeps its highlight while its list sorts
- Shorter navigation labels on phones, and all 21 locales are complete
- The platform launch screen stays behind the loading frame on TV
Windows
- Preference-store writes fall back to an in-place rewrite when another reader blocks the atomic rename