🚀 Jellyfin Server 12.0 RC1
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.
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.
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-rc1orpreviewtags.
What's Changed (since v10.11.x)
- Update CODEOWNERS to capture bump_version by @joshuaboniface in #7263
- Add css variable support for dark theme by @thornbill in #7277
- Refactor dark theme to base theme by @thornbill in #7343
- Hide empty message box if there isn't text by @viown in #6151
- Migrate dashboard user pages to use TS SDK by @viown in #7089
- Refactor light theme to use base theme by @thornbill in #7347
- Fix base theme icon color by @thornbill in #7386
- Add delay setting for photo slideshow by @nesnass in #7038
- Pass the new player to nextTrack to allow mixed playlist playback by @kevgrig in #5488
- Add HEVC level 6.2 (186) device capability check by @imtsuki in #6376
- Remove usages of deprecated framerate properties by @thornbill in #7395
- Add support for custom links in the experimental layout by @thornbill in #7394
- Use experimental layout by default by @thornbill in #7393
- Use enum for item actions by @thornbill in #7389
- Remove unused network share references by @thornbill in #7342
- Use consistent padding on item details screen by @thornbill in #7279
- Refactor themes structure by @thornbill in #7382
- Use sdk for item download url by @thornbill in #7412
- Remove dead itemsrefresher class by @thornbill in #7420
- Add support for scanning tartgeted paths with lint npm script by @tylers-username in #7436
- Tizen: Enable direct-play of anamorphic videos by @kinke in #7321
- Fix item grid inconsistencies by @thornbill in #7435
- Upgrade to NPM 11 and Node 24 active LTS by @larouxn in #7282
- Fix
.nvrmcto.nvmrctypo in PR GitHub workflow by @larouxn in #7522 - Fix jellyfin sdk type errors by @PeachesMLG in #7491
- Add missing Rewind & FastForward PlayState commands handling by @HamletDuFromage in #7527
- Remove unused AudioPodcast item type by @dfederm in #7532
- Remove reference to non-existing Recording media type by @dfederm in #7533
- Remove unused showFindNew export from itemidentifier.js by @dfederm in #7537
- Remove getData() and importFrom() dead code from userSettings.js by @dfederm in #7536
- Add max value to streaming bitrate textfield by @haleyburns in #7519
- Add video title to experimental layout by @viown in #7530
- Clarify Playlist and Collections delete prompt by @dfederm in #7534
- Remove old irrelevant comment about 'LabelSyncPlayTimeOffset' by @dfederm in #7535
- Add
caniuse-liteas dev dependency to keep it updated and update it by @larouxn in #7474 - Mitigate pull_request_target privilege escalation by @andrewrabert in #7616
- Add code assistance section to pull request template by @viown in #7619
- fix book player fullscreen on mobile apps by @dkanada in #7399
- Add playlist button and sort options to Playlists tab in experimental layout by @theguymadmax in #7538
- loosen anamorphic restrictions for browser device profiles by @meop in #7520
- Fix dashboard buttons overflow by @thornbill in #7648
- Stop using native scrollTo for smooth scrolling by @larsmunkholm in #7606
- move broken actions to workflow_run event by @dkanada in #7684
- Fix react cards showing default background when loading by @thornbill in #7674
- Hide home loading indicator optimistically by @thornbill in #7678
- Fix react card text missing keys by @thornbill in #7675
- define secrets for nested workflows by @dkanada in #7688
- Add error handling to rest of dashboard pages by @viown in #7223
- Migrate networking page to React by @viown in #7502
- add debug logging to PR step in workflow by @dkanada in #7690
- use pr list subcommand for pull request search by @dkanada in #7691
- Fix login loop by @Crashdummyy in #7685
- Add a Reset Filters button to bottom of filter dropdown by @1hitsong in #7130
- remove merge group events from main workflow by @dkanada in #7692
- Add watch feature to log viewer by @viown in #7268
- improve author and book support on itemDetails page by @dkanada in #7656
- Bump axios from 1.12.2 to 1.13.5 by @dependabot[bot] in #7578
- Fix password input type for CertificatePassword by @DatScreamer in #7696
- Use getBackupApi util from SDK by @thornbill in #7729
- Remove var mixin by @thornbill in #7647
- Cleanup typescript types by @thornbill in #7673
- Fix active library highlighting for items by @thornbill in #7644
- Extract getCardImageUrl and remove duplicate hook by @thornbill in #7676
- initial sections for book library view by @dkanada in #7354
- Fix multiselect panel styles by @thornbill in #7730
- Add display version util for 12.0 by @thornbill in #7677
- Fix sass if syntax by @thornbill in #7731
- Move users edit page to tabs by @viown in #7497
- Move card utils to utils directory by @thornbill in #7733
- Update Music Videos views in experimental layout by @theguymadmax in #7567
- Replace the buildin xbox limit it with a native shell option by @JPVenson in #7670
- Add default tab options for Home Videos and Photos library by @theguymadmax in #7557
- Add contributing guide and pr checklist by @thornbill in #7693
- Bump picomatch by @dependabot[bot] in #7762
- Add a gap to stack elements to prevent numbers from other adjacent stack to collapse and appear as one by @uxdesignerhector in #7419
- Add a folder view to the modern home videos library layout by @theguymadmax in #7741
- Fix CF pages deployment directory by @thornbill in #7784
- Fix react keys on item details metadata by @thornbill in #7785
- Fix theming for reactUtils component rendering by @thornbill in #7788
- Refactor wmc theme to use base theme by @thornbill in #7789
- Refactor blueradiance theme to use base theme by @thornbill in #7790
- Add explicit dependency on axios by @thornbill in #7797
- Bump lodash from 4.17.21 to 4.18.1 by @dependabot[bot] in #7793
- Compact the "playback info" overlay to add more infos by @nyanmisaka in #7291
- Enable AV1 fMP4 stream copy on TV clients by @nyanmisaka in #7802
- Add device id to StorageListItem by @thornbill in #7756
- add audiobooks back to book libraries by @dkanada in #7816
- Fix chromium browsers not cleaning up backdrops by @thornbill in #7738
- Cleanup removed api members by @thornbill in #7839
- SyncPlay menu update by @thornbill in #7643
- Add folders tab to experimental view in book libraries by @dkanada in #7822
- Fix backdrop size changing on mobile by @thornbill in #7849
- Fix clock icon alignment on scheduled tasks page by @TarasSmal in #7841
- Handle Seasons in recently added by @Shadowghost in #7623
- Add frame scrubbing controls by @flying-sheep in #7315
- Refactor user hooks to simplify usage by @thornbill in #7875
- Fix drawer display version by @thornbill in #7884
- Bump web version to 12.0.0 by @thornbill in #7885
- filter music artists from person results by @dkanada in #7882
- Disable sonarjs/aws-restricted-ip-admin-access lint rule by @terite in #7847
- Fix books not displaying in genre lists by @theguymadmax in #7911
- Fix blurry card images on high-DPI displays by @Maxr1998 in #7879
- Update sort options, default tab, and landing screen options for music videos by @theguymadmax in #7805
- Update Collections & Playlists library view for the modern layout by @theguymadmax in #7808
- Display music video title correctly if it belongs to an album by @hazemkrimi in #6819
- Fix keyboard controls working only on latin keyboard layouts by @MBR-0001 in #7398
- Fix duplicate locations by @Collin-Swish in #7469
- Update Mixed Media library view for the modern layout by @theguymadmax in #7821
- Fix genres not showing for collections and playlists by @theguymadmax in #7807
- Use innerHTML instead of replaceChildren to empty div by @mrxz in #7907
- Fix case sensitivity in library folder checks by @thornbill in #7914
- Move bitrate detection to web by @viown in #7864
- Bump axios from 1.13.6 to 1.16.0 by @dependabot[bot] in #7888
- Add translation for VideoRotationNotSupported by @nyanmisaka in #7894
- Use tanstack query for user settings by @thornbill in #7890
- Fix homescreen settings for mixed libraries by @theguymadmax in #7916
- Make library header sticky by @thornbill in #7836
- Use tanstack query for home screen sections by @thornbill in #7918
- show progress indicator for books by @dkanada in #7921
- add authors tab to book library by @dkanada in #7874
- Implemented sorting and filtering for Activity page by @bjorntp in #7431
- Fix behavior when applying filters and switching pages by @Shadowghost in #7820
- Fix keyboard in old browsers by @dmitrylyzo in #7917
- Add warning to backup operation if scan is running by @viown in #7923
- Add similarity provider configuration by @Shadowghost in #7663
- Fix xss in checkbox element by @thornbill in #7942
- Fix user view nav overflow logic by @thornbill in #7943
- Encode auth params when creating ApiClients by @thornbill in #7947
- Add collections tab for book libraries by @dkanada in #7946
- Start a library scan when adding folders to a library by @Shadowghost in #7952
- fix cardImage data-src set to "undefined" by @edvwib in #7929
- Add Collections and playlist tab to all libraries by @Shadowghost in #7939
- Add polish to library toolbar and menus design by @thornbill in #7927
- Reload item data on version change and use correct parts on playback by @Shadowghost in #7919
- Reload scroller on data receive by @Shadowghost in #7954
- Add OriginalLanguage as option to PreferredAudioLanguage by @Lampan-git in #6022
- Fix layout mode for library routing by @theguymadmax in #7951
- Replace ElevationScroll with OffsetAppBar by @thornbill in #7965
- Fix alphapicker alignment on desktop by @thornbill in #7964
- Fix backdrop in music queue by @me25542 in #7897
- Migrate WebSockets to SDK Subscriptions by @anultravioletaurora in #7838
- Disable touch switcher on experimental and disable scroll buttons on touch devices by @Shadowghost in #7971
- Studios tab extension by @Shadowghost in #7940
- Fix image upload spinner on failure by @darbyjack in #7949
- Implement studio search by @Shadowghost in #7970
- Support DOVI in mkv container on WebOS 25 and newer by @ErebZx in #7328
- Fix OSD animation event hiding header after leaving the video player by @brad1111 in #7968
- Fix navigation with game controllers by @MBR-0001 in #7975
- Fix slideshow interval not saving by @theguymadmax in #7983
- Use String.raw to avoid escaping backslashes in eslint config by @Mayme123 in #7866
- Remove repository prefix for pages deployment on push workflow by @nielsvanvelzen in #7978
- Fix broken layout on table pages by @thornbill in #7990
- Only show Play All button when items are present by @theguymadmax in #7988
- Add Play All and Shuffle buttons to series library by @theguymadmax in #7989
- Hide Group Versions for unsupported item types by @theguymadmax in #7999
- migrate book OSD to react component by @dkanada in #7848
- Fix Multiselect not working in collections by @austinhardaway in #7925
- Add still watching prompt by @thornbill in #7979
- When deleting a single item, include the name of the item in the confirmation message by @joshuaobrien in #7697
- Refactor library pages by @thornbill in #7998
- Fix playback issues in the home videos and photos library videos tab by @theguymadmax in #7986
- Fix blurhash and faster animation settings in new layout by @nyanmisaka in #8014
- Hold and drag on media no longer activates Multi-select by @bjorntp in #7732
- Merge library toolbar into main AppBar by @thornbill in #8030
- Fix Add to collection permissions by @theguymadmax in #8036
- Respect DisplayMissingEpisodes setting in item details pages by @lmaotrigine in #7810
- Add audiobooks to the authors tab by @theguymadmax in #8034
- Fix New Collection button permissions by @theguymadmax in #8037
- Always round up for card image sizes by @enter-a-random-username in #8022
- Add query caching to indexeddb by @thornbill in #7679
- Prevent invalid paths from being added to the list of folder paths by @theguymadmax in #8048
- Make Played and Unplayed filters mutually exclusive for the Modern view by @theguymadmax in #8002
- Fix errors on view change with pending requests by @thornbill in #8055
- Use plugin provided icon if available by @Shadowghost in #8053
- Adjust the section header link limit by @theguymadmax in #8019
- Remove pagination controls if user disabled by @thornbill in #8059
- Add Screensaver Time to Experimental layout by @dmitrylyzo in #8052
- Hide studios filter when empty by @theguymadmax in #8058
- Fix wrong settings applied on view change by @thornbill in #8062
- Disable play all and shuffle buttons instead of hiding by @thornbill in #8056
- Fix Duplicated
/socketConnections by @anultravioletaurora in #8011 - Add TV Shows creators to item details by @Rant423 in #8042
- Allow folders to be marked as played by @theguymadmax in #8063
New Contributors
- @nesnass made their first contribution in #7038
- @imtsuki made their first contribution in #6376
- @tylers-username made their first contribution in #7436
- @larouxn made their first contribution in #7282
- @HamletDuFromage made their first contribution in #7527
- @dfederm made their first contribution in #7532
- @haleyburns made their first contribution in #7519
- @meop made their first contribution in #7520
- @larsmunkholm made their first contribution in #7606
- @Crashdummyy made their first contribution in #7685
- @1hitsong made their first contribution in #7130
- @DatScreamer made their first contribution in #7696
- @uxdesignerhector made their first contribution in #7419
- @TarasSmal made their first contribution in #7841
- @flying-sheep made their first contribution in #7315
- @hazemkrimi made their first contribution in #6819
- @mrxz made their first contribution in #7907
- @Lampan-git made their first contribution in #6022
- @me25542 made their first contribution in #7897
- @anultravioletaurora made their first contribution in #7838
- @darbyjack made their first contribution in #7949
- @ErebZx made their first contribution in #7328
- @Mayme123 made their first contribution in #7866
- @austinhardaway made their first contribution in #7925
- @joshuaobrien made their first contribution in #7697
- @Rant423 made their first contribution in #8042
Full Changelog: v10.11.11...v12.0-rc1