git: 11e0a695af98 - main - multimedia/jellyfin: udpate to 10.11.6

From: Baptiste Daroussin <bapt_at_FreeBSD.org>
Date: Sat, 31 Jan 2026 12:36:34 UTC
The branch main has been updated by bapt:

URL: https://cgit.FreeBSD.org/ports/commit/?id=11e0a695af981eff53a50a7eceb08f0b400cfcab

commit 11e0a695af981eff53a50a7eceb08f0b400cfcab
Author:     Baptiste Daroussin <bapt@FreeBSD.org>
AuthorDate: 2026-01-31 12:34:21 +0000
Commit:     Baptiste Daroussin <bapt@FreeBSD.org>
CommitDate: 2026-01-31 12:36:26 +0000

    multimedia/jellyfin: udpate to 10.11.6
    
    While here split amd64 and arm64 node archives (like done in navidrome)
    to fix build on arm64
    
    Fix thunbnail and trickplay creation on fresh install by making sure
    /tmp/jellyfin is created at start [1]
    
    PR:     290908 [1]
    Submitted by:   ek@purplehat.org [1]
---
 multimedia/jellyfin/Makefile                       | 77 ++++++++++++++--------
 multimedia/jellyfin/distinfo                       | 18 +++--
 multimedia/jellyfin/files/jellyfin.in              |  5 ++
 .../jellyfin/files/packagejsons/package-lock.json  | 54 ++++++++-------
 .../jellyfin/files/packagejsons/package.json       |  4 +-
 multimedia/jellyfin/pkg-plist                      | 41 ++++++------
 6 files changed, 120 insertions(+), 79 deletions(-)

diff --git a/multimedia/jellyfin/Makefile b/multimedia/jellyfin/Makefile
index eccd4519a6a2..74195d0f0d8d 100644
--- a/multimedia/jellyfin/Makefile
+++ b/multimedia/jellyfin/Makefile
@@ -1,10 +1,8 @@
 PORTNAME=	jellyfin
-DISTVERSION=	10.11.5
+DISTVERSION=	10.11.6
 CATEGORIES=	multimedia
-DISTFILES+=	${PREFETCH_FILE}:prefetch
 EXTRACT_ONLY+=	${PORTNAME}-${PORTNAME}-${GH_TAGNAME}_GH0.tar.gz \
-		${PORTNAME}-${PORTNAME}-web-${GH_TAGNAME}_GH0.tar.gz \
-		${PREFETCH_FILE}
+		${PORTNAME}-${PORTNAME}-web-${GH_TAGNAME}_GH0.tar.gz
 
 MAINTAINER=	bapt@FreeBSD.org
 COMMENT=	Jellyfin Server Component with WebUI
@@ -57,28 +55,53 @@ DOTNET_RUNTIME=		${OPSYS:tl}.${OSREL:R}-${ARCH:S|amd64|x64|:C|aarch64|arm64|}
 
 .include "nuget.mk"
 
-pre-fetch:
+# We need ARCH to be defined, which can only happen after options.mk
+.include <bsd.port.options.mk>
+
+.if ${ARCH} == amd64 || make(makesum)
+FILE_AMD64=		${PORTNAME}-${DISTVERSION}-node${NODEJS_VERSION}-amd64-modules.tar.gz
+DISTFILES+=		${FILE_AMD64}:prefetch
+EXTRACT_ONLY+=		${FILE_AMD64}
+COMBIARCH+=		x64 ${FILE_AMD64}
+.endif
+
+.if ${ARCH} == aarch64 || make(makesum)
+FILE_ARM64=		${PORTNAME}-${DISTVERSION}-node${NODEJS_VERSION}-arm64-modules.tar.gz
+DISTFILES+=		${FILE_ARM64}:prefetch
+EXTRACT_ONLY+=		${FILE_AMD64}
+COMBIARCH+=		arm64 ${FILE_ARM64}
+.endif
+
+# We need NODEJS_VERSION to be expanded before assigning it so MAKESUM_DEP and NODEJS_VERSION
+# is only expanded after pre.mk
+.include <bsd.port.pre.mk>
+
+.for c f in ${COMBIARCH}
+${DISTDIR}/$f:
+	${MKDIR} ${WRKDIR}/ui/node-modules-cache; \
+	${CP} -R ${FILESDIR}/packagejsons/* ${WRKDIR}/ui/node-modules-cache; \
+	cd ${WRKDIR}/ui/node-modules-cache && \
+	${SETENV} HOME=${WRKDIR} \
+		npm ci --ignore-scripts --no-progress --no-audit --no-fund --cpu=$c; \
+	${FIND} ${WRKDIR}/ui/node-modules-cache -depth 1 -print | \
+		${GREP} -v node_modules | ${XARGS} ${RM} -r; \
+	${FIND} ${WRKDIR}/ui/node-modules-cache -type d -exec ${CHMOD} 755 {} ';'; \
+	cd ${WRKDIR}//ui/node-modules-cache && \
+	${MTREE_CMD} -cbnSp node_modules | ${MTREE_CMD} -C | ${SED} \
+		-e 's:time=[0-9.]*:time=${PREFETCH_TIMESTAMP}.000000000:' \
+		-e 's:\([gu]id\)=[0-9]*:\1=0:g' \
+		-e 's:flags=.*:flags=none:' \
+		-e 's:^\.:./node_modules:' > node-modules-cache.mtree; \
+	${TAR} -cz --options 'gzip:!timestamp' \
+		-f ${DISTDIR}/$f \
+		@node-modules-cache.mtree; \
+	${RM} -r ${WRKDIR}; \
+
+PREFETCH_DEP+=	${DISTDIR}/$f
+.endfor
+
+pre-fetch: ${PREFETCH_DEP}
 	@-${_NUGET_FETCH}
-	if [ ! -f ${DISTDIR}/${PREFETCH_FILE} ]; then \
-		${MKDIR} ${WRKDIR}/node-modules-cache; \
-		${CP} -R ${FILESDIR}/packagejsons/* ${WRKDIR}/node-modules-cache; \
-		cd ${WRKDIR}/node-modules-cache && \
-		${SETENV} HOME=${WRKDIR} \
-			npm ci --ignore-scripts --no-progress --no-audit --no-fund; \
-		${FIND} ${WRKDIR}/node-modules-cache -depth 1 -print | \
-			${GREP} -v node_modules | ${XARGS} ${RM} -r; \
-		${FIND} ${WRKDIR}/node-modules-cache -type d -exec ${CHMOD} 755 {} ';'; \
-		cd ${WRKDIR}/node-modules-cache && \
-		${MTREE_CMD} -cbnSp node_modules | ${MTREE_CMD} -C | ${SED} \
-			-e 's:time=[0-9.]*:time=${PREFETCH_TIMESTAMP}.000000000:' \
-			-e 's:\([gu]id\)=[0-9]*:\1=0:g' \
-			-e 's:flags=.*:flags=none:' \
-			-e 's:^\.:./node_modules:' > node-modules-cache.mtree; \
-		${TAR} -cz --options 'gzip:!timestamp' \
-			-f ${DISTDIR}/${PREFETCH_FILE} \
-			@node-modules-cache.mtree; \
-		${RM} -r ${WRKDIR}; \
-	fi
 
 post-extract:
 	${MV} ${WRKDIR}/node_modules ${WRKSRC_ui}
@@ -109,4 +132,6 @@ post-install:
 	@${ECHO_CMD} "libe_sqlite3.so libsqlite3.so" \
 		>${STAGEDIR}${PREFIX}/etc/libmap.d/jellyfin.conf
 
-.include <bsd.port.mk>
+.include <bsd.port.post.mk>
+
+makesum: ${PREFETCH_DEP}
diff --git a/multimedia/jellyfin/distinfo b/multimedia/jellyfin/distinfo
index 2ed2e9e79d4d..d9321b8ea92e 100644
--- a/multimedia/jellyfin/distinfo
+++ b/multimedia/jellyfin/distinfo
@@ -1,6 +1,6 @@
-TIMESTAMP = 1766585358
-SHA256 (jellyfin-10.11.5-node24-modules.tar.gz) = c1cd97188627d7991519e461ea54406e5c0f5ad842424839b594e1ee7097d509
-SIZE (jellyfin-10.11.5-node24-modules.tar.gz) = 456743349
+TIMESTAMP = 1769843535
+SHA256 (jellyfin-10.11.6-node24-modules.tar.gz) = 7591a3a3aae2af87d241f3b35916db258a121d23b976acdd79623d9db83b05f9
+SIZE (jellyfin-10.11.6-node24-modules.tar.gz) = 456783570
 SHA256 (nuget/asynckeyedlock.7.1.8.nupkg) = 3e457cc7d1ef200c69a5d26b601834cd8ea875b56cf52e9f86a816f99b61580e
 SIZE (nuget/asynckeyedlock.7.1.8.nupkg) = 401877
 SHA256 (nuget/autofixture.4.18.1.nupkg) = ade3fe6a86223dc223e066c22218dde7f3a1b9654b0ad0f884ab8b3c77b61172
@@ -621,7 +621,11 @@ SHA256 (nuget/z440.atl.core.7.9.0.nupkg) = 0af4702aac45e4603e709f4dcab380ef3d120
 SIZE (nuget/z440.atl.core.7.9.0.nupkg) = 431155
 SHA256 (nuget/zlib.net-mutliplatform.1.0.8.nupkg) = d5c2e464927e2f267eb3978c09c4e500d9c5dbe53bce680d861567da8febe33d
 SIZE (nuget/zlib.net-mutliplatform.1.0.8.nupkg) = 82188
-SHA256 (jellyfin-jellyfin-v10.11.5_GH0.tar.gz) = f6021e914502f6300ba862e3adb2bd013f6243b67ac8654002d8724b106b2831
-SIZE (jellyfin-jellyfin-v10.11.5_GH0.tar.gz) = 1832356
-SHA256 (jellyfin-jellyfin-web-v10.11.5_GH0.tar.gz) = 28ceba036701b403e079c710467386b3632d10e4fb15678b23a79525b4f4582e
-SIZE (jellyfin-jellyfin-web-v10.11.5_GH0.tar.gz) = 4341753
+SHA256 (jellyfin-10.11.6-node24-amd64-modules.tar.gz) = 7591a3a3aae2af87d241f3b35916db258a121d23b976acdd79623d9db83b05f9
+SIZE (jellyfin-10.11.6-node24-amd64-modules.tar.gz) = 456783570
+SHA256 (jellyfin-10.11.6-node24-arm64-modules.tar.gz) = bdf4f831099b8f37a0f53bb735c21eccd903ef467c6eec8270925c14b26426a6
+SIZE (jellyfin-10.11.6-node24-arm64-modules.tar.gz) = 456090553
+SHA256 (jellyfin-jellyfin-v10.11.6_GH0.tar.gz) = 718478cf593d1882a9702fa3de682bde10cc178bf52d7e112b1c843f3aa2d629
+SIZE (jellyfin-jellyfin-v10.11.6_GH0.tar.gz) = 1833081
+SHA256 (jellyfin-jellyfin-web-v10.11.6_GH0.tar.gz) = 6d7979501e8945590fc8b742d9c04aed1a0528ca1bb8641db46d218475263d8c
+SIZE (jellyfin-jellyfin-web-v10.11.6_GH0.tar.gz) = 4345412
diff --git a/multimedia/jellyfin/files/jellyfin.in b/multimedia/jellyfin/files/jellyfin.in
index 86ee201c0ff0..a5d211466c74 100644
--- a/multimedia/jellyfin/files/jellyfin.in
+++ b/multimedia/jellyfin/files/jellyfin.in
@@ -59,6 +59,11 @@ jellyfin_precmd() {
         install -d -o ${jellyfin_user} -g ${jellyfin_group} ${jellyfin_pid_dir}
     fi
 
+
+    if [ ! -d /tmp/jellyfin ]; then
+        install -d -o ${jellyfin_user} -g ${jellyfin_group} /tmp/jellyfin
+    fi
+
     # .NET 6+ use dual mode sockets to avoid the separate AF handling.
     # disable .NET use of V6 if no ipv6 is configured.
     # See https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=259194#c17
diff --git a/multimedia/jellyfin/files/packagejsons/package-lock.json b/multimedia/jellyfin/files/packagejsons/package-lock.json
index 514c50ae2330..505bc72d24b8 100644
--- a/multimedia/jellyfin/files/packagejsons/package-lock.json
+++ b/multimedia/jellyfin/files/packagejsons/package-lock.json
@@ -1,12 +1,12 @@
 {
   "name": "jellyfin-web",
-  "version": "10.11.0",
+  "version": "10.11.6",
   "lockfileVersion": 2,
   "requires": true,
   "packages": {
     "": {
       "name": "jellyfin-web",
-      "version": "10.11.0",
+      "version": "10.11.6",
       "license": "GPL-2.0-or-later",
       "dependencies": {
         "@emotion/react": "11.14.0",
@@ -18,7 +18,7 @@
         "@fontsource/noto-sans-sc": "5.2.6",
         "@fontsource/noto-sans-tc": "5.2.6",
         "@jellyfin/libass-wasm": "4.2.3",
-        "@jellyfin/sdk": "0.0.0-unstable.202510030502",
+        "@jellyfin/sdk": "0.12.0",
         "@jellyfin/ux-web": "1.0.0",
         "@mui/icons-material": "6.4.12",
         "@mui/material": "6.4.12",
@@ -4129,12 +4129,12 @@
       "license": "LGPL-2.1-or-later AND (FTL OR GPL-2.0-or-later) AND MIT AND MIT-Modern-Variant AND ISC AND NTP AND Zlib AND BSL-1.0"
     },
     "node_modules/@jellyfin/sdk": {
-      "version": "0.0.0-unstable.202510030502",
-      "resolved": "https://registry.npmjs.org/@jellyfin/sdk/-/sdk-0.0.0-unstable.202510030502.tgz",
-      "integrity": "sha512-khxWQ4dKirp03sLCkz8s+MrfAmJUGD4xTfVHRq3NOsgz8ueDH3qVxdya8YnV8U83p+bfZpGtnf1IAvyh+f959g==",
+      "version": "0.12.0",
+      "resolved": "https://registry.npmjs.org/@jellyfin/sdk/-/sdk-0.12.0.tgz",
+      "integrity": "sha512-do3cks7TD316Qw27lBMHZQ7ufaS1MC8HMsQF5rFv5/DUInuwEOqWthqVyHl3sIjThOThF1zxQyE6OdpUl0dNUg==",
       "license": "MPL-2.0",
       "peerDependencies": {
-        "axios": "^1.3.4"
+        "axios": "^1.12.0"
       }
     },
     "node_modules/@jellyfin/ux-web": {
@@ -7233,6 +7233,7 @@
       "version": "0.4.0",
       "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
       "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+      "license": "MIT",
       "peer": true
     },
     "node_modules/atob": {
@@ -7312,14 +7313,14 @@
       }
     },
     "node_modules/axios": {
-      "version": "1.8.3",
-      "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.3.tgz",
-      "integrity": "sha512-iP4DebzoNlP/YN2dpwCgb8zoCmhtkajzS48JvwmkSkXvPI3DHc7m+XYL5tGnSlJtR6nImXZmdCuN5aP8dh1d8A==",
+      "version": "1.12.2",
+      "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz",
+      "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==",
       "license": "MIT",
       "peer": true,
       "dependencies": {
         "follow-redirects": "^1.15.6",
-        "form-data": "^4.0.0",
+        "form-data": "^4.0.4",
         "proxy-from-env": "^1.1.0"
       }
     },
@@ -8420,6 +8421,7 @@
       "version": "1.0.8",
       "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
       "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+      "license": "MIT",
       "peer": true,
       "dependencies": {
         "delayed-stream": "~1.0.0"
@@ -9509,6 +9511,7 @@
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
       "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+      "license": "MIT",
       "peer": true,
       "engines": {
         "node": ">=0.4.0"
@@ -11962,15 +11965,16 @@
       }
     },
     "node_modules/form-data": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz",
-      "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
+      "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
       "license": "MIT",
       "peer": true,
       "dependencies": {
         "asynckit": "^0.4.0",
         "combined-stream": "^1.0.8",
         "es-set-tostringtag": "^2.1.0",
+        "hasown": "^2.0.2",
         "mime-types": "^2.1.12"
       },
       "engines": {
@@ -18228,6 +18232,7 @@
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
       "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+      "license": "MIT",
       "peer": true
     },
     "node_modules/proxy-polyfill": {
@@ -26774,9 +26779,9 @@
       "integrity": "sha512-C0OlBxIr9NdeFESMTA/OVDqNSWtog6Mi7wwzwH12xbZpxsMD0RgCupUcIP7zZgcpTNecW3fZq5d6xVo7Q8HEJw=="
     },
     "@jellyfin/sdk": {
-      "version": "0.0.0-unstable.202510030502",
-      "resolved": "https://registry.npmjs.org/@jellyfin/sdk/-/sdk-0.0.0-unstable.202510030502.tgz",
-      "integrity": "sha512-khxWQ4dKirp03sLCkz8s+MrfAmJUGD4xTfVHRq3NOsgz8ueDH3qVxdya8YnV8U83p+bfZpGtnf1IAvyh+f959g==",
+      "version": "0.12.0",
+      "resolved": "https://registry.npmjs.org/@jellyfin/sdk/-/sdk-0.12.0.tgz",
+      "integrity": "sha512-do3cks7TD316Qw27lBMHZQ7ufaS1MC8HMsQF5rFv5/DUInuwEOqWthqVyHl3sIjThOThF1zxQyE6OdpUl0dNUg==",
       "requires": {}
     },
     "@jellyfin/ux-web": {
@@ -28774,13 +28779,13 @@
       "dev": true
     },
     "axios": {
-      "version": "1.8.3",
-      "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.3.tgz",
-      "integrity": "sha512-iP4DebzoNlP/YN2dpwCgb8zoCmhtkajzS48JvwmkSkXvPI3DHc7m+XYL5tGnSlJtR6nImXZmdCuN5aP8dh1d8A==",
+      "version": "1.12.2",
+      "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz",
+      "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==",
       "peer": true,
       "requires": {
         "follow-redirects": "^1.15.6",
-        "form-data": "^4.0.0",
+        "form-data": "^4.0.4",
         "proxy-from-env": "^1.1.0"
       }
     },
@@ -32067,14 +32072,15 @@
       }
     },
     "form-data": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz",
-      "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
+      "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
       "peer": true,
       "requires": {
         "asynckit": "^0.4.0",
         "combined-stream": "^1.0.8",
         "es-set-tostringtag": "^2.1.0",
+        "hasown": "^2.0.2",
         "mime-types": "^2.1.12"
       }
     },
diff --git a/multimedia/jellyfin/files/packagejsons/package.json b/multimedia/jellyfin/files/packagejsons/package.json
index 33f3f11f46ee..c48f5672487c 100644
--- a/multimedia/jellyfin/files/packagejsons/package.json
+++ b/multimedia/jellyfin/files/packagejsons/package.json
@@ -1,6 +1,6 @@
 {
   "name": "jellyfin-web",
-  "version": "10.11.0",
+  "version": "10.11.6",
   "description": "Web interface for Jellyfin",
   "repository": "https://github.com/jellyfin/jellyfin-web",
   "license": "GPL-2.0-or-later",
@@ -84,7 +84,7 @@
     "@fontsource/noto-sans-sc": "5.2.6",
     "@fontsource/noto-sans-tc": "5.2.6",
     "@jellyfin/libass-wasm": "4.2.3",
-    "@jellyfin/sdk": "0.0.0-unstable.202510030502",
+    "@jellyfin/sdk": "0.12.0",
     "@jellyfin/ux-web": "1.0.0",
     "@mui/icons-material": "6.4.12",
     "@mui/material": "6.4.12",
diff --git a/multimedia/jellyfin/pkg-plist b/multimedia/jellyfin/pkg-plist
index 53cde02454a2..4cf7dc300857 100644
--- a/multimedia/jellyfin/pkg-plist
+++ b/multimedia/jellyfin/pkg-plist
@@ -530,7 +530,7 @@ jellyfin/jellyfin-web/23789.9a3dd8d034702af1b84e.chunk.js
 jellyfin/jellyfin-web/24135.306b4dffe60dc2dc0250.chunk.js
 jellyfin/jellyfin-web/242.b251eb237b86cde7edce.chunk.js
 jellyfin/jellyfin-web/24450.e567b722f4ef6bfab80f.chunk.js
-jellyfin/jellyfin-web/24468.cc4786b370fe6972ab57.chunk.js
+jellyfin/jellyfin-web/24468.0965909e13c9a8e197d0.chunk.js
 jellyfin/jellyfin-web/24855.aee7c42eabf2ecf05da5.chunk.js
 jellyfin/jellyfin-web/24871.3ea5154a81e4ab458386.chunk.js
 jellyfin/jellyfin-web/24872.a047fd6af8ffb42955e2.chunk.js
@@ -595,8 +595,8 @@ jellyfin/jellyfin-web/31768.6df7a560c7676008c11b.chunk.js
 jellyfin/jellyfin-web/31773.572fcd035ddff7dfea96.chunk.js
 jellyfin/jellyfin-web/31974.909af7387d6095b84995.chunk.js
 jellyfin/jellyfin-web/32689.df61fa573a270c43c76b.chunk.js
-jellyfin/jellyfin-web/32721.1565fbee2f79c634a171.chunk.js
-jellyfin/jellyfin-web/32721.1565fbee2f79c634a171.chunk.js.LICENSE.txt
+jellyfin/jellyfin-web/32721.7df69cb5f2d12904581b.chunk.js
+jellyfin/jellyfin-web/32721.7df69cb5f2d12904581b.chunk.js.LICENSE.txt
 jellyfin/jellyfin-web/32721.bfde69083a6ae513ba97.css
 jellyfin/jellyfin-web/32894.1e1322489c09cd3f42bc.chunk.js
 jellyfin/jellyfin-web/32896.7ae7c8f3d7a787e1eb66.chunk.js
@@ -643,7 +643,7 @@ jellyfin/jellyfin-web/3767.aef59dc08f22402f40e6.chunk.js
 jellyfin/jellyfin-web/3776.f46aa66b273cb2199582.chunk.js
 jellyfin/jellyfin-web/37821.657eef9ddbfef807d3ad.chunk.js
 jellyfin/jellyfin-web/38082.d5c479298b0138321239.chunk.js
-jellyfin/jellyfin-web/38122.c2d024b452ef9603b24b.chunk.js
+jellyfin/jellyfin-web/38122.5484b7a8e84127a41eab.chunk.js
 jellyfin/jellyfin-web/38619.4a3d5cf80b2b7aabe6df.chunk.js
 jellyfin/jellyfin-web/38775.fd8071f5e1ab154ea19f.chunk.js
 jellyfin/jellyfin-web/3888.7da541436acd95af2f65.chunk.js
@@ -896,8 +896,8 @@ jellyfin/jellyfin-web/68413.fd47b46245a5934670be.chunk.js
 jellyfin/jellyfin-web/68448.92582e12be9bb8470b00.chunk.js
 jellyfin/jellyfin-web/68481.9e175af00b7bf2330bda.chunk.js
 jellyfin/jellyfin-web/685.beb0dc74d98242f1359a.chunk.js
+jellyfin/jellyfin-web/68603.927deb4f3fa3d339662d.chunk.js
 jellyfin/jellyfin-web/68603.bfde69083a6ae513ba97.css
-jellyfin/jellyfin-web/68603.dd143553b71a7dcbae51.chunk.js
 jellyfin/jellyfin-web/68971.add693c416ecf0cf921e.chunk.js
 jellyfin/jellyfin-web/69260.724083a2d4fea0a0e22c.chunk.js
 jellyfin/jellyfin-web/6940.9bca7ecc2bfd885fd6f5.chunk.js
@@ -1017,7 +1017,7 @@ jellyfin/jellyfin-web/81682.4e77c7445e57aca08029.chunk.js
 jellyfin/jellyfin-web/81790.0889d90e8012c7119b7a.chunk.js
 jellyfin/jellyfin-web/81949.4dc1e171984a8e6fea43.css
 jellyfin/jellyfin-web/81949.9d174c719bb5401c00d0.chunk.js
-jellyfin/jellyfin-web/81954.221ec67f79242f490c86.chunk.js
+jellyfin/jellyfin-web/81954.300ea98bc9f7b1557160.chunk.js
 jellyfin/jellyfin-web/81992.7a5b27d3f3209dc548e1.chunk.js
 jellyfin/jellyfin-web/82067.7b575654853a9bc8f384.chunk.js
 jellyfin/jellyfin-web/82381.38c83d39877828c0d309.chunk.js
@@ -1050,7 +1050,7 @@ jellyfin/jellyfin-web/85065.bfa6f0fad6b4328d259e.chunk.js
 jellyfin/jellyfin-web/85234.7bea5848e2b1a33aa174.chunk.js
 jellyfin/jellyfin-web/8528.d43d010f53b953d10119.chunk.js
 jellyfin/jellyfin-web/85447.15cb1105bfb62154089d.chunk.js
-jellyfin/jellyfin-web/8575.22b3385f8c1742fe35c4.chunk.js
+jellyfin/jellyfin-web/8575.9930ac44b80fc0c13f36.chunk.js
 jellyfin/jellyfin-web/8575.f181f20df0b13586dc25.css
 jellyfin/jellyfin-web/85794.d6548f60c794bfbb2cd3.chunk.js
 jellyfin/jellyfin-web/86376.87ce012f8ba76b09eb9c.css
@@ -1142,7 +1142,7 @@ jellyfin/jellyfin-web/98618.8944f222b95bb989acfe.chunk.js
 jellyfin/jellyfin-web/98769.eb17c0a7cbbfd6defc54.chunk.js
 jellyfin/jellyfin-web/98931.d8ecf56e8251c655e1e0.chunk.js
 jellyfin/jellyfin-web/99049.ac743beeb22ff575e18b.chunk.js
-jellyfin/jellyfin-web/99883.9e6528daf81363afcc83.chunk.js
+jellyfin/jellyfin-web/99883.9ffc7cabe8574ec089b7.chunk.js
 jellyfin/jellyfin-web/99911.96739e32337332dad222.chunk.js
 jellyfin/jellyfin-web/MaterialIcons-Regular.08cefa1bc6566a650da7.woff
 jellyfin/jellyfin-web/MaterialIcons-Regular.2d8017489da689caedc1.woff2
@@ -1161,6 +1161,7 @@ jellyfin/jellyfin-web/assets/img/devices/edge.svg
 jellyfin/jellyfin-web/assets/img/devices/edgechromium.svg
 jellyfin/jellyfin-web/assets/img/devices/finamp.svg
 jellyfin/jellyfin-web/assets/img/devices/firefox.svg
+jellyfin/jellyfin-web/assets/img/devices/firetv.svg
 jellyfin/jellyfin-web/assets/img/devices/home-assistant.svg
 jellyfin/jellyfin-web/assets/img/devices/html5.svg
 jellyfin/jellyfin-web/assets/img/devices/kodi.svg
@@ -1212,7 +1213,7 @@ jellyfin/jellyfin-web/cs-json.3c9ee7c200804b858890.chunk.js
 jellyfin/jellyfin-web/cy-json.d6f312cee372be83abeb.chunk.js
 jellyfin/jellyfin-web/da-json.a3e6527575a48963290e.chunk.js
 jellyfin/jellyfin-web/de-json.97eb453c074051782e88.chunk.js
-jellyfin/jellyfin-web/devices.77000b3a9001dd7234e5.chunk.js
+jellyfin/jellyfin-web/devices.01bfe1e86e6bdfcde095.chunk.js
 jellyfin/jellyfin-web/dv-json.722ce837ef4658d4733b.chunk.js
 jellyfin/jellyfin-web/edititemmetadata-html.73580261ddfe3c52b75c.chunk.js
 jellyfin/jellyfin-web/edititemmetadata.81f5848418581057ae5a.chunk.js
@@ -1274,7 +1275,7 @@ jellyfin/jellyfin-web/hu-json.77d405478b2bc4a757df.chunk.js
 jellyfin/jellyfin-web/hy-json.96b15e592694aa5d5c9f.chunk.js
 jellyfin/jellyfin-web/icon-transparent.baba78f2a106d9baee83.png
 jellyfin/jellyfin-web/id-json.414c3ad30731aa6bccd9.chunk.js
-jellyfin/jellyfin-web/index.fcbffddb8832efcc3aa0.chunk.js
+jellyfin/jellyfin-web/index.2619e1ebaee8f0dd41ff.chunk.js
 jellyfin/jellyfin-web/index.html
 jellyfin/jellyfin-web/is-is-json.140f3c4535fc752b47cb.chunk.js
 jellyfin/jellyfin-web/it-json.e95d9c55e7978d409e7f.chunk.js
@@ -1296,7 +1297,7 @@ jellyfin/jellyfin-web/libraries-display.77108e3a19467b9f6569.chunk.js
 jellyfin/jellyfin-web/libraries-metadata.4860712b6addf527719f.chunk.js
 jellyfin/jellyfin-web/libraries-nfo.c3c3fd48d3a9e22ab105.chunk.js
 jellyfin/jellyfin-web/libraries.1b6e01d67fa7276dd291.css
-jellyfin/jellyfin-web/libraries.4988e265e604bcb0e445.chunk.js
+jellyfin/jellyfin-web/libraries.38e69a6fc429a33d86f9.chunk.js
 jellyfin/jellyfin-web/libraries/default.woff2
 jellyfin/jellyfin-web/libraries/libarchive.wasm
 jellyfin/jellyfin-web/libraries/libpgs.worker.js
@@ -1310,7 +1311,7 @@ jellyfin/jellyfin-web/libraries/subtitles-octopus-worker.wasm
 jellyfin/jellyfin-web/libraries/worker-bundle.js
 jellyfin/jellyfin-web/libraries/worker-bundle.js.LICENSE.txt
 jellyfin/jellyfin-web/library-html.dcc2bafa565379553f04.chunk.js
-jellyfin/jellyfin-web/library.0578cfcc17ad4ce09d2b.chunk.js
+jellyfin/jellyfin-web/library.6e684507234df3a63964.chunk.js
 jellyfin/jellyfin-web/library.b965d0fbed7b231d8996.css
 jellyfin/jellyfin-web/list-html.36c3a9f8dafab99651a1.chunk.js
 jellyfin/jellyfin-web/list.40b08310ad3e6b6c4713.chunk.js
@@ -1344,9 +1345,9 @@ jellyfin/jellyfin-web/logs.22d415847cf13921bce6.chunk.js
 jellyfin/jellyfin-web/lt-lt-json.c1d90e5c27197efe73fe.chunk.js
 jellyfin/jellyfin-web/lv-json.b0475ec49ac02fff222c.chunk.js
 jellyfin/jellyfin-web/lyrics-html.016ab006ae8b7d3eea54.chunk.js
-jellyfin/jellyfin-web/lyrics.05d5ed668649f4fe72bd.chunk.js
 jellyfin/jellyfin-web/lyrics.9625003329b18be27f24.css
-jellyfin/jellyfin-web/main.jellyfin.9c6fd4f27ea6ac4a6d6f.css
+jellyfin/jellyfin-web/lyrics.c31f5e5752833ba34655.chunk.js
+jellyfin/jellyfin-web/main.jellyfin.7eaf27d20464cbe82c37.css
 jellyfin/jellyfin-web/main.jellyfin.bundle.js
 jellyfin/jellyfin-web/main.jellyfin.bundle.js.LICENSE.txt
 jellyfin/jellyfin-web/manifest.json
@@ -2584,12 +2585,12 @@ jellyfin/jellyfin-web/playback-streaming.9abeed21d8c0fb02273f.chunk.js
 jellyfin/jellyfin-web/playback-transcoding.e959baf9509d5b170095.chunk.js
 jellyfin/jellyfin-web/playback-trickplay.5e3dcb286068a91d8fa8.chunk.js
 jellyfin/jellyfin-web/playback-video-index-html.fb812af814e8c8697a00.chunk.js
-jellyfin/jellyfin-web/playback-video.1bb437c4ee35983c6b77.chunk.js
-jellyfin/jellyfin-web/playback-video.1bb437c4ee35983c6b77.chunk.js.LICENSE.txt
 jellyfin/jellyfin-web/playback-video.307c03a68b62db732104.css
+jellyfin/jellyfin-web/playback-video.643576d4f0393b6775e4.chunk.js
+jellyfin/jellyfin-web/playback-video.643576d4f0393b6775e4.chunk.js.LICENSE.txt
 jellyfin/jellyfin-web/plugins-plugin.a067614e764f6fff0ad4.chunk.js
 jellyfin/jellyfin-web/plugins-repositories.ad08e2b6e4be11df20e9.chunk.js
-jellyfin/jellyfin-web/plugins.79d12abe5ee75e209e7e.chunk.js
+jellyfin/jellyfin-web/plugins.56e584230d162132aeb5.chunk.js
 jellyfin/jellyfin-web/pr-json.dcfa5f50b3ad09018bb5.chunk.js
 jellyfin/jellyfin-web/pt-br-json.17118524eb9dc0266deb.chunk.js
 jellyfin/jellyfin-web/pt-json.5ebe001aa2e1faf36c61.chunk.js
@@ -2614,14 +2615,14 @@ jellyfin/jellyfin-web/session-forgotPassword.62e8687b3779fa93cdc2.chunk.js
 jellyfin/jellyfin-web/session-login-index-html.7df1620bd3afcef60eb7.chunk.js
 jellyfin/jellyfin-web/session-login-login-scss.b6ea6799adef0a59ea03.chunk.js
 jellyfin/jellyfin-web/session-login-login-scss.b767cf817e3eb2387cd8.css
+jellyfin/jellyfin-web/session-login.772912551717410a1de5.chunk.js
+jellyfin/jellyfin-web/session-login.772912551717410a1de5.chunk.js.LICENSE.txt
 jellyfin/jellyfin-web/session-login.872eaba65c6e2216aba6.css
-jellyfin/jellyfin-web/session-login.c08895ee559e30dd0241.chunk.js
-jellyfin/jellyfin-web/session-login.c08895ee559e30dd0241.chunk.js.LICENSE.txt
 jellyfin/jellyfin-web/session-resetPassword-index-html.ef3ca45b4689d7f291ad.chunk.js
 jellyfin/jellyfin-web/session-resetPassword.69bc0e8183831f79b50d.chunk.js
 jellyfin/jellyfin-web/session-selectServer-index-html.347605e4b514c26fef7a.chunk.js
+jellyfin/jellyfin-web/session-selectServer.11b3f8f84ec57fe3334e.chunk.js
 jellyfin/jellyfin-web/session-selectServer.79650bbe6c9edb13add0.css
-jellyfin/jellyfin-web/session-selectServer.d08dd2225623662430d8.chunk.js
 jellyfin/jellyfin-web/sessionPlayer-plugin.b0fb6e5a7eb9fb4d93e5.chunk.js
 jellyfin/jellyfin-web/sessionPlayer-plugin.b0fb6e5a7eb9fb4d93e5.chunk.js.LICENSE.txt
 jellyfin/jellyfin-web/settings-index-html.eb37b8107cd35488a326.chunk.js