Skip to content

Commit

Permalink
Merge branch 'hwsel-cleanup' of https://github.com/felix920506/jellyf…
Browse files Browse the repository at this point in the history
…in.org into hwsel-cleanup
  • Loading branch information
felix920506 committed Jul 23, 2024
2 parents 026c97e + 31ab2a3 commit c1fcf3f
Show file tree
Hide file tree
Showing 39 changed files with 1,512 additions and 1,995 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ jobs:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: 20
- uses: actions/configure-pages@983d7736d9b0ae728b81ab479565c72886d7745b # v5.0.0
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ jobs:

steps:
- name: Check out Git repository
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7

- name: Set up Node.js
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: 20
check-latest: true
Expand All @@ -33,7 +33,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out Git repository
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Set up problem matcher
uses: xt0rted/markdownlint-problem-matcher@1a5fabfb577370cfdf5af944d418e4be3ea06f27 # v3.0.0
- name: Run markdownlint
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ jobs:

steps:
- name: Check out Git repository
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7

- name: Set up Node.js
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: 20
check-latest: true
Expand Down
22 changes: 14 additions & 8 deletions blog/2024/03-25-testing-10.9.0/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,21 @@ First, a quick rundown on what's different from our previous releases. The last

So, in effect, our weekly unstable builds are now working double-duty as our beta/release candidate versions. Here's how they map over the coming weeks:

* `20240325`: The first "beta". Feature freeze has begun.
* `20240401`: The second "beta". One week of freeze.
* `20240408`: The third "beta". Two weeks of freeze, and we hope to have most glaring bugs fixed by this point.
* `20240415`: The first "release candidate". We hope that by this point everything is in good shape for a release, with only a few lingering bugs.
* `20240422`: The second and, ideally, final "release candidate".
* `10.9.0`: The actual release, during the weekend of April 26th-28th.
- `20240325`: The first "beta". Feature freeze has begun.
- `20240401`: The second "beta". One week of freeze.
- `20240408`: The third "beta". Two weeks of freeze, and we hope to have most glaring bugs fixed by this point.
- `20240415`: The first "release candidate". We hope that by this point everything is in good shape for a release, with only a few lingering bugs.
- `20240422`: The second and, ideally, final "release candidate".
- `10.9.0`: The actual release, during the weekend of April 26th-28th.

All of this, of course, assumes a smooth window, we we are fairly hopeful of, but any number of things could throw a wrench in this plan, so we are continuing to play things by ear and see how each week turns out.

:::info

**Update (2024-05-04):** Due to some critical issues, we've decided to delay the release of 10.9.0 to ensure everything is working properly on release.

:::

## How You Can Test

Testing this release should be very easy, in a way that our previous releases weren't. Since our pre-releases are "just" our unstable releases here, that means that following our normal "unstable" install process is all you need to do.
Expand All @@ -44,7 +50,7 @@ Next, before installing an unstable release, ensure that you **back up your exis

Next, if you use plugins, install the unstable plugin repository. Due to compatibility issues, we distribute plugins for unstable in a separate manifest, so this must be added manually, and on first start all incompatible plugins (i.e. all existing plugins on an upgrade) will be upgraded. To add the repository, navigate to the Administration Dashboard, Advanced, Plugins, then click the Repositories tab at the top. Click the "+" Add button, and enter "Unstable" for the name and "https://repo.jellyfin.org/files/plugin-unstable/manifest.json" for the Repository URL. We also recommend that you disable/remove the Stable repository at this time, as it's possible they will conflict, and under 10.9.0 the repository URL will change. After the initial update you may need to manually restart your Jellyfin instance one further time to ensure all plugins are activated properly.

Finally, install the unstable version and run it. The upgrade should happen seamlessly in the background, and you'll be able to log in to your Jellyfin instance normally after this point. Ensure you perform a *hard* refresh in your browser, and restart all clients.
Finally, install the unstable version and run it. The upgrade should happen seamlessly in the background, and you'll be able to log in to your Jellyfin instance normally after this point. Ensure you perform a _hard_ refresh in your browser, and restart all clients.

Once 10.9.0 is fully released, you can switch back easily by reinstalling the new stable version, and changing back to the stable plugin manifest (URL "https://repo.jellyfin.org/files/plugin/manifest.json").

Expand All @@ -66,6 +72,6 @@ At this point, with our feature freeze our APIs should be stable, though do plea

## Information for Contributors

If you're contributing to Jellyfin and your existing feature PRs have not yet been merged, please don't fret. 10.9.0 was an abnormally long release cycle and something we do not wish to repeat, so your changes *will* get in soon for 10.10.0, which we expect to happen in about 6 months at most.
If you're contributing to Jellyfin and your existing feature PRs have not yet been merged, please don't fret. 10.9.0 was an abnormally long release cycle and something we do not wish to repeat, so your changes _will_ get in soon for 10.10.0, which we expect to happen in about 6 months at most.

If you wish to help by submitting a bugfix, please do so as soon as you can, as we'd like to get as many fixes in and tested within the next ~3 weeks as possible, to give at least 2 weeks of final testing before the release. Ensure you clearly specify that it is a bugfix, and ensure you keep your changes to an absolute minimum needed to fix the bug. Bugfix PRs will target the `master` branch until the final release at which point they will target the `release-10.9.z` branch for upcoming point releases.
141 changes: 141 additions & 0 deletions blog/2024/05-11-jellyfin-release-10.9.0/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
---
title: Jellyfin 10.9.0
description: We are pleased to announce the latest stable release of Jellyfin, version 10.9.0!
authors: joshuaboniface
slug: jellyfin-release-10.9.0
tags: [release]
---

We are pleased to announce the latest stable release of Jellyfin, version 10.9.0!

This major release brings many new features, improvements, and bugfixes to improve your Jellyfin experience.

You may upgrade your Jellyfin instances at any time now, however please read on for a complete detailing of what's new and changed, including some very important release notes. For those who were running Unstable builds for testing, we thank you immensely, and you may now switch back to the Stable repository and forcibly reinstall/repull the latest version.

Happy watching!

\- Joshua

{/* truncate */}

## Key Release Notes/Breaking Changes

There are several key changes with 10.9.0 that administrative users should be aware of, before getting into the more specific changes.

* As always, **ensure you back up your Jellyfin data and configuration directories before upgrading**. With a major release, it's possible you will hit a bug and want to revert, and to do so, you will need to restore from a backup.

* Ubuntu users: We have dropped support for non-LTS Ubuntu releases with 10.9.0. That is, we have not built 10.9.0 packages for any releases except 20.04 LTS, 22.04 LTS, and 24.04 LTS, and we will not publish builds for any new non-LTS releases going forward. For an explanation of why, please see [our previous blog post](https://jellyfin.org/posts/new-ci-new-repo). If you use another release, please upgrade to 24.04 LTS or switch to the Docker container.

* Fedora/CentOS/RHEL/etc. users: We have dropped our official RPM packages and suggest switching to [the 3rd-party RPMFusion repository](https://admin.rpmfusion.org/pkgdb/package/free/jellyfin/) or the Docker container. Support for RHEL-like distributions has been a major pain point for us for a very long time, and we feel that letting the community over at RPMFusion handle this is in our best interest going forward, similar to how Arch, Gentoo, etc. packages are handled. For more details, please see [our previous blog post](https://jellyfin.org/posts/new-ci-new-repo).

* Docker users: We now offer GitHub Container Registry (GHCR) as an alternative container registry in addition to Docker Hub. You can pull images from the new registry via URIs like `ghcr.io/jellyfin/jellyfin:latest`. Don't worry, we have no plans to drop Docker Hub as a container registry, but we feel providing both gives users more choice and flexibility.

* Docker users: If you encounter problems loading your homepage, you may need to remove the `DOTNET_SYSTEM_GLOBALIZATION_INVARIANT` environment variable from your container, as this is no longer valid in Jellyfin 10.9.0. For more details [please see](https://github.com/jellyfin/jellyfin/issues/11533) [these issues](https://github.com/jellyfin/jellyfin/issues/11528).

* Nginx reverse proxy users: If you have a block in your nginx config that begins with `location ~ ^/web/$ {` and the comment `# location block for /web - This is purely for aesthetics [...]`, please remove that block as it will cause [occasional issues with 404's and/or slow performance](https://github.com/jellyfin/jellyfin/issues/11540) on 10.9.z.

## The Big Changes

This release has been over two years in the making, so we're really glad to finally get it out to you. The long cycle does mean quite an extensive changelog however, with well over 1100 pull requests merged into our `master` branch since 10.8.0 first dropped back in 2022. This section will detail all the big changes, broken up by general function and area of the system. In addition to these big items, there are hundreds of smaller bugfixes, quality-of-life tweaks, and other minor changes that we won't touch on here, but if you want to see the full list, you can do so over on the GitHub releases for [the core server](https://github.com/jellyfin/jellyfin/releases/tag/v10.9.0) and [the Web UI](https://github.com/jellyfin/jellyfin-web/releases/tag/v10.9.0).

### General

* We now support "trickplay" a.k.a. live video scrubbing. When scrubbing through a video with this enabled, you will be able to see a live preview of the video at that timestamp. Note that this requires explicit client support, which may require some time to become available depending on your client.

* Web redirections are now handled more reliably, reducing the likelihood of hitting dead or invalid pages in the UI. Please ensure you force-refresh or clear any browser cache for your Jellyfin instance to see the full benefits.

* DLNA support is now provided by a plugin and has been removed from the core server. This has several major benefits: first, it can be updated independently of the server to some degree; second, it will not be enabled for anyone unless they want it and explicitly install the plugin; and third, it reduces the potential of security holes around DLNA due to both previous benefits. If you wish to use (or continue to use) DLNA, please install the plugin after upgrading.

* We now support AVIF and WEBP images for Pictures libraries.

* Tags are now accounted for during searches, allowing one to search by tag.

* We now support multiple simultaneous subtitle tracks (maximum of two, a primary and secondary) in the web player.

* We've revamped the administrative dashboard UI to help improve usability and ease of finding options.

### API & Security

* All API endpoints now return proper return codes, ensuring that API endpoint results can be reliably interpreted without additional parsing.

* Parental ratings are significantly improved, with better enforcement, inheritable ratings, and more.

* LiveTV and Collection permissions are now discrete and configurable per-user.

* The EasyPassword (PIN) feature has been removed as this was a big security risk especially for administrator accounts; QuickConnect login is still supported however.

* User permission handling has been unified and numerous bugs fixed, ensuring a more secure server from untrusted users.

### Core Server & Networking

* The .NET version has been upgraded to version 8, the latest major and LTS release. This brings us many under-the-hood improvements and changes to help with our ongoing effort to streamline the codebase and improve overall performance.

* Our minimum FFmpeg version has been bumped from 4.0 to 4.4 to take advantage of many new features. For users of our Jellyfin FFmpeg build (Docker, `.deb`/Debuntu repo, and Windows installs), you're already on a newer version with FFmpeg 6.0.1, but this minimum change would affect any other platforms.

* The server now supports in-process restarting, and removes the old hacky `restart.sh` method. This should make things like installing plugins much more robust and ensure a consistent restart experience regardless of platform or install method.

* Uploaded images are now subject to much more verification, helping plug several security holes in this feature.

* The backend SQLite database now supports connection pooling, which should improve performance for database operations.

* Support for the HappyEyeballs engine improving dual-stack IPv4/IPV6 network support.

* Improved handling of IP binding to fully respect these settings (including DLNA and SSDP).

### Packaging

* The `jellyfin` service user is now automatically added to the `render` and `video` groups on Debian/Ubuntu systems for new installs, helping improve the onboarding for hardware acceleration.

* Packaging is now unified with a new CI system, as outlined in [our previous blog post](https://jellyfin.org/posts/new-ci-new-repo). As a normal user you should see no change here, but this helps massively improve the build process, and if you are building your own packages please reference [the new packaging repository](https://github.com/jellyfin/jellyfin-packaging) for the updated process.

### Transcoding & FFmpeg

* The `--ffmpeg` command-line flag is now the primary method of setting FFmpeg paths, and configuration of the FFmpeg paths via `encoding.xml` is now deprecated. All official packaging will revert to defaults unless explicitly set before upgrade.

* Several audio improvements: support for Opus, FLAC, and ALAC codecs in the HLS engine; improved support and handling for transcoding DTS and TrueHD audio streams; new codec enforcement; better bitrate calculations; new audio normalization features; and stereo downmixing algorithm selection.

* FFmpeg segments can now be automatically deleted after the client requests them, significantly reducing the space requirements of the transcoding temporary directory. This optional feature is disabled by default and can be enabled in the transcoding settings.

* Support for direct stream playback of DVD and Blu-ray data folders, preferred over ISOs.

* Support for AV1 hardware and software encoding.

* Support for RK3588 hardware acceleration via MPP.

* Support for Vulkan-based tonemapping with AMD VA-API.

* Support for complete hardware acceleration on Apple systems (both Apple Silicon and Intel; previously was partial).

* Support for Dolby Vision playback remuxing.

### Scanning, Library & Playlist Management

* Support for scanning and displaying local lyric files (embedded or external files; Internet lyric provider searching is planned for 10.10).

* Season names are now parsed from NFO files.

* The MusicBrainz interface has been improved to better handle music libraries.

* Support for hearing-impaired subtitles (sdh/hi./cc).

* The visibility of playlists can now be made private
* User playlists are now private by default
* We're working on playlist sharing for a future release

* Invalid items will be automatically removed from playlists.

### Casting

* Better local network detection
* Connectivity improvements
* Ability to self-host cast receiver

We're looking for contributors for our [cast receiver](https://github.com/jellyfin/jellyfin-chromecast/). This is the application that loads on a TV when using the "Google Cast" feature. Please reach out if you're interested.

## The Next Version

With our continuous integrations improvements outlined previously, we're quite confident that this will be our last "very long" release cycle. Our plan is for the next major version (10.10.0) to be released at most 6 months from now, some time in October. We hope this increased cadence will help alleviate the problems with large releases such as a very long time-to-stable for new features, translations, etc. and help lower the number of major bugs at each major release, streamlining the upgrade process. But this needs everyone's help. Back in October 2023, we made a call for developers, and we've gotten a lot of interest, but this is not a one-and-done event. We need contributions now more than ever, especially around the web frontend to help implement our planned design changes. If this interests you, please reach out and we can help get you set up.

## Final Thoughts

We want to thank everyone who contributed to the 10.9.0 release. According to GitHub over 100 people contributed across both repositories, and Jellyfin wouldn't be what it is without your help. We're really proud of this project we've built as a community, and hope to continue to be the go-to FLOSS media system solution for a long time to come. Happy watching!
Loading

0 comments on commit c1fcf3f

Please sign in to comment.