Skip to content

feat: ship jellyfin-web 12.3 and reproduce Jellyfin 12.3 - #561

Merged
moodiness merged 4 commits into
mainfrom
feat/jellyfin-web-12.3
Oct 23, 2026
Merged

moodiness merged 4 commits into
mainfrom
feat/jellyfin-web-12.3

Conversation

@moodiness

Copy link
Copy Markdown
Owner

Jellyfin 12.3 shipped on October 23, server and jellyfin-web both bugfix releases. Polyfin now ships jellyfin-web 12.3 and answers as Jellyfin 12.3 does.

Pins

  • The Dockerfile takes jellyfin-web's built files from jellyfin/jellyfin:12.3@sha256:2038fe038ab3876a80f6e7b7e0aef6607b032c7dc0c9b3ad3296d0b2eba3bbb5 (the multi-platform index), and its source archive v12.3.tar.gz by its sha256. The same methods give the old 12.2 pins exactly.
  • internal/jellyfin/jellyfin.go reports 12.3.0, as a real Jellyfin 12.3 does on /System/Info and /System/Info/Public. The admin app signs into jellyfin-web as 12.3.0.
  • The notices, the docs and the admin app's copy that state the current version move to 12.3. Mentions of 12.2's own changes, and of the responses recorded from it, stay.

Each 12.3 change

Server:

Web:

Against a real Jellyfin 12.3

scripts/jellyfin-fixtures.sh and its music part were run against Jellyfin 12.2 and 12.3, with the same setup, together with the administration requests the scripts do not make: 12.3 answers exactly as 12.2, apart from trace IDs, dates, segment names and encoder output sizes, which a fresh 12.2 recording also changes. The fixtures stay as recorded; docs/development.md says so.

Tests

  • TestRatingsThatAreNotFiniteNumbersAreNone: a fake addon rates titles Infinity, NaN, 1e999 and -inf; the listing is readable JSON and only the title rated 7.5 has a rating; the editor answers 204 to those values and the field follows the addon again. It failed before: the listing had an empty body, and the editor answered 500.
  • TestProviderRatingsAreNumbersOutOfTen gains NaN, which came back as "NaN" before.
  • TestVideoWithoutFrameSize covers a video stream without a width or height.

Smoke

The image built from this branch serves jellyfin-web 12.3: its main.jellyfin.bundle.js is byte-identical to Jellyfin 12.3's. In Chrome, with fake addons, an IPTV source and a music folder, the following worked:

  • sign-in, home, a library titled with its name, an item page;
  • direct play with subtitles, and converted play;
  • a title marked unplayed from another device, with the library page refreshing its marks;
  • Remind me on a programme;
  • the Audio Normalization setting;
  • another user signing in after a session ended other than by Sign out, without the first user's kept answers;
  • Sign out;
  • the bundled theme, loaded from Polyfin alone.

No request answered 5xx; the four 401s came from the sessions ended on purpose. The full suite passes.

…Jellyfin 12.3 does

An addon's imdbRating of Infinity, inf or 1e999 became +Inf, which the
JSON encoder then failed on: /Items answered 200 with an empty body.
The metadata editor answered 500 to "NaN" or "Infinity". Jellyfin 12.3
no longer stores ratings or gains that are not finite numbers. Such a
rating now counts as none, from an addon, an IPTV provider or the
editor, which answers 204 and lets the field follow the addon again.
The web client is jellyfin-web 12.3, taken from the official Jellyfin
12.3 image pinned by digest, with its source archive. Polyfin reports
12.3.0, as Jellyfin 12.3 does on /System/Info and /System/Info/Public,
and the admin app signs into jellyfin-web as 12.3.0. Responses recorded
from a real Jellyfin 12.3 with the fixture scripts match 12.2's apart
from noise, so the fixtures stay as recorded.
@moodiness
moodiness merged commit 6ec0666 into main Oct 23, 2026
28 checks passed
@moodiness
moodiness deleted the feat/jellyfin-web-12.3 branch October 23, 2026 18:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant