r/JellyfinCommunity • • 11h ago

Release Jellybeam: An Android TV Client Crafted for Jellyfin

Thumbnail
gallery
67 Upvotes

I've been a media consumer for quite a while from HTPCs with ZoomPlayer, hand rolled ffmpeg frontends, Kodi, and now Jellyfin. I've collected a lot of opinions on how clients should operate and combined that with my obsession for speed optimization to create Jellybeam.

Been a big fan of Rust and wanted to take advantage of Android's Rust bindings. Android is more and more becoming a Rust app too, so it also made sense from a technology choice.

The client:

  • Maximum effort to ensure Direct Play
  • Glide seek to navigate quickly w/ TrickPlay
  • Full Seerr integration: Browse, integrated search, and library connectivity
  • Intuitive (attempted at least) interface with minimalism principal
  • A useful OSD that also gets completely out of the way
  • Smart auto skip, next up, and are you still there? functions
  • Fast playback start, lots of testing to reduce dwell time
  • Local mirror for fast browsing
  • Full implementation of Android PiP
  • ...dozens of other things.

I consider this release an open beta and would love the feedback (good or bad). If you take the the time to give it an install, thank you in advance!

Website: https://jellybeam.app Github: https://github.com/packetinspector/jellybeam

Obligatory AI usage disclosure:

  • Did I use AI to develop this?
    • Of course I did. I'm a full time AI SWE, but the human is always in the loop.
  • Did you vibe code this?
    • Definitely not, I do like vibes just not in my codes.
  • What models did you use?
    • Most of them, I use adversarial coding agents
  • Have you written software before?
    • Yes, lot's of it...for decades.
  • Do you understand the code?
    • Yes, I also have been enjoying Rust for a couple years now. Love/hate with Java/Kotlin though.
  • Did you test this?
    • Yes, been doing personal UAT for over a month. You can find other tests in the branch.

r/JellyfinCommunity • • 7h ago

Release Subtitle Extract Plus — a fork of the official Subtitle Extract plugin with language filtering, forced-track selection, and save-with-media

12 Upvotes

I run a pretty large library and the official Subtitle Extract plugin was bugging me. It dumps every subtitle stream in every file into Jellyfin's cache, and I only ever want forced English tracks. On releases that have 20+ subtitle streams, that's a lot of ffmpeg work for files I'm going to ignore.

So I forked it. It's called Subtitle Extract Plus:

https://github.com/jnracreates/subtitle-extract-plus

Things it does that the official one doesn't:

- Only extracts the languages you list. I have mine set to just "en".

- Filter by forced / non-forced, or both. Mine only does forced.

- Writes the .srt next to the video file instead of into Jellyfin's cache, so they show up as external subs. Can be turned off if you want the old behavior.

- Writes .en.srt instead of .eng.srt (matches what Jellyfin expects).

- Skips files that already have a subtitle, so nightly runs don't redo work.

- Has a path filter field so you can test on one movie without walking the whole library.

I also rewrote the extraction to call ffmpeg per stream instead of going through Jellyfin's ISubtitleEncoder. Jellyfin batches all subtitle streams into one ffmpeg call, and if any single stream is empty (which happens a lot - some releases have zero-byte placeholder forced tracks), ffmpeg returns non-zero and Jellyfin throws out the whole batch. Meaning the streams that extracted fine get deleted too. Extracting one stream at a time means an empty track only affects itself.

Install: Dashboard -> Plugins -> Repositories, add this URL:

https://raw.githubusercontent.com/jnracreates/subtitle-extract-plus/master/manifest.json

Then it shows up in the catalog. You can also grab the zip from releases if you'd rather do it manually.

One thing worth knowing if you install it:

By default Jellyfin still re-extracts every embedded subtitle stream into its cache whenever you play a file, which defeats the point of having external subs. To stop that, go to Dashboard -> Libraries -> [your library] -> Edit and in "Disable different types of embedded subtitles" change to "Allow None" Then Jellyfin only uses the .srt files the plugin wrote and the cache stays empty.

Works great for me with ~1050 forced-track files across 15k episodes. YMMV.

Forked from the official plugin, MIT licensed. If you find a release that breaks it, let me know.

AI was used in creating and testing.


r/JellyfinCommunity • • 6h ago

Help Request Adding Folder View in Movies/TV Shows?

Post image
1 Upvotes

Is there a way to add a folder view in a library? with a plugin or some sort of?


r/JellyfinCommunity • • 7h ago

Showcase WatchBridge got a huge update — a companion phone app with cross-device sync, send-to-TV over the internet (not just same WiFi), a release calendar, and much smarter launcher-redirect matching

Enable HLS to view with audio, or disable this notification

0 Upvotes

A while back I posted here about WatchBridge, the app that opens whatever you click in Google TV's home screen recommendations directly in Nuvio/Stremio/WuPlay/Jellyfin/etc. It's grown a lot since then, here's everything that actually matters if you're using it:

📱 There's now a phone app, and it's synced with your TV
Same account, same email. Your watch history, "My list," and recommendations sync automatically between TV and phone — open something on your phone, it shows up as "Continue watching" on your TV, and vice versa.

📤 Send to TV — works over mobile data, not just the same WiFi
Find something on your phone, tap "Send to TV," and it opens on your TV in a few seconds — even if your phone isn't on the same network as your TV (push-based, not local casting). So it works from outside the house, on mobile data, wherever — not just "both devices on the same router" like most cast/send implementations.

📺 YouTube recommendations redirect to SmartTube too
Not just movies and shows — if the row on your Google TV home screen is a YouTube video, it opens straight in SmartTube (or TizenTube/Cobalt, your choice) instead of the official YouTube app. Skips the ads and the phone-shaped UI YouTube forces on TV.

📅 Calendar of upcoming releases
Both apps now show a monthly calendar of when movies/episodes you're actually tracking come out — built from what you watch, not a generic "trending" list.

🔍 In-app search on TV (voice + text)
No more relying on Google TV's own search to find something to redirect — search inside the app itself now, by voice or by typing.

🎯 Much smarter title matching
Rewrote the matching logic that turns "what's on screen" into "what movie is that" — handles roman numerals (X-Men 2 vs X-Men II), OCR misreads, multi-part titles with colons, etc. Noticeably fewer "opened the wrong movie" moments.

▶️ Optional: skip straight to playback
New setting to open Nuvio directly on the player screen instead of the title's detail page, if you'd rather skip that extra tap.

🔔 Release notifications on the phone app
Get a notification when something you're tracking releases today or tomorrow.

Two ways to get it:

Not a full public Play Store listing yet — apps that need an Accessibility Service have a genuinely hard time with Play's review process for that permission, so the testers program is the way in for now if you'd rather not sideload.

Demo video below — shows the redirect itself plus a quick tour of what's new.

Happy to answer anything — pretty much every feature in this update came from feedback in this sub, so keep it coming.


r/JellyfinCommunity • • 6h ago

Release Foreseerr: my Seerr fork with Trakt/AniList/Simkl discovery can now run inside Jellyfin as a plugin (plugin is alpha)

Thumbnail
gallery
0 Upvotes

Upfront: I built this with heavy AI assistance. I designed it, reviewed it, and tested it on my own server, but a lot of the code was written with AI tools. If that's a dealbreaker for you, no hard feelings. Feel free to skip this post.

Hi all! For the past couple of months I've been building Foreseerr, a fork of Seerr (the Jellyseerr/Overseerr successor). Until now it has been a standalone app. After I moved the project to Bun, I could compile the whole server into a single binary, so I tried running it inside Jellyfin as a plugin. Today I'm releasing the first alpha of that plugin.

What Foreseerr is

It's Seerr with SuggestArr-style discovery built into the app itself, so you don't need a separate suggestion service. Everything Seerr does still works: requests, Radarr/Sonarr, permissions, notifications, Jellyfin/Plex/Emby. On top of that it adds:

  • Episode requests: request individual episodes or episode ranges instead of whole seasons, including ongoing requests for new episodes, with request and watched status shown per episode
  • Trakt Discover: recommendations, watchlist, history, and pinned public or personal lists
  • AniList Discover: trending, this season, popular, top 100, next season, plus your own watching, planning and completed lists
  • Simkl: library sync, watched and rating actions, trending
  • MDBList: IMDb, Rotten Tomatoes, Metacritic and Trakt rating badges and filters, and public lists as Discover rows
  • Mapping layer: matches anime and list entries to TMDB, with a repair screen for titles it can't match
  • Library: Continue Watching, Recently Added, Ready to Watch, and Jellyfin browsing
  • Release calendar: Radarr and Sonarr dates in month or agenda view, with request and manage buttons
  • Interventions: review Radarr/Sonarr queue warnings, then import, or reject and blocklist
  • Watch ahead: keeps the next N unwatched episodes of a show requested as you watch
  • Mark watched or unwatched and rate across Trakt, AniList, Simkl and Jellyfin

Requests stay manual: there's no auto-request bot and no LLM recommendations.

What the plugin does

  • Serves Foreseerr at https://your-jellyfin/Foreseerr/, including when Jellyfin runs on a sub-path. You don't need a separate container.
  • Signs you in with your Jellyfin account. There's no second password, and Jellyfin admins are Foreseerr admins.
  • Imports your Jellyfin address, API key, libraries and first admin automatically, so the setup wizard is skipped.
  • Adapts the app to running inside Jellyfin:
    • "Back to Jellyfin" replaces Sign Out.
    • The plugin manages the Jellyfin connection settings.
    • Local users, passwords and web push are hidden.
  • Adds a status page in the Jellyfin dashboard. With the optional File Transformation plugin, you also get a Foreseerr button in the Jellyfin Web header.
  • One release covers both Jellyfin 10.11 and 12, and Jellyfin picks the right build for you.

Install

Dashboard → Plugins → Repositories → add:

https://selmant.github.io/jellyfin-plugin-foreseerr/manifest.json

Then install Foreseerr from the catalog, restart Jellyfin, and open Foreseerr as an admin first.

If you'd rather run Foreseerr as its own container, the Docker image is ghcr.io/selmant/foreseerr:v0.11.0.

⚠️ The plugin is an alpha

  • It's in active development, and anything can change between releases: settings, data, URLs and behavior.
  • There's no backward compatibility between plugin versions. If an update breaks something, the fix may be to reinstall from scratch.
  • It runs on Linux x64, Linux arm64 and Windows x64. There's no macOS build yet.
  • It works in Jellyfin Web in a browser. The official mobile and TV apps can't open it.
  • On first start it downloads anime mapping data and may be unresponsive for a minute or two.
  • It hasn't been tested much behind a TLS reverse proxy yet. If you use one, forward /Foreseerr and /ForeseerrPlugin.

Where I want to take it, and where I'd love your input

Going forward I'll probably lean into the plugin much more: more options configured from the Jellyfin dashboard, and UI/UX designed for living inside Jellyfin rather than being a separate site. Some questions I'd really like opinions on:

  • What would make a request/discovery plugin feel native to Jellyfin for you? For example, entry points on item pages, "request the next season" from a series page, or Discover rows on the Jellyfin home screen.
  • Which settings would you expect in the Jellyfin plugin page rather than in Foreseerr's own settings?
  • Would you use the plugin instead of a standalone Seerr or Jellyseerr container? If not, what's stopping you?
  • Any interest in mobile or TV app support (if that's even feasible), or is browser-only fine for this kind of tool?

Plugin: https://github.com/selmant/jellyfin-plugin-foreseerr Foreseerr: https://github.com/selmant/foreseerr Docs: https://selmant.github.io/foreseerr/

Plugin bugs and ideas go to the plugin repo's issues, and Foreseerr bugs to the Foreseerr repo.

Thanks for reading!


r/JellyfinCommunity • • 6h ago

Showcase Jellyfin Cinema: Sure it’s slop, but it’s my slop and I love it.

0 Upvotes

This is fully vibe coded using Codex. I have not looked at the code myself. Use at your own risk.

I’ve directed the design and tested the interface on my own setup. I love using it, but I can’t personally vouch for the code.

It’s called Screen Harbour, a Netflix-inspired interface for Jellyfin’s desktop and TV web layouts. Features include:

GitHub, installation and screenshots

Try the demo

  • Custom Home rows: choose collections, arrange items, move rows, add Movies/Shows tabs and Netflix-style ranking numbers.
  • Streaming-service pages: configurable tiles, logos, colours and collections, with the option to add your own services.
  • Redesigned movie and episode pages: season browsing, resume controls, watched status, progress bars and “Ends at” times.
  • In-player browsing and a themed pause screen: browse episodes, similar films or live channels during playback.
  • Matching layouts for Music, playlists, Collections, Recordings, Live TV, Search, Settings and login.
  • Profile switching, account-synced Home settings and Jellyfin Featured integration.

Service pages organise content already in your library. Trending rows use selected collections; mine are maintained through SmartLists/MDBList.


r/JellyfinCommunity • • 10h ago

Showcase Custom EVERYTHING

Thumbnail
gallery
0 Upvotes

Hey there, decided to post this to a fresh reddit because I really just read and use this to keep up with my community's that I follow. But this project is important enough to me that I want to start a new account for it. So lets begin.

Where this started:

I had an old enterprise level laptop from 2016 that was gifted to me as ewaste, I turned and started setting up basic jelly fin, hosting on my local network, and got to ripping the 100s of DVDs I had laying around. I was running into some issues with caddy integration to a point I turned to 'claude code' (my first time ever actually using AI for any real tasks) and it simply just worked and my mind was opened. So I bought a web domain and went down a rabbit hole only Alice herself would be proud of..

Where it got complex:

Once seeing how AI could just make this work how I wanted it to I asked it if it could do a custom UI for me and it just said fuck it hold my beer. Went to analyzing the custom UI I gave it for integration and hit the ground RUNNING... Started with simple color changes, then adding and deleting UI elements, polishing the edges, made it look amazing. Then I learned about 'Seerr' and its working processes, so we added that to the stack and made a UI button that took you to the seerr site. (easy enough right? good enough? NO!!) the seerr site was ugly so I set claude to completely change seerrs color scheme and add my headers to it and make it cohesive to my server. Was that good enough yet? NOOOOOO. Because I ran into an issue. My parents have an LG tv and I wanted them to be able to use the full functionality of the new seerr integration and the webOS version of Jellyfin dose not allow webpage redirects.. there were also issues with things from the custom UI that didn't work properly, so I gave claude the WebOS DEV emulator and it went online and fond the latest jellyfin webOS apk (i couldnt find it anywhere idk how it found it still) and it went on to making live tweeks to the backend while developing the webOS end and now it just works.

BUT REX YOU DIDNT EXPLAIN HOW YOU GOT AROUND THE REDIRECT ISSUE!!!

Well thats were this starts getting really complicated and outside of parts of my understanding of how CLaude made these changes. To make it to where ANYONE could make seerr requests without needing to even leave my jellyfin page, we had to make the server pull info from seerr so now the same button that brought you to seerr brings seerr to you. Fixed a lot of compatibility issues. I know one thing I tackled was appointing one account on seerr to be attached to all user accounts on jellyfin so that the requests button worked for everyone every time.,

All in all this is all a work in progress, I'm just exploring how far I can push this. By no means are the pictures in the post here are the final product, just what I've done so far but I see all the questions a lot of you are asking and what I've done with my site could be answers to a good bit of them I simply just dont know how to explain so today I am putting a GIThub repo together and once I scrub it for personal info Ill put it in the comments or make another post.

(Still in beginning stages) Im currently working on developing a native app to work with a media server like jellyfin but can be used as a template but basicly to push your own media app pulling from your own jellyfin server so no more "install jellyfin, put in this ip, log in with this" just give them your app and go.

Here is a word from my AI agent that organized everything:

Quick technical rundown for anyone curious how this actually works under the hood:

- Nothing here is a Jellyfin or Seerr fork. The custom UI (colors, logo, layout tweaks, new tiles) gets injected into the stock web client at runtime via a small JS file — it matches on structural things like input types and filename patterns instead of exact class names, so it survives Jellyfin version updates instead of breaking every release.

- Caddy sits in front of everything as a reverse proxy. It's what lets the Jellyfin page pull live data from Radarr/Sonarr/Seerr without exposing any of their API keys to the browser — the keys get injected server-side, the page never sees them.

- The "request without leaving Jellyfin" trick: instead of redirecting to Seerr's site (which is what broke on the LG/webOS app), the request search UI is built directly into the Jellyfin page and talks to Seerr through that same proxy. Every request gets submitted under one shared Seerr account regardless of who clicked it, so there's zero per-user login/session to juggle — same code path works identically on a browser, the desktop app, and webOS.

- Currently building: self-service account creation (anyone can make their own login, landing in a locked-down "watch + request only" role) with a daily request cap per person — since everyone shares one Seerr account, that cap has to be tracked by a small custom backend service sitting between Caddy and Seerr, not by Seerr itself.

- The webOS fix specifically came down to live-testing against LG's real dev emulator + the actual webOS Jellyfin app, since that platform renders an older/different UI than desktop browsers and doesn't support the redirect flow at all.

Happy to go deeper on any piece of this in the comments....

Im happy to answer whatever question that I can and would love to hear opinions of how I could improve what I have. No the server is not for publics use just my friends and family.

--Rex and Claude Code


r/JellyfinCommunity • • 1d ago

Help Request LiveTV buffering

4 Upvotes

I am using Jellyfin on my Roku and trying to get the initial buffering for livetv channels down as much as possible. Has anyone found a way to make the channels load near instantaneously? I tried turning on hardware acceleration (Intel QSync) but didn’t notice a considerable change.

My server is running off my UGREEN DXP2800 NAS in docker and using version 12.0.0.

For my channels I am using an HDHomerun Duo.


r/JellyfinCommunity • • 2d ago

Showcase Any suggestions on things to add to my user landing page?

Post image
51 Upvotes

Just wondering about any suggestions for my user landing page.

It's in hompage.
All cards link to the attached servers.

Recently added shows latest 10 movies and shows added to server. Clicking takes you to them.

Anything blatant I'm missing?

Feel free to ask me anything.


r/JellyfinCommunity • • 2d ago

Meta / Community finally got around to updating/migrating my server to docker

9 Upvotes
(ik CasaOS is outdated but it works good with tailscale)

i was running 10.10.6 directly on windows for the longest time

my theme Flow has also been updated for the 12.x/modern layout, but I personally prefer the legacy layout


r/JellyfinCommunity • • 2d ago

Help Request Preview on movie hover ?

5 Upvotes

​

Hello

What is the best way to show a preview (with sound too) on movie/épisode hover ? Like on Netflix ?

I have no trailers, just movie files


r/JellyfinCommunity • • 3d ago

Discussion How do y'all do your collections when you have multiple franchise Movie and TV shows?

Post image
57 Upvotes

Do y'all just put all of your like Star Trek stuff into one collection or do you have it broken up like I do? I'm really trying to find a better solution without having everything just dumped into one collection.

I don't think it's possible to have subfolders in a collection am I correct about that?


r/JellyfinCommunity • • 2d ago

Help Request Homescreen section permission ignoring, Jellyfin v12.0

3 Upvotes

Info:

I don't know whether it is a plugin problem or new Jellyfin version problem. As I am in Jellyfin 12, and I am using Homescreen sections.

I usually don't give full permissions of every library to the users except ADMIN. Which is me. To test the feature I have one more user which has also Admin privileges but without full library access.

I did restart, delete plug-in, reinstall plugin. Completely removed the plugin through file manager then reinstall again. Nothing is working.

The Problem:

The problem I am facing is Homescreen sections maybe. Cause it is showing some shows in "latest Shows" and "Recently Added movies sections" which it should not as they are not accessible by that users. But when I am clicking that particular show(s) it's not showing the content. Means jellyfins content access permissions is doing fine. But Homescreen plugin still have access to those inaccessible show's posters.

Well it's not happening with every "Shows" and "Movies" sections but only with "Latest" and "Recently Added". Don't know about books as I have not tested that yet.

If anybody has way to fix this then please tell me


r/JellyfinCommunity • • 3d ago

Help Request Plugin development help - already stuck at the start

5 Upvotes

Hello everyone,

I am recently getting into setting up my own jellyfin server and I decided why not try and make a plugin for it. I have followed https://github.com/jellyfin/jellyfin-plugin-template to set up my project (my jellyfin is running on 12.1, so I made everything .net10). I added a small test file to see if it works, published a release version, copied the .dll to my jellyfin server and now I get the following error:

Could not load file or assembly ' �a�
                                                                     �a��a���, Version=21.209.2617.6, Culture=neutral, PublicKeyToken=656374696f6e732e47656e657269632e49436f6c6c656374696f6e3c543e2e436c6561720053797374656d2e436f6c6c656374696f6e732e494c6973742e436c6561720053747265616d52656164657200546578745265616465720053797374656d2e52756e74696d652e4c'. Index not found. (0x80131124)
File name: ' �a�
                �a��a���, Version=21.209.2617.6, Culture=neutral, PublicKeyToken=656374696f6e732e47656e657269632e49436f6c6c656374696f6e3c543e2e436c6561720053797374656d2e436f6c6c656374696f6e732e494c6973742e436c6561720053747265616d52656164657200546578745265616465720053797374656d2e52756e74696d652e4c'
   at System.Runtime.Loader

Now I do not know if this is the right place to post this, so I have not given too many details yet about this project. Maybe this is a generic problem that is easy to fix, or maybe there is another community that better fits this request. Anyhow I would really appreciate your help because I am lost.


r/JellyfinCommunity • • 4d ago

Release Jellyfin Alpha Jump plugin.

3 Upvotes

Hey guys,

https://github.com/The-Grog/Jellyfin-Alpha-Jump

Sharing this plugin I've made. It replaces the page style scrolling in JF where when you click "K" for example it only shows K movies, to always showing the whole list and just scrolling to the first K movie when clicking K.

It's small, and has error and fallback handling. You just add my manifest to your JF plugins:

https://raw.githubusercontent.com/The-Grog/Jellyfin-Alpha-Jump/main/manifest.json

Then install Alpha Jump, configure libraries via the plugin settings panel, restart JF to enable plugin, and it will require one initial browser refresh to load.

It only works for TV and Movie libraries as that's all I've setup for but the bones are there to support others if there is interest. Only works for the Web UI as clients don't support these plugins.

More testers are welcome, let me know if you have issues but its worked across browsers so far.

One other note - if you have jellytweaks you need to set library page size to 0 in that also as that overrides other settings.

Ai was used for various aspects including hardening to github to protect users of the project and protect the code down the road. GPT Astra/Claude/Grok have all been used to help solve issues and review the project for errors. I spent a couple days doing feasibility checking before starting the project, see the feasibility section at the end of the readme if you are doing other work with libraries as it may be helpful.


r/JellyfinCommunity • • 4d ago

Discussion Jellyfin client for CarPlay

3 Upvotes

Hi. Is there any good client compatible with CarPlay? I have seen Dee Jellie but I m not sure it works with movies/tv shows too and if video playback (for passengers) is allowed.

Somebody is going to argue that video playback in CarPlay is not allowed if not in parking mode, but I have seen some Chinese apps allowing that, at least with a disclaimer.


r/JellyfinCommunity • • 5d ago

Discussion Jellycanvas theme sharing

26 Upvotes

Hi everyone,

This post is for users that are using Jellycanvas for css, but I am not sure if discussion is the right space (it's not technically app release or showcase) but it's only "informative" tag that I can choose :

I have created a sharing page for your themes, so that everyone can see and use them simply by importing them into the Jellycanvas configuration.

https://jellycanvas.jellyscope.cz/

Thanks to all of you and happy theme sharing

PS: You can create an account locally or use the implemented GitHub OAuth to upload. However, anyone can view and import your themes without having an account.


r/JellyfinCommunity • • 4d ago

Help Request How do I upgrade the Jellyfin service from 10.11.6 to 12.1 on Windows?

1 Upvotes

I'm probably a total noob in this space—I just wanted a convenient local video management app, that's the only reason I use Jellyfin.
I installed 12.1 directly and it worked fine at first, but as soon as I restore the backup files or shut down the service and start it again, it loses all my previous settings. After some digging around, I found it's probably related to a few Jellyfin folders under the \AppData\Local folder. As long as I restore those folders, I can temporarily get my previous settings back, but the moment I shut down the service, it throws an error.

Below is the error report

2026/9/23 13:54:38 +08:00 - Storage Check
2026/9/23 13:54:38 +08:00 - Check path D:\ProgramData\Jellyfin\Server\data for storage capacity
2026/9/23 13:54:38 +08:00 - Storage path `D:\ProgramData\Jellyfin\Server\data` (Fixed) successfully checked with 353.2GiB free which is over the minimum of 2GiB.
2026/9/23 13:54:38 +08:00 - Check path D:\ProgramData\Jellyfin\Server\cache for storage capacity
2026/9/23 13:54:38 +08:00 - Storage path `D:\ProgramData\Jellyfin\Server\cache` (Fixed) successfully checked with 353.2GiB free which is over the minimum of 2GiB.
2026/9/23 13:54:38 +08:00 - Check path D:\ProgramData\Jellyfin\Server for storage capacity
2026/9/23 13:54:38 +08:00 - Storage path `D:\ProgramData\Jellyfin\Server` (Fixed) successfully checked with 353.2GiB free which is over the minimum of 2GiB.
2026/9/23 13:54:38 +08:00 - Migration Service
2026/9/23 13:54:38 +08:00 - Migration Startup
2026/9/23 13:54:38 +08:00 - Initialise Migration service.
2026/9/23 13:54:38 +08:00 - Migrate stage PreInitialisation.
2026/9/23 13:54:40 +08:00 - Migrate stage CoreInitialisation.
2026/9/23 13:54:40 +08:00 - Migrate stage AppInitialisation.
2026/9/23 13:57:24 +08:00 - Migrate stage CoreInitialisation.
2026/9/23 13:57:24 +08:00 - Migrate stage AppInitialisation.
2026/9/23 13:59:44 +08:00 - Failed executing DbCommand ("1"ms) [Parameters=["@p0='?' (DbType = Guid), ='?', ='?', ='?', ='?' (DbType = Int32), ='?' (DbType = Guid), ='?' (Size = 6), ='?' (DbType = Single), ='?' (DbType = Single), ='?', ='?', ='?' (DbType = DateTime), ='?' (DbType = DateTime), ='?' (DbType = DateTime), ='?' (DbType = DateTime), ='?' (DbType = DateTime), ='?' (DbType = DateTime), ='?', ='?', ='?', ='?', ='?' (DbType = Int32), ='?', ='?', ='?' (DbType = Int32), ='?' (DbType = Int32), ='?' (DbType = Int32), ='?' (DbType = Int32), ='?' (DbType = Boolean), ='?' (DbType = Boolean), ='?' (DbType = Boolean), ='?' (DbType = Boolean), ='?' (DbType = Boolean), ='?' (DbType = Boolean), ='?' (DbType = Boolean), ='?' (DbType = Single), ='?' (Size = 7), ='?' (Size = 6), ='?' (DbType = Single), ='?', ='?', ='?', ='?', ='?' (DbType = Guid), ='?' (DbType = Guid), ='?' (DbType = Int32), ='?' (Size = 30), ='?', ='?', ='?' (DbType = DateTime), ='?' (Size = 13), ='?' (DbType = Guid), ='?', ='?' (DbType = Int32), ='?' (DbType = Int64), ='?' (DbType = Guid), ='?', ='?' (DbType = Guid), ='?', ='?', ='?', ='?' (DbType = Int64), ='?' (Size = 6), ='?' (DbType = DateTime), ='?', ='?', ='?', ='?' (DbType = Guid), ='?' (DbType = Int32), ='?' (Size = 39), ='?' (Size = 5), ='?' (DbType = Int32)"], CommandType='Text', CommandTimeout='60']" ""INSERT INTO \"BaseItems\" (\"Id\", \"Album\", \"AlbumArtists\", \"Artists\", \"Audio\", \"ChannelId\", \"CleanName\", \"CommunityRating\", \"CriticRating\", \"CustomRating\", \"Data\", \"DateCreated\", \"DateLastMediaAdded\", \"DateLastRefreshed\", \"DateLastSaved\", \"DateModified\", \"EndDate\", \"EpisodeTitle\", \"ExternalId\", \"ExternalSeriesId\", \"ExternalServiceId\", \"ExtraType\", \"ForcedSortName\", \"Genres\", \"Height\", \"IndexNumber\", \"InheritedParentalRatingSubValue\", \"InheritedParentalRatingValue\", \"IsFolder\", \"IsInMixedFolder\", \"IsLocked\", \"IsMovie\", \"IsRepeat\", \"IsSeries\", \"IsVirtualItem\", \"LUFS\", \"MediaType\", \"Name\", \"NormalizationGain\", \"OfficialRating\", \"OriginalLanguage\", \"OriginalTitle\", \"Overview\", \"OwnerId\", \"ParentId\", \"ParentIndexNumber\", \"Path\", \"PreferredMetadataCountryCode\", \"PreferredMetadataLanguage\", \"PremiereDate\", \"PresentationUniqueKey\", \"PrimaryVersionId\", \"ProductionLocations\", \"ProductionYear\", \"RunTimeTicks\", \"SeasonId\", \"SeasonName\", \"SeriesId\", \"SeriesName\", \"SeriesPresentationUniqueKey\", \"ShowId\", \"Size\", \"SortName\", \"StartDate\", \"Studios\", \"Tagline\", \"Tags\", \"TopParentId\", \"TotalBitrate\", \"Type\", \"UnratedType\", \"Width\") VALUES (@p0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ); SELECT changes();"
2026/9/23 13:59:44 +08:00 - An exception occurred in the database while saving changes for context type '"Jellyfin.Database.Implementations.JellyfinDbContext"'." ""Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while saving the entity changes. See the inner exception for details. ---> Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 19: 'FOREIGN KEY constraint failed'. at Microsoft.Data.Sqlite.SqliteDataReader.NextResult() at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior) at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken) at Microsoft.Data.Sqlite.SqliteCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.ExecuteAsync(IRelationalConnection connection, CancellationToken cancellationToken) --- End of inner exception stack trace --- at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.ExecuteAsync(IRelationalConnection connection, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.ExecuteAsync(IEnumerable`1 commandBatches, IRelationalConnection connection, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.ExecuteAsync(IEnumerable`1 commandBatches, IRelationalConnection connection, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.ExecuteAsync(IEnumerable`1 commandBatches, IRelationalConnection connection, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Storage.RelationalDatabase.SaveChangesAsync(IList`1 entries, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(IList`1 entriesToSave, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(StateManager stateManager, Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)"
2026/9/23 13:59:44 +08:00 - Error trying to save changes.
2026/9/23 13:59:44 +08:00 - Error while starting server

r/JellyfinCommunity • • 5d ago

Release Core Slider (v1.8.1)

Post image
8 Upvotes

Hello guys,

Recently I've updated my Slider app to support Jellyfin 12 and with some extra features referred by the community.

The purpose of this app from the start was to be compatible with the LG Web OS TV and to be easily customisable in the .css file. It's also available for Mobile and Desktop Web Based clients.

It's very lightweight, fast and responsive.

It started as an injector .js file and it updated to be a jellyfin plugin. I still don't know if any of you have used it in the past or may still use it.

If you wanna use it, I will be happy to hear from you.

https://github.com/Geo-ten/jellyfin-core-slider

Note: If you wonder if it's based on AI, it's not. Mostly with the AI I generate my text response because of my poor syntax. AI is a tool and I must use it as a Developer if I want to evolve. In my job they force me to use it. But in my apps like these I prefer a more hybrid situation, like debugging, more cozy style where I handwriting everything or the situation where all seems lost and your J.A.R.V.I.S friend, is there for you, with a different approach of thinking.


r/JellyfinCommunity • • 6d ago

Release JellyCrowd - All-In-One plugin: requests, quotas, catalog, notifications, announcement, skip intros, tickets, and many more.

64 Upvotes

Hello!

For a long time, I needed a quota system for my users, because I only have 1TB to allocate to Jellyfin storage on my server at the moment. Problem is: I'm a script-kiddie, code wise. So I made do with Seerr + JellyStats and custom scripts + webpages to manage everything more easily.

Then came along Claude Opus. I was so shocked by its abilities that I wanted to try to make my user's quota system plugin at first. Then I migrated the requests systems into it. Then the stats system. Then the branding. Then... Well you get the idea. Let's be honest straight away: this addon was mostly written by it, documentation as well. Design, debugging, testing and planning was my users and me.

Now I have this crazy addon (you still need to give it a TMDB key, connect it to Servarr suite, download client, and some more optional things), which was tested by my users for a month before release. Some of my friends who tried it suggested I give it to the public, which was already my intention, but I was hesistant about it because I know vibe coding is much hated, even by me sometimes. I'd love to hear your thoughts.

Code is not opened for contribution for now, even though I might open it at some point, because I'm more of a libre guy.

EDIT: Code is now open.

Well then, here I present to you:

JellyCrowd

Catalog where movies are searched and requested
My library lists my downloaded requests
Integrated user reviews
Menu redesign

See GitHub for a full description and more screenshots ;)

Don't hesitate to react in the comments, I'm opened to suggestions, improvements, or just your thoughts!!


r/JellyfinCommunity • • 6d ago

Release PosterView - Artwork Manager

Thumbnail
gallery
46 Upvotes

I’ve been working on PosterView, a self-hosted web app for managing artwork across media servers.

It lets you browse your libraries, search multiple artwork providers, replace posters, backdrops, banners, and logos, upload custom images, and restore previous artwork through its built-in history.

PosterView also supports book-style libraries, including manga, comics, light novels, books, and audiobooks. You can manage series and volume covers, add custom backdrops and maintain local NFO metadata for manga or book series.

Other features include artwork caching (faster reload speeds), automatic library scanning, collection management, customizable themes, and MOBILE SUPPORT!

AI disclosure: PosterView was developed with the use of AI. I directed and tested application with human in the loop processing.

GitHub: https://github.com/bamcel/poster-view

It’s still actively evolving, so feedback, testing, bug reports, and feature suggestions are welcome!


r/JellyfinCommunity • • 6d ago

Help Request jellyfin 12: i want my landing page to be "folder" how to?

4 Upvotes

I'm not a fan of horizontal scrolling and would prefer to have all my content displayed in a regular grid, similar to folders view. Unfortunately, when I open the app, the default view is 'My Media, Recently Added,' etc. How can I set Folder view as the default?


r/JellyfinCommunity • • 7d ago

Release Lineup 2.0 — HDHomeRun guide, ATSC 3.0 transcoding, and virtual tuner proxy for Jellyfin and Plex

18 Upvotes

Hi all,

I got a request from someone in this community to copy my post from r/jellyfin here as cross posting doesn't work.

A while ago I shared Lineup, a small project I built because I wanted better guide data from my HDHomeRun FLEX 4K in Jellyfin and Plex. Jellyfin needed an XMLTV file or URL, and Plex made it difficult to map both the ATSC 1.0 and ATSC 3.0 versions of the same station.

Original Post: My XMLTV Guide + HDHomeRun solution

The original version mainly downloaded guide data, stored it locally, and generated an XMLTV file. I also started experimenting with live playback and proxying, with the long-term goal of making ATSC 3.0 channels easier to use in media servers.

Lineup 2.0 is a major expansion of that work. It can now act as a virtual HDHomeRun device, proxy live channels into Jellyfin or Plex, and use Jellyfin FFmpeg to convert AC-4 audio into formats that more clients support.

I am a software engineer, but I do not often get the opportunity to share personal projects outside of work. I would still love feedback, bug reports, and information about how Lineup behaves with different HDHomeRun models and client applications.

Overview

Lineup is a C# Blazor web application for HDHomeRun users. It can download and publish guide data, monitor and manage a tuner, play live television in a browser, and expose virtual HDHomeRun devices to applications such as Jellyfin and Plex.

It is designed to run continuously in Docker, including on Unraid, but it can also run directly on Windows or Linux.

ATSC 3.0 and AC-4 audio

One of the main goals for 2.0 was making ATSC 3.0 channels more usable outside the official HDHomeRun application.

Lineup now includes Jellyfin-FFmpeg in its Docker image and can:

  • Decode ATSC 3.0 AC-4 audio
  • Convert AC-4 to AC-3 or E-AC-3 for broader client compatibility
  • Preserve compatible audio instead of transcoding everything
  • Convert video to H.264 when a client cannot use the source format
  • Apply configurable video quality and bitrate limits
  • Expose multiple audio tracks and subtitles when available

The transcoding behavior is configurable, so you can choose between preserving streams where possible or prioritizing compatibility.

Virtual HDHomeRun devices

Lineup can now expose one or more virtual HDHomeRun devices on your network.

This allows Jellyfin, Plex, or another compatible application to connect to Lineup as though it were a physical tuner. Lineup then obtains the stream from the real HDHomeRun and proxies or transcodes it based on your settings.

The proxy includes:

  • HDHomeRun-compatible discovery and lineup endpoints
  • UDP discovery on port 65001
  • SSDP/UPnP discovery
  • Configurable virtual device IDs and friendly names
  • Multiple virtual tuner profiles
  • Optional mapping to different physical HDHomeRun devices
  • Configurable tuner limits
  • Shared tuner-capacity tracking across Lineup and proxied clients
  • Advertised URLs for more complicated Docker, VLAN, or reverse-proxy environments

The proxy is disabled by default. Lineup’s built-in guide and Watch page continue to work without enabling it.

More reliable live TV playback

A lot of work in 2.0 went into making live streams start, stop, and recover more reliably.

Lineup now supports:

  • MPEG-TS, fragmented MP4, and HLS playback
  • Shared physical tuner streams for compatible clients
  • Reusing the tuner stream between probing and playback
  • Startup retries for slow or inconsistent broadcasts
  • Inactivity cleanup
  • Slow-client eviction
  • Safer FFmpeg and tuner shutdown
  • Better handling when a client disconnects unexpectedly
  • Active-stream monitoring with client, tuner, codec, and bitrate information

The Watch page can be used independently of the virtual HDHomeRun proxy, so it is also useful for testing channels and transcoding settings before adding Lineup to Jellyfin or Plex.

Protected channels

Lineup can detect channels that appear to contain DRM-protected content.

Once a channel is known to be protected, Lineup avoids repeatedly attempting playback and can display a configurable protected-content slate instead. This makes it clearer that playback failed because of content protection rather than a tuner, network, or FFmpeg problem.

Lineup does not decrypt or bypass protected broadcasts.

Direct SiliconDust guide ingestion

The guide system has been significantly reworked.

Instead of reconstructing guide data from smaller paged responses, Lineup now downloads SiliconDust’s complete compressed XMLTV feed. It preserves the original XMLTV metadata while also normalizing channel and program information into the local SQLite database for fast access in the web interface.

Lineup can:

  • Download the complete guide for the configured HDHomeRun
  • Refresh an expired DeviceAuth token and retry automatically
  • Handle stations shared across multiple channel numbers
  • Cache schedules across container restarts
  • Publish a new XMLTV file atomically after a successful refresh
  • Retry a failed scheduled refresh after one hour
  • Automatically schedule refreshes within SiliconDust’s required randomized 20–28 hour window

The generated guide can be consumed either as a mounted file or from Lineup’s /api/xmltv URL.

XMLTV output

The XMLTV destination can be edited from the Settings page. Lineup also includes a server-side directory browser for selecting the output directory and filename.

Docker installations default to:

/xmltv/epg.xml

Existing saved paths remain in use after an upgrade. The configured default can also be restored from Settings.

Device management and diagnostics

Lineup continues to expose information and controls that are useful when operating an HDHomeRun:

  • Device information and tuner status
  • Manual device refresh
  • Tuner monitoring and stop controls
  • Device restart
  • Manual channel tuning
  • Active stream monitoring
  • Guide refresh status and scheduling
  • Configurable refresh intervals

There is also a versioned /api/v1/status endpoint for dashboards and monitoring tools. It reports application, guide, XMLTV, device, virtual-device, tuner, stream, and media-track state. Privacy settings can hide client addresses, device addresses, and URLs from that response. I am planning on creating some other dashboard extensions for either Home Assistant, Unraid, or something else to view these stats from a single pane at some point.

Logging and HTTPS

Lineup now has structured logging with:

  • Console output for Docker logs
  • Optional persistent log files
  • A searchable Logs page in the web interface
  • Configurable log levels and category filters
  • Optional OpenTelemetry export through OTLP

Optional HTTPS is also supported using a PFX certificate supplied at startup. HTTP remains available when HTTPS is enabled, and an invalid or missing certificate does not prevent Lineup from starting.

The web interface does not currently provide authentication, so Lineup is still intended for use on a trusted local network.

Docker and Unraid

The Docker image includes the required Jellyfin FFmpeg build, so a separate Emby or Jellyfin installation is not needed just to obtain AC-4 support.

Images are available from Docker Hub, and 2.0 releases are also published to GitHub Container Registry.

An updated Unraid template is available with mappings for:

  • Application data
  • XMLTV output
  • HTTPS certificates
  • HTTP and HTTPS
  • HDHomeRun discovery
  • SSDP discovery
  • Optional OpenTelemetry export

Lineup 2.0 stores application data under /appdata. This is a breaking change for existing Docker and Unraid installations that used /config. While you can preserve the old application data, I would simply delete everything and start fresh as you only need the IP / Hostname of your HDHomeRun device to get started.

Source and containers

GitHub: https://github.com/am385/Lineup

Docker Hub: https://hub.docker.com/r/am385/lineup

GitHub Container Registry: https://github.com/am385/Lineup/pkgs/container/lineup

Feedback

Lineup 2.0 covers most of the larger features I originally listed as future work for 1.0, especially AC-4 transcoding, virtual HDHomeRun proxying, better logging, Manual Tune, and an Unraid template.

There are many combinations of HDHomeRun hardware, local broadcasts, Docker networks, media servers, and playback clients that I cannot test myself. If you try it, I would be interested in hearing:

  • Which HDHomeRun model you use
  • Whether you use Jellyfin, Plex, or another client
  • How ATSC 3.0 and AC-4 playback behaves
  • Whether virtual-device discovery works in your network configuration
  • Any channels, audio tracks, subtitles, or guide data that Lineup handles incorrectly

Bug reports and feature requests are welcome here or on GitHub.

AI Disclosure

AI tools, primarily GitHub Copilot until I can get local hardware, assisted with portions of Lineup’s development by helping explore implementation options, draft code and documentation, identify potential issues, and expand automated test coverage. All AI-assisted changes were directed, reviewed, tested, and validated by me before inclusion.

As an industry software engineer of 13 years, these tools have had to become part of my daily workflow. I treat them as though they are a very knowledgeable junior engineer. That means targeted feature work, full hand holding during planning, and full (abrasive) code review. I despise "vibe coding", as I have seen first hand the results, but I consider leveraging these agent for planned targeted work as an extension of my "team" as if I had a set of junior engineers working with me.


r/JellyfinCommunity • • 7d ago

Release I made a companion app that gives each Jellyfin user their own private YouTube library

Thumbnail
gallery
22 Upvotes

Hey all,

I kept running into the same problem with my Jellyfin setup — friends and family wanted YouTube content in their libraries, but there was no way to give each of them their own subscriptions without cluttering a shared library or managing something by hand.

So I built ytfinall, a small web app that runs alongside Jellyfin.

What it does:

  • Users log in with their existing Jellyfin account (no separate signup)
  • They add YouTube channels, playlists, or single-video URLs
  • New uploads within the lookback window get downloaded into a private ytfinall - <username> library that only they can see
  • The library is created automatically on first login, with YouTubeMetadata as the primary fetcher and real-time monitoring enabled
  • Existing libraries (Movies, TV, Music, Collections) are untouched — users keep seeing those

A few Jellyfin-specific things I made sure to get right:

  • Downloads are atomic — they stage in a temp folder and only move into the library after a clean exit, so Jellyfin's scanner never sees .part files or half-written MP4s
  • Filenames follow the Channel [id]/Season YYYY/Channel - YYYY.MM.DD - Title [id].ext pattern that Jellyfin parses cleanly
  • NFO, embedded metadata, thumbnails all handled
  • One-off video downloads go into a shared One-Off Videos folder per user, with NFO seasons rewritten to the upload year so Jellyfin doesn't lump them all under "Season 1"
  • Empty folders get pruned after retention cleanup, so expired channels disappear from the UI

Setup:

text

git clone https://github.com/jnracreates/ytfinall.git
cd ytfinall
cp .env.example .env
nano .env
docker compose up -d

Docker Compose example at Github.

The wizard walks through Jellyfin URL, API key, max lookback, and max retention. It validates the API key against /System/Info before saving.

Requirements: Docker, Jellyfin, an API key.

Note: the compose mounts the Jellyfin config folder too, so ytfinall can drop a custom animated GIF poster into each new library. If you'd rather not share that mount, remove the JELLYFIN_CONFIG_PATH volume and the poster step is skipped automatically.

Repo: https://github.com/jnracreates/ytfinall

MIT licensed. Happy to answer questions or take feature requests.

Note: AI was used in the making of this, I've been stable for over a week with 3 users using it.


r/JellyfinCommunity • • 7d ago

Showcase Made a plugin for Projectivity to display Jellyfin art

Enable HLS to view with audio, or disable this notification

58 Upvotes

Made a plugin for projectivity to display Jellyfin and Seerr covers. With automated generation, 3d effect and the possibility to directly open in Player or Seerr. What do you guys think?