diff --git a/package-lock.json b/package-lock.json
index d5c619a7..5b96db26 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -29,7 +29,7 @@
                 "typescript": "5.7.2",
                 "typescript-eslint": "8.15.0",
                 "vite": "5.4.11",
-                "vitest": "2.1.5"
+                "vitest": "2.1.6"
             }
         },
         "node_modules/@aashutoshrathi/word-wrap": {
@@ -1539,14 +1539,14 @@
             }
         },
         "node_modules/@vitest/expect": {
-            "version": "2.1.5",
-            "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.5.tgz",
-            "integrity": "sha512-nZSBTW1XIdpZvEJyoP/Sy8fUg0b8od7ZpGDkTUcfJ7wz/VoZAFzFfLyxVxGFhUjJzhYqSbIpfMtl/+k/dpWa3Q==",
+            "version": "2.1.6",
+            "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.6.tgz",
+            "integrity": "sha512-9M1UR9CAmrhJOMoSwVnPh2rELPKhYo0m/CSgqw9PyStpxtkwhmdM6XYlXGKeYyERY1N6EIuzkQ7e3Lm1WKCoUg==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@vitest/spy": "2.1.5",
-                "@vitest/utils": "2.1.5",
+                "@vitest/spy": "2.1.6",
+                "@vitest/utils": "2.1.6",
                 "chai": "^5.1.2",
                 "tinyrainbow": "^1.2.0"
             },
@@ -1555,13 +1555,13 @@
             }
         },
         "node_modules/@vitest/mocker": {
-            "version": "2.1.5",
-            "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.5.tgz",
-            "integrity": "sha512-XYW6l3UuBmitWqSUXTNXcVBUCRytDogBsWuNXQijc00dtnU/9OqpXWp4OJroVrad/gLIomAq9aW8yWDBtMthhQ==",
+            "version": "2.1.6",
+            "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.6.tgz",
+            "integrity": "sha512-MHZp2Z+Q/A3am5oD4WSH04f9B0T7UvwEb+v5W0kCYMhtXGYbdyl2NUk1wdSMqGthmhpiThPDp/hEoVwu16+u1A==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@vitest/spy": "2.1.5",
+                "@vitest/spy": "2.1.6",
                 "estree-walker": "^3.0.3",
                 "magic-string": "^0.30.12"
             },
@@ -1570,7 +1570,7 @@
             },
             "peerDependencies": {
                 "msw": "^2.4.9",
-                "vite": "^5.0.0"
+                "vite": "^5.0.0 || ^6.0.0"
             },
             "peerDependenciesMeta": {
                 "msw": {
@@ -1582,9 +1582,9 @@
             }
         },
         "node_modules/@vitest/pretty-format": {
-            "version": "2.1.5",
-            "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.5.tgz",
-            "integrity": "sha512-4ZOwtk2bqG5Y6xRGHcveZVr+6txkH7M2e+nPFd6guSoN638v/1XQ0K06eOpi0ptVU/2tW/pIU4IoPotY/GZ9fw==",
+            "version": "2.1.6",
+            "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.6.tgz",
+            "integrity": "sha512-exZyLcEnHgDMKc54TtHca4McV4sKT+NKAe9ix/yhd/qkYb/TP8HTyXRFDijV19qKqTZM0hPL4753zU/U8L/gAA==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
@@ -1595,13 +1595,13 @@
             }
         },
         "node_modules/@vitest/runner": {
-            "version": "2.1.5",
-            "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.5.tgz",
-            "integrity": "sha512-pKHKy3uaUdh7X6p1pxOkgkVAFW7r2I818vHDthYLvUyjRfkKOU6P45PztOch4DZarWQne+VOaIMwA/erSSpB9g==",
+            "version": "2.1.6",
+            "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.6.tgz",
+            "integrity": "sha512-SjkRGSFyrA82m5nz7To4CkRSEVWn/rwQISHoia/DB8c6IHIhaE/UNAo+7UfeaeJRE979XceGl00LNkIz09RFsA==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@vitest/utils": "2.1.5",
+                "@vitest/utils": "2.1.6",
                 "pathe": "^1.1.2"
             },
             "funding": {
@@ -1609,13 +1609,13 @@
             }
         },
         "node_modules/@vitest/snapshot": {
-            "version": "2.1.5",
-            "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.5.tgz",
-            "integrity": "sha512-zmYw47mhfdfnYbuhkQvkkzYroXUumrwWDGlMjpdUr4jBd3HZiV2w7CQHj+z7AAS4VOtWxI4Zt4bWt4/sKcoIjg==",
+            "version": "2.1.6",
+            "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.6.tgz",
+            "integrity": "sha512-5JTWHw8iS9l3v4/VSuthCndw1lN/hpPB+mlgn1BUhFbobeIUj1J1V/Bj2t2ovGEmkXLTckFjQddsxS5T6LuVWw==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@vitest/pretty-format": "2.1.5",
+                "@vitest/pretty-format": "2.1.6",
                 "magic-string": "^0.30.12",
                 "pathe": "^1.1.2"
             },
@@ -1624,9 +1624,9 @@
             }
         },
         "node_modules/@vitest/spy": {
-            "version": "2.1.5",
-            "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.5.tgz",
-            "integrity": "sha512-aWZF3P0r3w6DiYTVskOYuhBc7EMc3jvn1TkBg8ttylFFRqNN2XGD7V5a4aQdk6QiUzZQ4klNBSpCLJgWNdIiNw==",
+            "version": "2.1.6",
+            "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.6.tgz",
+            "integrity": "sha512-oTFObV8bd4SDdRka5O+mSh5w9irgx5IetrD5i+OsUUsk/shsBoHifwCzy45SAORzAhtNiprUVaK3hSCCzZh1jQ==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
@@ -1637,13 +1637,13 @@
             }
         },
         "node_modules/@vitest/utils": {
-            "version": "2.1.5",
-            "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.5.tgz",
-            "integrity": "sha512-yfj6Yrp0Vesw2cwJbP+cl04OC+IHFsuQsrsJBL9pyGeQXE56v1UAOQco+SR55Vf1nQzfV0QJg1Qum7AaWUwwYg==",
+            "version": "2.1.6",
+            "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.6.tgz",
+            "integrity": "sha512-ixNkFy3k4vokOUTU2blIUvOgKq/N2PW8vKIjZZYsGJCMX69MRa9J2sKqX5hY/k5O5Gty3YJChepkqZ3KM9LyIQ==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@vitest/pretty-format": "2.1.5",
+                "@vitest/pretty-format": "2.1.6",
                 "loupe": "^3.1.2",
                 "tinyrainbow": "^1.2.0"
             },
@@ -5667,9 +5667,9 @@
             }
         },
         "node_modules/vite-node": {
-            "version": "2.1.5",
-            "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.5.tgz",
-            "integrity": "sha512-rd0QIgx74q4S1Rd56XIiL2cYEdyWn13cunYBIuqh9mpmQr7gGS0IxXoP8R6OaZtNQQLyXSWbd4rXKYUbhFpK5w==",
+            "version": "2.1.6",
+            "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.6.tgz",
+            "integrity": "sha512-DBfJY0n9JUwnyLxPSSUmEePT21j8JZp/sR9n+/gBwQU6DcQOioPdb8/pibWfXForbirSagZCilseYIwaL3f95A==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
@@ -5677,32 +5677,32 @@
                 "debug": "^4.3.7",
                 "es-module-lexer": "^1.5.4",
                 "pathe": "^1.1.2",
-                "vite": "^5.0.0"
+                "vite": "^5.0.0 || ^6.0.0"
             },
             "bin": {
                 "vite-node": "vite-node.mjs"
             },
             "engines": {
-                "node": "^18.0.0 || >=20.0.0"
+                "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
             },
             "funding": {
                 "url": "https://opencollective.com/vitest"
             }
         },
         "node_modules/vitest": {
-            "version": "2.1.5",
-            "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.5.tgz",
-            "integrity": "sha512-P4ljsdpuzRTPI/kbND2sDZ4VmieerR2c9szEZpjc+98Z9ebvnXmM5+0tHEKqYZumXqlvnmfWsjeFOjXVriDG7A==",
+            "version": "2.1.6",
+            "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.6.tgz",
+            "integrity": "sha512-isUCkvPL30J4c5O5hgONeFRsDmlw6kzFEdLQHLezmDdKQHy8Ke/B/dgdTMEgU0vm+iZ0TjW8GuK83DiahBoKWQ==",
             "dev": true,
             "license": "MIT",
             "dependencies": {
-                "@vitest/expect": "2.1.5",
-                "@vitest/mocker": "2.1.5",
-                "@vitest/pretty-format": "^2.1.5",
-                "@vitest/runner": "2.1.5",
-                "@vitest/snapshot": "2.1.5",
-                "@vitest/spy": "2.1.5",
-                "@vitest/utils": "2.1.5",
+                "@vitest/expect": "2.1.6",
+                "@vitest/mocker": "2.1.6",
+                "@vitest/pretty-format": "^2.1.6",
+                "@vitest/runner": "2.1.6",
+                "@vitest/snapshot": "2.1.6",
+                "@vitest/spy": "2.1.6",
+                "@vitest/utils": "2.1.6",
                 "chai": "^5.1.2",
                 "debug": "^4.3.7",
                 "expect-type": "^1.1.0",
@@ -5713,24 +5713,24 @@
                 "tinyexec": "^0.3.1",
                 "tinypool": "^1.0.1",
                 "tinyrainbow": "^1.2.0",
-                "vite": "^5.0.0",
-                "vite-node": "2.1.5",
+                "vite": "^5.0.0 || ^6.0.0",
+                "vite-node": "2.1.6",
                 "why-is-node-running": "^2.3.0"
             },
             "bin": {
                 "vitest": "vitest.mjs"
             },
             "engines": {
-                "node": "^18.0.0 || >=20.0.0"
+                "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
             },
             "funding": {
                 "url": "https://opencollective.com/vitest"
             },
             "peerDependencies": {
                 "@edge-runtime/vm": "*",
-                "@types/node": "^18.0.0 || >=20.0.0",
-                "@vitest/browser": "2.1.5",
-                "@vitest/ui": "2.1.5",
+                "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
+                "@vitest/browser": "2.1.6",
+                "@vitest/ui": "2.1.6",
                 "happy-dom": "*",
                 "jsdom": "*"
             },
@@ -5755,6 +5755,19 @@
                 }
             }
         },
+        "node_modules/vitest/node_modules/@vitest/pretty-format": {
+            "version": "2.1.8",
+            "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.8.tgz",
+            "integrity": "sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==",
+            "dev": true,
+            "license": "MIT",
+            "dependencies": {
+                "tinyrainbow": "^1.2.0"
+            },
+            "funding": {
+                "url": "https://opencollective.com/vitest"
+            }
+        },
         "node_modules/vscode-json-languageservice": {
             "version": "4.2.1",
             "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-4.2.1.tgz",
diff --git a/package.json b/package.json
index 2a40ab25..207398a7 100644
--- a/package.json
+++ b/package.json
@@ -27,7 +27,7 @@
         "typescript": "5.7.2",
         "typescript-eslint": "8.15.0",
         "vite": "5.4.11",
-        "vitest": "2.1.5"
+        "vitest": "2.1.6"
     },
     "homepage": "https://jellyfin.org/",
     "license": "GPL-2.0-or-later",