diff --git a/README.md b/README.md index 28aae32..ba0d479 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Built for people who run their own servers. No cloud, no accounts, no subscripti ## 🏴 Why Jellybloom? -You already run a Jellyfin server. You already own the media. So why does using it still feel like navigating a web app designed by committee? +You already run a Jellyfin server. You already own the media. So why does using it still feel like using a web app designed by committee? Jellybloom is a ground-up desktop client for Windows. It talks directly to your Jellyfin server and makes browsing, discovering, and watching actually pleasant. Fast, dense, responsive, and fully under your control. @@ -32,68 +32,68 @@ No cloud dependencies. No data collection. No feature gates. No one profits from ### 📺 Browse -- **Home shelves** — curate your own rows or let the app suggest based on what you watch -- **Virtualized poster grid** — smooth scrolling with thousands of items -- **Unified fuzzy search** — titles, people, collections. Saved searches stick around -- **Quick look** — right-click any poster for a peek without losing your scroll position -- **Notification bell** — new episodes and movies, deduplicated by series so a full-season drop does not flood you +- **Home shelves** - curate your own rows or let the app suggest based on what you watch +- **Virtualized poster grid** - smooth scrolling with thousands of items +- **Unified fuzzy search** - titles, people, collections. Saved searches stick around +- **Quick look** - right-click any poster for a peek without losing your scroll position +- **Notification bell** - new episodes and movies, deduplicated by series so a full-season drop does not flood you ### 🎬 The player -- **Native subtitle rendering** — ASS/SSA via libass-wasm, plus SRT, VTT, and plain text -- **Subtitle search** — find and download from OpenSubtitles without leaving the player -- **Subtitle styling** — size, font, outline, color, background opacity, positioning -- **Bookmarks** — drop a pin with a note, shown as dots on the scrubber -- **A-B loop** — for study, reference, or that one perfect joke -- **Chapters and trickplay thumbnails** — jump around, hover the scrubber to see where you are -- **Speed control** — 0.5x to 3x -- **Picture filter** — brightness, contrast, saturation, hue, gamma for bad encodes -- **Audio graph** — compressor and parametric EQ for quiet or loud mixes -- **Audio passthrough** — let your receiver handle decoding -- **Quality and track menus** — switch streams on the fly -- **Resume prompt** — asks first so you do not spoil the cold open -- **End card** — next episode or related title as the credits roll -- **Mini player** — pop out to a floating window -- **Sleep timer** — fades out after your chosen duration -- **"Still watching?"** — gently checks in after a few episodes -- **Downloads** — save for offline playback -- **Cast** — send to another Jellyfin session on your network -- **SyncPlay** — watch together with friends, playback stays locked -- **Trakt.tv scrobbling** — optional, device-code auth, no redirects -- **Customizable keyboard shortcuts** — rebind everything +- **Native subtitle rendering** - ASS/SSA via libass-wasm, plus SRT, VTT, and plain text +- **Subtitle search** - find and download from OpenSubtitles without leaving the player +- **Subtitle styling** - size, font, outline, color, background opacity, positioning +- **Bookmarks** - drop a pin with a note, shown as dots on the scrubber +- **A-B loop** - for study, reference, or that one perfect joke +- **Chapters and trickplay thumbnails** - jump around, hover the scrubber to see where you are +- **Speed control** - 0.5x to 3x +- **Picture filter** - brightness, contrast, saturation, hue, gamma for bad encodes +- **Audio graph** - compressor and parametric EQ for quiet or loud mixes +- **Audio passthrough** - let your receiver handle decoding +- **Quality and track menus** - switch streams on the fly +- **Resume prompt** - asks first so you do not spoil the cold open +- **End card** - next episode or related title as the credits roll +- **Mini player** - pop out to a floating window +- **Sleep timer** - fades out after your chosen duration +- **"Still watching?"** - gently checks in after a few episodes +- **Downloads** - save for offline playback +- **Cast** - send to another Jellyfin session on your network +- **SyncPlay** - watch together with friends, playback stays locked +- **Trakt.tv scrobbling** - optional, device-code auth, no redirects +- **Customizable keyboard shortcuts** - rebind everything ### 📄 Detail pages -- **Hero** — backdrop, poster, logo overlay, ratings, action buttons -- **Cast and crew** — clickable filmographies with in-library matches highlighted -- **Composer block** — because the score matters -- **Awards** — from Wikidata -- **Filming locations** — mapped with Leaflet -- **Reception** — aggregates IMDb, TMDB, Rotten Tomatoes, Metacritic, and your own ratings -- **Reviews, trailers, trivia, tech specs** — from TMDB, YouTube, Wikipedia -- **Collection strip** — franchise entries -- **Series status** — air days, next episode, season count, production state -- **Anime filler detection** — flags filler and mixed-canon episodes -- **Versions selector** — pick between multiple files for one title -- **Watch timeline** — your personal history from the diary -- **Personal section** — your ratings, rewatch counts, notes. Stays local -- **Diary** — log watches with date, rating, rewatch flag. Export to Markdown, JSON, or Letterboxd CSV -- **Request button** — ask Radarr or Sonarr for missing titles without leaving the page +- **Hero** - backdrop, poster, logo overlay, ratings, action buttons +- **Cast and crew** - clickable filmographies with in-library matches highlighted +- **Composer block** - because the score matters +- **Awards** - from Wikidata +- **Filming locations** - mapped with Leaflet +- **Reception** - aggregates IMDb, TMDB, Rotten Tomatoes, Metacritic, and your own ratings +- **Reviews, trailers, trivia, tech specs** - from TMDB, YouTube, Wikipedia +- **Collection strip** - franchise entries +- **Series status** - air days, next episode, season count, production state +- **Anime filler detection** - flags filler and mixed-canon episodes +- **Versions selector** - pick between multiple files for one title +- **Watch timeline** - your personal history from the diary +- **Personal section** - your ratings, rewatch counts, notes. Stays local +- **Diary** - log watches with date, rating, rewatch flag. Export to Markdown, JSON, or Letterboxd CSV +- **Request button** - ask Radarr or Sonarr for missing titles without leaving the page ### 🔭 Discover Find things you do not already own. Needs a free TMDB API key. -- **Tonight hero** — personalized spotlight based on your top genre -- **Spotlight hero** — trending pick of the day -- **Mood chips** — ten vibes that resolve to a filtered row -- **Roulette** — spin for a random highly-rated title -- **Decade strips** — the 90s, the 80s, etc. -- **Canonical lists** — top rated, cult classics, upcoming -- **On this day** — titles that premiered today -- **Library gap finder** — highest-rated missing titles in genres you already watch -- **Browse grid** — by genre, language, studio, network. Inline expansion -- **Advanced filters** — year range, rating, vote count, sort order +- **Tonight hero** - personalized spotlight based on your top genre +- **Spotlight hero** - trending pick of the day +- **Mood chips** - ten vibes that resolve to a filtered row +- **Roulette** - spin for a random highly-rated title +- **Decade strips** - the 90s, the 80s, etc. +- **Canonical lists** - top rated, cult classics, upcoming +- **On this day** - titles that premiered today +- **Library gap finder** - highest-rated missing titles in genres you already watch +- **Browse grid** - by genre, language, studio, network. Inline expansion +- **Advanced filters** - year range, rating, vote count, sort order ### 👤 Profile and stats @@ -120,7 +120,7 @@ Jellybloom targets WCAG 2.2 AAA conformance because a media client that only wor | **Full keyboard navigation** | Every interactive element reachable and operable without a mouse | | **Focus management** | Visible focus indicators on all controls, focus traps in modals with restore on close | | **High contrast** | All themes meet AAA contrast ratios (7:1+ for normal text) | -| **Reduced motion** | Respects prefers-reduced-motion — all animations disabled when active | +| **Reduced motion** | Respects prefers-reduced-motion - all animations disabled when active | | **Screen readers** | ARIA live regions for dynamic content, proper labels on icon-only buttons | | **Touch targets** | All interactive controls meet 24x24px minimum |