🎬 Major Features
MPV Player Backend
- New default player: Switched from GStreamer to MPV for superior performance and compatibility
- Hardware-accelerated video rendering with optimized GL context handling
- Enhanced subtitle support with automatic track selection
- Improved frame pacing and reduced dropped frames
Enhanced Playback Experience
- Fullscreen mode: Toggle with double-click or F11 key
- Suspend inhibition: Prevents system sleep during playback
- Improved gesture controls: Smoother seeking and volume adjustments
- Buffer percentage display: Real-time buffering status for both backends
- Configurable control hide delay: Customize when player controls auto-hide
UI Improvements
- Next episode highlighting: Visual indicator for unwatched episodes in show details
- Refined show details page: Better layout and improved episode navigation
- Updated screenshots: Fresh visuals showcasing the new features
- Enhanced dark mode styling: Better contrast and readability
🛠️ Technical Improvements
Architecture
- Modular player backend system with trait-based abstraction
- Factory pattern for dynamic player selection
- Improved GL rendering pipeline with better error handling
- Enhanced debugging options for troubleshooting playback issues
Build & CI
- GitHub Actions workflows for automated builds and releases
- Cross-platform CI pipeline (Linux focused, macOS/Windows disabled)
- Improved caching strategies for faster builds
- Flatpak integration with dedicated run scripts
Development Experience
- Comprehensive GStreamer documentation (GSTREAMER.md)
- Updated task tracking and roadmap
- Better error messages and debug logging
- Cleaner code organization with separated player modules
📦 Dependencies
- Added
libmpv
for MPV backend support - Updated build dependencies for better compatibility
- Enhanced Nix flake configuration
🐛 Bug Fixes
- Fixed GL context initialization issues
- Resolved subtitle synchronization problems
- Improved memory management in video rendering
- Better handling of player state transitions
📝 Notes for Developers
The player backend is now configurable via preferences, allowing easy switching between MPV (default) and GStreamer. Both backends implement the same Player
trait, ensuring consistent API across implementations.
To switch backends programmatically:
// In preferences
player_backend: PlayerBackend::MPV, // or ::GStreamer
The MPV backend offers better out-of-the-box codec support and performance, while GStreamer provides more fine-grained control over the pipeline.
🚀 Getting Started
# Enter development environment
nix develop
# Build and run with MPV backend (default)
cargo run
# To use GStreamer backend, change in Settings
Full Changelog: v0.1.0...v0.2.0