edde746 27acbaf435 feat(explore): surface the catalog data providers already return
Explore shelf cards drew a poster, a title and a year. An audit of all six
catalog sources found the rest was lost at two boundaries — the wire-to-DTO
mapping and the DTO-to-CatalogItem mapping — and then simply not drawn: the
grid card fell through every branch of buildMetadataSubtitle to the year-only
case, while the list card used by search already composed certification,
runtime and rating from fields the synthesized MediaItem already held.

Extend CatalogItem with the neutral facts every provider had been dropping:
attributed rating sources, leaderboard ranks that keep their season window,
audience counters that keep their timeframe, broadcast slots, next-episode air
times, server availability and request state, exact release dates, alternate
titles, format, source material, studios, countries, languages, credits, tags,
links, artwork variants, play state, gallery art and background prose. Replace
fetchCast and fetchRelated with one fetchDetail returning the enriched item,
its cast, its recommendations and labelled franchise relations without adding
a request: sources needing two calls keep two and run them concurrently with
isolated failures.

Map those fields in all six sources, widening only field selections that cost
no extra round trip — MAL's fields list, AniList's selection set and a bounded
row cast that lets detail skip its character call, Trakt's guest stars, Seerr's
language parameter and TMDB size ladder, and Plex's includeUserState. Plex hub
artwork widens only on TV, where the spotlight is its only consumer, because it
doubles the payload.

Render them: a rating-first caption and bounded badges on the shelf card,
labelled sections on the detail screen, provider hub styles and result counts
on shelves, and logo, banner and accent art in the TV spotlight.

Verified against live Plex, AniList, Simkl and MAL responses, and on a Pixel 7.
2026-07-29 06:47:54 +02:00
2026-07-27 23:11:05 +00:00
2025-10-22 12:45:29 +02:00
2026-05-18 22:52:51 +02:00
2025-10-22 12:45:29 +02:00
2025-10-22 12:45:29 +02:00
2026-07-27 22:18:10 +00:00

Plezy Logo Plezy

A modern client for Plex and Jellyfin on desktop, mobile, and TV. Built with Flutter for native performance and a clean interface.

Website · Screenshots · Download · Contributing · License

Plezy mobile screenshots

Download

Download on the App Store Get it on Google Play Available at the Amazon App Store

Platform Download
Windows Installer (x64, arm64) · Portable x64 · Portable arm64
macOS DMG (x64, arm64)
Linux x64 .deb · .rpm · .pkg.tar.zst · portable tar.gz
Linux arm64 .deb · .rpm · .pkg.tar.zst · portable tar.gz

Package managers:

  • Nix - Community package by @mio-19 and @MiniHarinn
  • Homebrew (macOS):
    brew tap edde746/plezy https://github.com/edde746/plezy
    brew install --cask plezy
    
  • AUR (Arch Linux) - Community maintained by @jianglai:
    yay -S plezy-bin
    
  • WinGet (Windows):
    winget install edde746.Plezy
    

Features

Browse & Discover

  • Libraries, collections, and playlists
  • Discover hub — Continue Watching, Next Up, trending, and recommendations
  • Cross-server search
  • Filtering, sorting, and alphabetical jump navigation
  • Extras — trailers, deleted scenes, behind-the-scenes

Playback

  • Wide codec support (HEVC, AV1, VP9, and more)
  • HDR and Dolby Vision1
  • Full ASS/SSA subtitles with customizable styling
  • Online subtitle search & download2
  • Audio & subtitle choices remembered per title
  • 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 presets3
  • Picture-in-Picture4
  • Refresh-rate matching5
  • External player launch (VLC, MX Player, etc.)

Live TV & DVR

  • Live TV channel browsing with favorites
  • DVR support with EPG guide, recording rules, and scheduled recordings2
  • Multi-server Live TV support where available

Downloads & Offline

  • Download media for offline viewing
  • Background queue with pause / resume
  • Sync rules for automatic downloads
  • Offline browsing with watch state sync-back on reconnect

Watch Together

  • Synchronized playback with friends
  • Real-time play / pause / seek sync

Integrations

  • Discord Rich Presence6
  • Trakt, MyAnimeList, AniList, and Simkl tracking & rating
  • Plezy Remote — control desktop and TV from mobile
  • Watch Next row

Platform & Customization

  • Desktop, mobile, and TV — full D-pad, keyboard, and gamepad support
  • Customizable keyboard shortcuts6
  • Metadata and artwork editing
  • Settings import/export
  • Localized in English plus 14 translations

Building from Source

Prerequisites

  • Flutter SDK 3.38.4+
  • A Plex account or Jellyfin server with user credentials

Setup

git clone https://github.com/edde746/plezy.git
cd plezy
flutter pub get
scripts/codegen.sh
flutter run

Code Generation

After modifying model classes or other generated sources:

scripts/codegen.sh

After modifying translations:

dart run slang

Local Checks

scripts/ci_checks.sh

To install the same pre-commit checks locally:

scripts/setup_hooks.sh

Contributing

See CONTRIBUTING.md for development workflow, formatting, tests, and translation guidelines.

License

Plezy is licensed under GPL-3.0.

Acknowledgments


  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. ↩︎

S
Description
Modern cross-platform Plex & Jellyfin client built with Flutter
Readme GPL-3.0
223 MiB
Languages
Dart 73.8%
GLSL 13.3%
Kotlin 4.3%
C++ 2.3%
Python 1.7%
Other 4.3%