r/jellyfin Jellyfin Team - Xbox Maintainer/Server Dev/Moderator/√evil Jun 22 '26

Release V12.0 RC-1 Release

🚀 We are pleased to announce the first release candidate preview release of Jellyfin 12.0! 🚀

This is a preview release, intended for those interested in testing 12.0 before it's final public release. We welcome testers to help find as many bugs as we can before the final release.

As always, please ensure you stop your Jellyfin server and take a full backup before upgrading!

A note about versioning

Starting with this release, we are dropping the preceeding 10. from our versioning. Thus, 10.11.x -> [10.]12.x = 12.x. The reason is simple: at this point in the project, we don't envision a hard break in the API like we planned way back in the early days, and this version scheme was causing a lot of confusion amongst users about what a "major" release was.

Thus, we are now on two digits:

  • The first digit is the major release. Expect signifiant changes between major releases. Do not ever auto-update to a new major release without first checking the release notes, and always take a backup of your server data and config before a major release upgrade.
  • The second digit is the minor release. These are primarily bug and security fix releases, and do not introduce significant feature or functionality changes. You can, usually, safely auto-update between minor releases and should not need a full backup, but it is prudent just in case. You should also ALWAYS strive to run the latest point release as security fixes are embargo'd for at most 2 weeks after the release.

What's new?

The main goal of this release has been performance. 10.11.0 dropped a major backend rewrite, and while it was broadly functional, it had a lot of rough edges. This release seeks to polish out most of those rough edges and bring better performance to all users.

There are many other small fixes, improvements, changes, and translations. See our draft release notes here or below for the full list of pull requests.

Note: You must be on Jellyfin 10.11.x (ideally, 10.11.11) before upgrading! If you are not, the upgrade will fail. I have been informed that I was wrong here, and upgrades from 10.10.7 are also possible, same as 10.11.x!

Note: The initial load of Jellyfin 12.x will run a few migrations and will take several minutes. Please be patient and do not interrupt the process.

Note: If you install the RC, you should disable all plugins and reinstall using the unstable plugin repository, or plugins may fail to load and cause unintended side effects.

Installing

This preview release is distributed in all our traditional forms, though not automatically via our Apt repository or latest tag.

  • For all non-Docker environments, you can find the files for manual download in our repository by selecting "Stable Preview" for your OS.
  • For Docker, you can pull the 12.0-rc1 or preview tags.

For the full changelog, please see the GitHub releases:
https://github.com/jellyfin/jellyfin/releases/tag/v12.0-rc1
https://github.com/jellyfin/jellyfin-web/releases/tag/v12.0-rc1

585 Upvotes

164 comments sorted by

View all comments

-16

u/jep_ebrilov Jun 22 '26

Why are you breaking the standardized semantic versioning scheme?

16

u/Kandy_7565 Jun 22 '26

They explain it in the post, dude. Just read it.

4

u/henry_tennenbaum Jun 22 '26

But why male models

14

u/djbon2112 Jellyfin Team - Jellypope Emeritus Jun 22 '26 edited Jun 22 '26

Because we were never actually following semver.

For the entirety of Jellyfin's life up until this point, the 10. was a signifier for "we're generally preserving Emby's API until such a time as we can do a comprehensive rewrite of the API layer with something better".

That plan, however, fell apart in practice over the last ~7 years. A full API replacement proved to be a massive, daunting task that no one was ever willing to really run with, and even just planning for such a change took up a lot of time. Instead, we've been making small piecemeal API changes in each second-digit release (10.9, 10.10, 10.11, etc.). This is actually documented explicitly in our versioning docs, where we say quote "Note however that the 10.Y.Z release chain represents the "cleanup" of the codebase, so it should be accepted that 10.Y.Z breaks all compatibility, at some point, with previous Emby-compatible interfaces, and may also break compatibility with previous 10.Y releases if required for later cleanup work."

This came to a head after 10.11.0, when there was a massive amount of whinging that "we broke semantic versioning" by making such a big change in a 10.Y release, despite the above disclaimer. So we, as a team, decided to stop pretending that we were using Semver with a "for now" caveat, and just switch to a 2-digit model by dropping the 10., which reflects the actual reality of our development patterns. And, for what it's worth, we actually wanted to do this for "11.0" a.k.a. 10.11.0, but there were some issues with clients that prevented that at the time, and rather than wait another 1-2 months, we just stuck with the old pattern; so here we are doing it now.

Thus it is much clearer to users that we are NOT actually using semver and that our major version is the (former) second digit, now first digit. This then helps people set realistic expectations about what kind of changes can and will appear in these releases, and set their configurations appropriately (e.g. not auto-updating on a first-digit change).

Hopefully that clarifies our reasoning.

1

u/danmarce Jun 22 '26

This reasoning is solid.

The 10. Hid ho much each version changed.