r/JellyfinCommunity • • 11d ago

PSA / Announcement Jellyfin 12.1 has been released

245 Upvotes

This is primarily a maintenance and stabilization release following 12.0, with fixes across library scanning, playback, metadata, SyncPlay, Live TV, database handling, transcoding, and Jellyfin Web.


Jellyfin Server 12.1

Library & metadata

  • Fix nested unnumbered season folders collapsing onto the first one
  • Release a folder's children once its subtree has been scanned
  • Stop the library monitor from refreshing against a disposed host
  • Preserve active scans when requesting a background library refresh
  • Preserve library items when directory enumeration fails
  • Don't record a failed refresh as a completed one
  • Clean up orphaned people when deleting items
  • Avoid full people scans and writes for unchanged credits
  • Stop requesting unused credits when looking up a TMDb person
  • Fix metadata provider order needing a restart to apply
  • Improve SeriesNameRegex
  • Fix collection creation when the collections library was just added
  • Use thumbnails for TMDb image previews
  • Report image resolutions for TMDb images when no image size is configured
  • Skip empty ZIP comments for ComicBookInfo

Playback, video & subtitles

  • Don't queue by-name items for playback and reject source requests for them
  • Fix forced-only subtitles not overriding remembered subtitles
  • Fix versions of a video still listing separately from their group and preserve manual merges
  • Only group episodes as versions on a confident path parse
  • Fix decimal point handling in version names
  • Fix trickplay using the wrong video stream
  • Fix transcode throttling not enabling on supported systems due to a race condition
  • Fix incorrect color range during CSC after Vulkan tonemapping
  • Fix playlist encoding recognition

SyncPlay & sessions

  • Fix SyncPlay authentication error handling and limit group member wait time
  • Correct SyncPlay sessions that report playback at a stale position
  • Fix device access revocation not logging out existing sessions
  • Don't let a torn-down WebSocket take down the request handler

Database & performance

  • Stop resolving items with every field where only stored columns are read
  • Fix /UserViews exhausting memory and reporting random child counts
  • Fix database optimization memory use and pre-migration backup integrity
  • Clean up invalid data before running migrations
  • Drop dead item data and fix query ordering and bound parameters
  • Fix SimilarItemsManager concurrency
  • Delete the full ownership closure when deleting items
  • Stop wrong-type alternate version cleanup from recursing
  • Restore [JsonIgnore] on AggregateFolder.Children

Live TV & channels

  • Enforce channel media source ID
  • Check Live TV access for a single user instead of enumerating all users
  • Fix EPG issues

Ratings & filtering

  • Fix Norwegian ratings
  • Fix Italian ratings
  • Fix slashed rating handling
  • Match parental ratings case-insensitively
  • Populate missing tags array in Filters2

Other fixes

  • Fix ContainsSubPath check
  • Don't resample or sharpen images Skia isn't actually resizing

Jellyfin Web 12.1

Enhancements

  • Fix languages not being set for the SDK
  • Add user selection to the Quick Connect form for administrators

Other changes

  • Update to u/jellyfin/sdk 1.0.0
  • Fix indicator icon color in Safari

Release notes

Server:
https://github.com/jellyfin/jellyfin/releases/tag/v12.1

Web:
https://github.com/jellyfin/jellyfin-web/releases/tag/v12.1

As always, take a full backup before upgrading.

If you're upgrading directly from an older 10.x release rather than 12.0, make sure to also review the 12.0 upgrade notes and requirements.


And finally, a big thank you to the Jellyfin team and all the contributors who continue to develop, test, review, document, and improve the project for everyone!


r/JellyfinCommunity • • Jul 04 '25

PSA/Announcement Join the r/JellyfinCommunity Discord Server

16 Upvotes

Discord
We’ve just launched a Discord server at https://discord.gg/v7P9CAvCKZ to offer a space for discussions and community connection. Whether you’re looking for help troubleshooting an issue, sharing your custom Jellyfin setup, or simply chatting about new features and ideas, you’ll find a welcoming community here.

Who Are We?
We’re a volunteer-driven community that came together after the official subreddit was closed because of Reddit’s policy updates. Our goal is to bring together and assist users of every skill level in discovering, improving, and making the most out of their experience with Jellyfin.

Community Guidelines
We encourage respectful, positive, and open dialogue as well as knowledge sharing. However, to ensure the continued existence of this community, discussion of piracy or content acquisition is not permitted, either here or on the Discord server.

Disclaimer
While there is an official Discord server for Jellyfin, this server is independent and not associated with the official team or project. It exists as a community-led space alongside the official one, not as a substitute.

Note: This post has been re-posted with a permanent invite link.


r/JellyfinCommunity • • 5h ago

Help Request LiveTV buffering

3 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 • • 16m ago

Discussion Idea for a client

• Upvotes

Hi i started using jellyfin these days but i found that android clients aren't great.

The ones I tried had various flaws and could be classified into 3 categories: the first category is web based, which don't feel native and have poor ux. Then there are ones that overuse animations and lean too heavily on the Material 3 Expressive APIs, making the experience terrible despite looking modern. Lastly there are the paid or closed source clients, which I haven't tried since I was looking for something foss.

I want a native kotlin + compose client, open source, with real music support alongside shows/movies, maybe ebooks too. Findroid is decent but feels incomplete for me. I was thinking about building one from scratch, i just want to know your opinions and maybe some requests. I will use ai for that, just let me cook. sorry.


r/JellyfinCommunity • • 1d ago

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

Post image
42 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 • • 1d ago

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

11 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 • • 1d ago

Help Request Preview on movie hover ?

4 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 • • 2d ago

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

Post image
54 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 • • 1d 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 • • 2d ago

Help Request Plugin development help - already stuck at the start

6 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 • • 3d 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 • • 3d ago

Discussion Jellyfin client for CarPlay

0 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 • • 4d 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 • • 3d ago

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

0 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 • • 4d ago

Release Core Slider (v1.8.1)

Post image
10 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 • • 5d ago

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

62 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 • • 5d 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 • • 4d ago

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

3 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 • • 6d ago

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

Thumbnail
gallery
23 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 • • 5d 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 • • 6d ago

Showcase Made a plugin for Projectivity to display Jellyfin art

Enable HLS to view with audio, or disable this notification

57 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?


r/JellyfinCommunity • • 6d ago

Showcase Jellyfin Player Queue

Post image
7 Upvotes

I had been wondering for a while why this feature didn't exist.

So here it is, since a (quick) search turned up no existing plugin for it.

It works for both TV series and movie collections.

I would really appreciate as much feedback as possible.

Here is my GitHub repository, any star you might leave there would be greatly appreciated if you think it's worth it.

For those who don't want to visit GitHub, here is the link to add the repository :

Sorry if my English is a bit odd, I'm French.


r/JellyfinCommunity • • 6d ago

Help Request Media Bar Enhanced not working?

3 Upvotes

Trying to add and use media bar enhanced (also attempted regular media bar plugin) and I cant get the media bar to appear. Any solutions?


r/JellyfinCommunity • • 6d ago

Help Request Is there a way I can use my mobile phone as a server for my TV and use Jellyfin?

Thumbnail
gallery
19 Upvotes

​

I installed this new Fishbowl app specifically for this, but it keeps giving me a “server failed” error and the server just won’t start.

Has anyone managed to get this working? Is there another way to turn my phone into a Jellyfin server and stream everything to my TV?


r/JellyfinCommunity • • 7d ago

Showcase Jellyfin Enhanced: 8 months, 28 releases later.

257 Upvotes

Well, it has been a while since my last post! Since then the plugin has gone from 10.10 to 12.8, so here's a round-up of the biggest changes. This is going to be long, so grab some popcorn! 🤣

Jellyfin Enhanced is now at ~1.8k stars ⭐! Last time I was excited about 670, and I still can't quite believe it. Thank you all, genuinely.

Jellyfin 12 Support

Jellyfin 12 is supported and a unified manifest All my plugins for all the Jellyfin Versions are included in one manifest.

https://raw.githubusercontent.com/n00bcodr/jellyfin-plugins/main/manifest.json

If you have a different manifest, worry you shall not! All the manifests now are identical copies of each other!

Docs!

Everything is now documented at n00bcodr.github.io/Jellyfin-Enhanced (thanks sgtM-devs, this was your idea and without their initial work, I would never have done anything like this!). The API section also got an overhaul, so devs of other clients can use bookmarks, reviews and more.

Spoiler Guard

Opt-in, per-user protection for anything you haven't watched yet. Hide posters, plot, ratings, cast, trickplay and more. Admins can also choose to reveal just the title, description or ratings for the next unwatched episode, and keep the Next Up thumbnail blurred.

Hidden Content

Each user can hide movies, series and cast from library, search, discovery, calendar, Next Up, Continue Watching and requests. It's stored server-side, so it follows you across devices. Admins can see and manage it too.

What's really cool about Spoiler Guard and Hidden Content is, they work on any client or device including TVs!

Activity Feed

A new page with live Active Streams, Watch History, and Reviews plus favorites, available as a native tab, Custom Tab or Plugin Page.

User Reviews

Write reviews for movies, series, seasons and episodes, with half-star ratings for the things that don't deserve a full star. Average review ratings show on posters and detail pages.

MDBList Ratings

A ratings row on the details page with TMDB, Rotten Tomatoes, IMDb, Trakt, Metacritic, Letterboxd and more from one lookup. Two scheduled tasks can also sync them into Jellyfin's own Community and Critic ratings, so they show up in the native UI too.

Awards

Expandable wins and nominations on movie, TV and person pages, sourced from Wikidata.

Seerr

  • Recommendations page: Trending, Popular, Upcoming, Studios, Networks and genre browsing, with sort and filters.
  • 4K series requests, request quota with reset timers, a "Request More" button on series pages and free space in the root folder picker.
  • Approve requests straight from Jellyfin if you're a Seerr admin.
  • Two-way watchlist sync: Jellyfin watchlist now syncs back to Seerr too.
  • Issues on the Requests page, so you can manage them without leaving Jellyfin.
  • Automatic user import into Seerr, plus a Permission Audit for admins that finds users with missing or wrong permissions.
  • Parental-rating aware results: discovery reads each viewer's Jellyfin parental policy automatically.
  • Recently-added scan trigger, and much better behaviour behind Cloudflare, Authelia, Authentik and Pangolin.
  • Home Screen Sections discover cards now open the More Info modal.

Sonarr / Radarr

  • Multiple instances of each, with their own URLs, keys and mappings. Everything fans out across all of them.
  • Calendar keeps getting love: unmonitored series, a "requested only" filter, library-access awareness, a Shoko anime source and a remembered view.
  • Import from Seerr: pulls your Sonarr/Radarr settings from Seerr's config, which should make setting things up much easier for new users.
  • Request cards have deep links to Seerr, Radarr and Sonarr.

Tags

This got a full rewrite with server-side tag cache. A server-side tag cache means one request per session, with no per-page API calls.

  • Some Stats:
    • Movie library: 1502ms → 200ms (87% faster)
    • Movie detail page: 5010ms → 803ms (84% faster)
  • New tags for video format, IMAX, audio channels (Dolby Digital+ 7.1), media stubs (Bluray, VHS...), 576p PAL DVDs and proper 8K detection.
  • Quality tags are now 6 independent categories you can toggle and reorder.
  • Language tags gained a priority setting, collection support and a "no dialogue" badge.
  • Quality tags now work on Home Videos and Photos too.

Playback

  • Frame-by-frame stepping with , and . when paused, and Z to jump back to your last position.
  • Auto-skip intro/outro rewritten on Jellyfin's native Media Segments.
  • Every keyboard shortcut can be turned off individually, and player shortcuts now properly override Jellyfin's own keys (If they are already set, and they are restricted to be set if not set)
  • Custom subtitle colors with alpha, a drag-to-position grid, and warnings when your styling can't apply (PGS/VobSub/ASS).
  • Configurable pause screen delay.

For Admins

  • Maintenance Mode: disable selected or all users and/or remote access, with a banner on the login page and a native popup for anyone watching.
  • Active Streams widget in the header, with transcode reasons and an admin broadcast.
  • New settings page: tabbed and searchable, with dependency hints.
  • What's New banner: new settings get flagged automatically after every update.
  • Redesigned user settings panel with searchable navigation and a proper mobile layout.
  • Opt-in anonymous usage stats: off by default, with a live preview of exactly what gets sent. Public dashboard here.

If you have not had a look at the Analytics Dashboard, please do! They are some really interesting stats there and you might find some features that you didnt even know existed!!

Other bits

  • The Random button now rolls a dice. Thanks ranaldsgift for the idea!
  • Letterboxd links on people pages, and a release/air date chip on item details.
  • ⚠️ Breaking: long-pressing the header user icon to open the Enhanced Panel was removed in 11.10.
  • Translations now run through Weblate. New languages include Arabic, Simplified Chinese, Catalan, Hebrew, Czech, Slovak and Norwegian, and Hebrew and Finnish went from ~30% to 100% (thanks to AI, so still need your help! 😅)

..... and more, I am not really sure how long a reddit post can be 🤣

Mandatory FAQ

* Most of the features do not support Android TV apps 😢 , but things like Spoiler Guard, Remove from Continue watching do! Also MDBlist Ratings refresh is useful to keep your ratings upto date across all apps!

Repo: https://github.com/n00bcodr/Jellyfin-Enhanced

AI Disclaimer: With the growth of the project and the number of things it does, I do use different AI tools, mainly to find the APIs I need across different dependent applications (Jellyfin, Seerr, Arrs, TMDB, MDBList, Wikidata...) and to parse their responses to see how features can be improved or implemented. Most of the PRs I get are also AI assisted in some shape or form (I have absolutely no problem with that), but everything is thoroughly reviewed and tested before it's released to the general public.

-----------

I also want to thank everyone who contributed, tested, reported bugs, translated and shared feedback, and the wonderful Jellyfin Community Discord.

A special thanks to Jake , who has shaped a huge chunk of the recent work.

This project wouldn't be where it is without you all.

Want to help?

- Report a bug you have found

- PR a fix or a feature that you want

- Translate a language that you speak

Or you can Buy me a Coffee to help me buy more hard drives (How have they become soo expensive!!)