After months of work, here comes another behemoth of a release, this time with over 30 major improvements and tons of fixes.
At more than 500 pull requests merged between the server and the web client, Jellyfin 10.6.0 brings an incredible number of new features, improvements and bug fixes. It's a huge release and we have a lot to cover, so let's get to it!
Other services have recently launched various ways to view your content together with friends. With the current global situation, it makes a lot of sense, and Jellyfin isn't lagging behind.
We're proud to announce Jellyfin 10.6's headline feature: SyncPlay.
SyncPlay allows you to create rooms that other users or clients can join in order to share a common viewing experience. There is no limit on the number of users in a room and you are free to join the same room with the same user from multiple clients as well.
Thanks to first-time contributor OancaAndrei, who submitted pull requests to both the server and the web client (jf#2733, jf-web#1011) in order to lay out the foundations for this, you can now watch movies together with friends and family, from the comfort of your respective homes.
The feature is expected to be improved in future versions of Jellyfin, but has already been used by multiple users during the development cycle, with a delay between clients of only a couple of milliseconds.
It's been on our plate for a while, but thanks to new team member barronpm, we can finally say that the rewrite of our database model is progressing at a steady pace!
Previously, Jellyfin used a combination of SQLite databases (yes, multiple ones), XML files and C# spaghetti to perform database operations. Information was split in multiple places, sometimes even duplicated and generally filtered in C# instead of using the database engine's faster processing.
While there is still a ways to go, EF Core should bring faster database queries, support for multiple database engines, cleaner code, and significantly reduced memory usage. Currently, there is still a bridge to make the link between the new EF Core databases and the existing code, which will be cleaned up down the line.
Part of the improved memory usage is due to our current inherited custom ORM caching everything in memory to make up for its slowness. For large databases, this could result in hundreds of megabytes of memory lost to caching. With EF Core, however, we leave the heavy lifting to the database engine, leading to better response times and less memory usage overall.
Your databases will be automatically migrated when you first launch Jellyfin 10.6. While the migration process has been well tested over the past few months, issues may arise during the migration process. To prevent any data loss, please backup your existing data files before starting the migration process.
Among the benefits of this move to Gulp for building the client, we have started moving away from RequireJS and towards using standard EcmaScript Modules, thanks to Camc314, cromefire, Delgan, dkanada, grafixeyehero, MrTimscampi, and sarab97.
This massive change, once it is complete, will allow us to simplify the web client build process, which will in turn allow us to start our migration to Vue and significantly clean up our code. This should also bring some noticeable performance improvements to the web client down the line, as we tackle technical debt and remove deprecated practices and libraries from the code.
Our resident C# performance wizard, Bond-009 continues his quest to rid the server source of warnings and generally improve server performance, fixing multiple bugs in the process.
Team member nyanmisaka, with some help from artiume, brings a number of improvements to transcoding (jf#2809, jf-web#1046, jf#2821, jf#2715), with format toggles, options for toggling transcoding for HEVC and 10-bit VP9 videos off for older GPUs, providing support for the VP8/VP9 QSV and NVDEC decoders in FFmpeg 4.3, better support for UTF-16 subtitles and a host of other improvements.
Further changes to the server include fixes for collection metadata issues (jf#3117), improvements to the metadata providers (jf#3071, jf#3056, jf#3289), and more core providers moved to plugins (jf#3208).
Itegulov and dkanada have improved support for ebooks by adding an EPUB reader based on epub.js (jf-web#1263). Reader support for more formats is in progress for future versions, including CBZ/CBR and PDF.
As we used the new 10.5 details screen over the last few months, we noticed some improvements we could make to the experience. Team member MrTimscampi, along with input from the rest of the web team and some of our users, did a second pass on that screen (jf-web#949, jf-web#1206), tightening the design and cleaning some visual issues along the way. Delgan put in the final touches to the page by avoiding a jump in the content when rendering the track selectors on the page (jf-web#1406)
Team member ferferga and contributor samuel9554 have been working on redesigning our music experience. For 10.6, they overhauled our mobile music player interface and made significant changes to the mini player and the remote player UI (jf-web#1056, jf-web#1430).
MrTimscampi also reworked the image loading system (jf-web#1065), fixing some visual issues and improving memory usage by unloading out of view images. Along with this improvement, ferferga, GranPC, JustAMan and Bond-009 have implemented Blurhash placeholder support on both the server and the web client, which brings further visual refinement to the user interface.
JustAMan went back over our new SSA/ASS subtitle rendering system and significantly improved performance for subtitles with heavy effects (jf-web#1144, jf-web#1095, jf-web#1048, jf-web#1005). While we still consider the feature experimental, it should now be able to render most subtitles accurately and with correct performance.
Other improvements to the web client include a rewritten image viewer (jf-web#967), a configuration option for the number of items per page in libraries (jf-web#983), a toggle for the nightly version of the Chromecast client (jf-web#1242), and support for multiple plugin repositories (jf-web#1393, jf#3244).
With the increased amount of activity on the project, we would like to give a signal boost to some ways to support the people working daily on Jellyfin.
We want to stress that, while some of our contributors individually accept financial donations, Jellyfin and its features will never be hidden behind a paywall. Supporting the developers financially is entirely voluntary and won't give you any exclusive access to features or support, nor will it change the priority of your feature requests or issues.
As an final note, we would like to thank all the contributors who worked on making Jellyfin 10.6 a reality: