diff --git a/README.md b/README.md index 9c49fe69..a57d4fe6 100644 --- a/README.md +++ b/README.md @@ -19,13 +19,13 @@ A modern client for Plex and Jellyfin on desktop, mobile, and TV. Built with Flu ## Download -Download on the App Store -Get it on Google Play +Download on the App Store +Get it on Google Play Available at the Amazon App Store +Get it from Microsoft | Platform | Download | | --- | --- | -| Windows | [Installer (x64, arm64)](https://github.com/edde746/plezy/releases/latest/download/plezy-windows-installer.exe) · [Portable x64](https://github.com/edde746/plezy/releases/latest/download/plezy-windows-x64-portable.7z) · [Portable arm64](https://github.com/edde746/plezy/releases/latest/download/plezy-windows-arm64-portable.7z) | | macOS | [DMG (x64, arm64)](https://github.com/edde746/plezy/releases/latest/download/plezy-macos.dmg) | | Linux x64 | [.deb](https://github.com/edde746/plezy/releases/latest/download/plezy-linux-x64.deb) · [.rpm](https://github.com/edde746/plezy/releases/latest/download/plezy-linux-x64.rpm) · [.pkg.tar.zst](https://github.com/edde746/plezy/releases/latest/download/plezy-linux-x64.pkg.tar.zst) · [portable tar.gz](https://github.com/edde746/plezy/releases/latest/download/plezy-linux-x64.tar.gz) | | Linux arm64 | [.deb](https://github.com/edde746/plezy/releases/latest/download/plezy-linux-arm64.deb) · [.rpm](https://github.com/edde746/plezy/releases/latest/download/plezy-linux-arm64.rpm) · [.pkg.tar.zst](https://github.com/edde746/plezy/releases/latest/download/plezy-linux-arm64.pkg.tar.zst) · [portable tar.gz](https://github.com/edde746/plezy/releases/latest/download/plezy-linux-arm64.tar.gz) | @@ -50,36 +50,61 @@ Package managers: ## Features ### Browse & Discover -- Libraries, collections, and playlists +- Libraries, collections, and playlists — video and audio - Discover hub — Continue Watching, Next Up, trending, and recommendations -- Cross-server search +- Cross-server search across every connected Plex and Jellyfin server - Filtering, sorting, and alphabetical jump navigation +- Folder browsing and folder playback — home-video libraries open in folder view +- Resolution, HDR/Dolby Vision, and audio-format badges on cards and detail pages +- Favorites and unwatched library filters[^jf] - Extras — trailers, deleted scenes, behind-the-scenes +### Explore & Requests +- Explore tab — watchlist, trending, popular, and recommendation rows from Plex Discover[^plex], Trakt, MyAnimeList, AniList, Simkl, and Seerr[^connect] +- Search any connected catalog source +- Catalog titles matched back to your own libraries by external ID +- Seerr — request movies and shows with per-season, 4K, and advanced destination options, and see request status inline +- Watchlist sync — add and remove titles on Plex, Trakt, MyAnimeList, AniList, and Simkl from anywhere in the app + ### Playback - Wide codec support (HEVC, AV1, VP9, and more) -- HDR and Dolby Vision[^1] +- HDR and Dolby Vision[^hdr] +- Direct play, or transcode presets from 240p/320 kbps to 1080p/20 Mbps +- Multi-version switching with per-version file details - Full ASS/SSA subtitles with customizable styling -- Online subtitle search & download[^2] -- Audio & subtitle choices remembered per title +- Online subtitle search & download[^plex] +- Audio & subtitle choices remembered per title, or follow the server's per-episode selections - Progress sync and resume - Auto-play next episode with skip intro / skip credits - Chapter navigation with thumbnail scrub previews -- Playback speed, audio sync offset, sleep timer -- Ambient lighting and GLSL shader presets[^3] -- Picture-in-Picture[^4] -- Refresh-rate matching[^5] -- External player launch (VLC, MX Player, etc.) +- Playback speed from 0.25x to 8x, audio sync offset, sleep timer (fixed durations or end of video) +- Video zoom 50-200% with pinch, presets, and hotkeys +- Audio passthrough[^pass], stereo downmix with center-channel boost, and loudness normalization +- File Info sheet — every version, file, and stream the server reports +- Ambient lighting and GLSL shader presets[^mpv] +- Picture-in-Picture[^pip] +- Refresh-rate matching[^rrm] +- External player launch (VLC, MX Player, etc.) with progress sync back[^android] + +### Music +- Music libraries — artist, album, and track browsing with square artwork +- Album and artist screens with play, shuffle, and Instant Mix +- Gapless playback with a full play queue — reorder, remove, play next, add to queue +- Now Playing with synced lyrics[^lyrics], persistent mini-player, and sleep timer +- Background playback with lock-screen, media-key, and notification controls[^bgaudio] +- Offline playback of downloaded albums and tracks +- Streaming quality presets — Original, 320, 192, or 128 kbps ### Live TV & DVR -- Live TV channel browsing with favorites -- DVR support with EPG guide, recording rules, and scheduled recordings[^2] +- Live TV channel browsing, tuning, and favorites +- EPG guide with What's On and per-show schedules +- DVR recording rules, scheduled recordings, and a rememberable recording target library[^plex] - Multi-server Live TV support where available ### Downloads & Offline -- Download media for offline viewing +- Download movies, shows, and music for offline playback[^dl] - Background queue with pause / resume -- Sync rules for automatic downloads +- Sync rules for automatic downloads, with per-show "Include Specials" - Offline browsing with watch state sync-back on reconnect ### Watch Together @@ -87,29 +112,42 @@ Package managers: - Real-time play / pause / seek sync ### Integrations -- Discord Rich Presence[^6] -- Trakt, MyAnimeList, AniList, and Simkl tracking & rating +- Discord Rich Presence[^desktop] +- Trakt, MyAnimeList, AniList, and Simkl — ratings, watched sync, and real-time scrobbling[^rt] - Plezy Remote — control desktop and TV from mobile -- Watch Next row +- Watch Next row and tvOS Top Shelf[^shelf] ### Platform & Customization - Desktop, mobile, and TV — full D-pad, keyboard, and gamepad support -- Customizable keyboard shortcuts[^6] +- Multiple servers at once — Plex and Jellyfin side by side +- Profiles with per-profile downloads, watch state, and settings; Plex Home switching with PIN +- Jellyfin local-server discovery, multiple URLs per server, and Quick Connect sign-in +- TV layout options — corner spotlight backdrop, full-card artwork, and Force TV mode on desktop +- Customizable keyboard shortcuts[^desktop] - Metadata and artwork editing - Settings import/export -- Localized in English plus 14 translations +- Localized in English plus 21 translations -[^1]: Not available on Linux. -[^2]: Plex only. -[^3]: Not available on iOS or tvOS. -[^4]: Android, iOS, and macOS. -[^5]: Windows, Android, and tvOS. -[^6]: Desktop only. +[^jf]: Jellyfin only. +[^plex]: Plex only. +[^connect]: Requires connecting the service under Settings > Services. +[^hdr]: In-app HDR toggle on Windows, macOS, iOS, and tvOS. Dolby Vision on Android and Apple TV. +[^pass]: Desktop, Android TV, and Apple TV. +[^mpv]: Requires the mpv player backend — unavailable on iOS and tvOS, and Android defaults to ExoPlayer. +[^pip]: Android, iOS, and macOS — not on Android TV or Apple TV. +[^rrm]: Windows, Android, and tvOS. +[^android]: Progress sync on Android. +[^lyrics]: Where your server provides lyrics. +[^bgaudio]: tvOS pauses music when the app is backgrounded. +[^dl]: Not available on tvOS. +[^desktop]: Desktop only. +[^rt]: Real-time scrobbling on Trakt and Simkl; MyAnimeList and AniList update on completion. +[^shelf]: Android TV / Fire TV and tvOS. ## Building from Source ### Prerequisites -- Flutter SDK 3.38.4+ +- Flutter SDK 3.44.0+ - A Plex account or Jellyfin server with user credentials ### Setup @@ -148,6 +186,12 @@ To install the same pre-commit checks locally: scripts/setup_hooks.sh ``` +End-to-end tests (Android emulator plus a Dockerized Jellyfin fixture): + +```bash +python3 scripts/run_maestro.py basic +``` + ## Contributing See [CONTRIBUTING.md](CONTRIBUTING.md) for development workflow, formatting, tests, and translation guidelines. diff --git a/assets/readme_icons/explore.svg b/assets/readme_icons/explore.svg new file mode 100644 index 00000000..5ea56471 --- /dev/null +++ b/assets/readme_icons/explore.svg @@ -0,0 +1 @@ + diff --git a/assets/readme_icons/music.svg b/assets/readme_icons/music.svg new file mode 100644 index 00000000..6a1e0e41 --- /dev/null +++ b/assets/readme_icons/music.svg @@ -0,0 +1 @@ +