Skip to content
HN On Hacker News ↗

Jellyfin 12.0

▲ 623 points 355 comments by 0xC0ncord 2w ago HN discussion ↗

Pangram verdict · v3.3

We believe that this text is a mix of AI and human-written content.

60 %

AI likelihood · overall

Mixed
38% human-written 62% AI-generated
SEGMENTS · HUMAN 2 of 8
SEGMENTS · AI 2 of 8
WORD COUNT 1,476
PEAK AI % 80% · §7
Analyzed
Sep 8
backend: pangram/v3.3
Segments scanned
8 windows
avg 185 words each
Distribution
38 / 62%
human / AI fraction
Verdict
Mixed
Pangram v3.3

Article text · 1,476 words · 8 segments analyzed

Human AI-generated
§1 Mixed · 57%

We are pleased to bring you Jellyfin 12.0, our new stable release. This release continues in the same direction as 10.11: finishing what the database conversion started, turning that new foundation into real performance work, and finally giving books and comics the support they have deserved for years.

§2 Human · 21%

If you just want a quick summary of what you need to know to get your system upgraded and running, please read on to the "TL; DR" section just below, or keep reading for a full explanation of all the major features and improvements in Jellyfin 12.0! You can also view full changelogs on the server and web GitHub releases. - Cody TL; DR infoIT IS VERY IMPORTANT THAT YOU READ THIS SECTION BEFORE UPGRADING TO JELLYFIN 12.0! Failure to do so may cause issues!

§3 Mixed · 68%

Always feel free to ask for help in our chat if you are unclear or run into trouble.This release changes the database schema and actively rewrites data on first boot, so a backup is the only way back to your previous version. As always for major upgrades, ensure you STOP Jellyfin and take a FULL MANUAL BACKUP OF YOUR DATA AND CONFIG DIRECTORIES before upgrading! You must be running Jellyfin 10.10.7 or any 10.11.x release before upgrading to 12.0. Upgrading directly from 10.11.x is fully supported and no intermediate step is needed. If you are on anything older than 10.10.7, upgrade to 10.10.7 first, then upgrade to 12.0. Check your usernames before upgrading. Usernames are now case insensitive, so two accounts can't have names that only differ by capitalization. If you have users that match this pattern the database migration will fail. A full library scan is REQUIRED after upgrading. As part of fixing how alternate versions are stored, versions that Jellyfin grouped automatically, not ones you merged yourself, are cleared during the upgrade. Until you run the scan those versions will look like they are missing. The first scan after upgrading will take significantly longer than normal, and some movies may appear as newly added. This is expected. Jellyfin now checks every item in your library against the files on disk to clear out leftovers from previous versions, and anything that was previously filed incorrectly gets corrected as it goes.

§4 Mixed · 47%

Do not stop the server while migrations are running. Once installed, please ensure you hard refresh (e.g. Ctrl+Shift+R or similar) and/or clear your web cache for your Jellyfin instance if you notice any UX anomalies. Bad cached assets are the #1 cause of such issues. Remove any third-party plugins before upgrading. Plugins built for 10.11 will not load on 12.0 and need updated builds from their authors, so give them time to catch up before adding them back. Official plugins have been updated for 12.0 support. Very old third-party clients will stop working. Support for the legacy /emby/ and /mediabrowser/ addresses has been removed, and the deprecated way of signing in is now disabled, including on existing servers.

§5 AI · 71%

Clients that have not seen an update in years are the ones at risk here. This release contains security fixes, so we recommend upgrading rather than staying on an older release once you are ready. As always with major Jellyfin releases, bugs will exist.

§6 Human · 28%

Please prefix bug reports with "[12.0]" so we can triage them quickly, and see point 1 one more time: take a backup. And now on to the cool new features! Why 12.0? The most visible change in this release is the one in its name: we are dropping the major version "10" from our naming scheme. What would have been 10.12.0 is simply 12.0, and the server reports its version as 12.0.0. 10.11.x was the last release branch to use the old scheme. The reason is the feedback we got after 10.11.0, which we first raised in January and confirmed in May. A release like 10.11.0 was, by any reasonable measure, a major release - it rewrote the library database - but the version number presented it as a minor update, and people upgraded with expectations to match.

§7 AI · 80%

The leading 10. never changed and never told anyone anything, so all it did was push the number that actually mattered into the middle position and make "major" releases look minor. Dropping it means the first number moves when the release is big. If you maintain anything that parses Jellyfin version strings - a client, a monitoring check, a deployment script, a container tag pin - this is the item to look at before upgrading. Tuning the new database Jellyfin 10.11.0 finished rebuilding how the library database works, which opened the door for the performance work in this release. We aren't finished, but you should notice a big difference when browsing. One of the largest changes is how playlists and collections are stored. Before, everything in a playlist was kept as one big list inside the playlist itself, and the database couldn't look into that list. Anything we needed to know meant loading the whole playlist and unpacking it first. Getting the item count, working out how much you've watched, or showing a single page all cost the same as loading the entire thing. Editing was the same story, because adding or removing one item meant writing the whole list back out. Every item in a playlist is now its own row. The database can count rows, return one page, and add or remove a single item without touching the rest, so this should be a big improvement on large playlists. Collections and boxsets were stored the same way and get the same fix. Alongside that: Deleting a large number of items at once no longer fails partway through. Continue Watching, Next Up, rewatching, Latest Media for music, artist lookups, and the watched counts on folders should be faster. Heavy database maintenance no longer runs during a library scan, so the two stop competing for the same resources. Most of this shows up as pages that used to freeze no longer freezing. One thing to note is that this work went into how Jellyfin reads your library, not into the library scanner. You may find the scanner is a little quicker as a side effect, but speeding it up was not a goal this time around. What runs on first boot As usual, a new release of Jellyfin comes with multiple database migrations. These migrations will take a while to complete depending on the size of your library and how much bad data has been accumulated. If you would rather run that step deliberately than have it happen on first start the server now accepts --mode MigrateSystem, which performs the upgrade and exits without starting the rest of Jellyfin. Multiple versions for episodes Alternate versions have been a movies-only feature since they were introduced. In 12.0 they work for episodes as well, so a series with a broadcast cut and an extended cut, or a 1080p and a 4K copy of the same episode, can be grouped the way movies always could. This includes resume data that follows the version you were actually watching. This is also the feature behind the required post-upgrade scan: making versions work correctly for episodes meant fixing how version links are stored, and automatically resolved versions have to be rebuilt from the files on disk. Books and comics, properly this time Books have often taken a backseat in favor of video playback in Jellyfin, and this release is the start of an effort to change that. Most of what the Bookshelf plugin used to do now has been moved to the server itself. On the server: Book metadata is read directly from OPF and ComicInfo files, or from ComicBookInfo comments, with no plugin required. Posters are generated for EPUBs and every supported comic archive format, and external covers work for audiobook files. Name, index, year, and series are read from book filenames, and volume and chapter numbers are picked up from comic filenames when they are there. Page counts are extracted from comic archives and PDFs.

§8 Mixed · 31%

Chapters are extracted from audiobooks. Bookshelf has been split into separate GoogleBooks and ComicVine providers, and a new OpenLibrary plugin provides metadata and images. ISBN external IDs and links are supported. In the web client: There is a Modern book library layout with view types and paging, plus Authors, Collections, and Folders tabs. Books show information about their authors, and authors show their books and audiobooks. The reading interface has been redesigned and standardized across all book types, with unified fullscreen behavior and swipe navigation for PDFs. Progress indicators work again for supported eBooks, sorting by index number and release date is available, and font size selection for EPUBs has been improved. Background audiobook playback works on iOS devices. noteThe Bookshelf plugin has been deprecated. Its features have been merged into the server or extracted into the ComicVine and GoogleBooks providers.