Added
- ExoPlayer support (Android)
- Collapsible sidenav with animation
- Episode release date in season listing
- Show elapsed, remaining, and total time in player
- Click video player to play/pause (desktop)
- Double-click to toggle fullscreen (desktop)
- Mouse scroll wheel volume control
- French localization
- Remote media keys support
- Android TV banners
- Subtitle seek keyboard shortcuts
- Persist playback speed across sessions
- Copy Watch Together session code to clipboard
- Extended sync offset limits
- Server name display on hub titles
- PiP error notifications
- Persist window position (Windows)
- Open sidenav with left key
- Dynamic video player popup positioning
- Episode watched indicator on thumbnail
Fixed
- Watch Together sync and buffering handling
- Libraries not loading on first login
- Various focus navigation issues (search, library browse, collections, playlists, media detail)
- D-pad support for Skip Intro and Play Next buttons
- D-pad number input and long-press handling
- Track matching by properties instead of index
- Library layout issues on Android TV
- PiP aspect ratio clamped to Android's valid range
- Async MPV commands to prevent ANR
- Fullscreen exit on Windows/Linux
- Hero section gradient gap
- Discord RPC time drift with playback speed
- Hidden libraries now respected in continue watching
- Media poster aspect ratio
- Android audio focus handling
- Allow exit from player during failed playback
- Localized keyboard actions and Manage Libraries dialog
Changed
- Centralized library state in LibrariesProvider
- Abstracted player implementation and reduced duplication
- Library browse filter chips now hide on scroll
- Improved hub detail card sizes
- Collapsible logs in bug report template
- Updated translations
Full Changelog: 1.14.1...1.15.0
Thanks to @micahmo, @Nedlinin, @Happy4Game, @dwk001, and @Daojim!