diff --git a/apps/config/package-lock.json b/apps/config/package-lock.json
index 9ec7382b..132df3dd 100644
--- a/apps/config/package-lock.json
+++ b/apps/config/package-lock.json
@@ -8,14 +8,14 @@
             "name": "eslint-conf",
             "version": "0.0.0",
             "dependencies": {
-                "@eslint/js": "9.25.0",
+                "@eslint/js": "9.25.1",
                 "@stylistic/eslint-plugin": "4.2.0",
-                "eslint": "9.25.0",
-                "eslint-plugin-jsdoc": "50.6.9",
+                "eslint": "9.25.1",
+                "eslint-plugin-jsdoc": "50.6.10",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
                 "typescript": "5.8.3",
-                "typescript-eslint": "8.30.1"
+                "typescript-eslint": "8.31.0"
             }
         },
         "node_modules/@es-joy/jsdoccomment": {
@@ -174,9 +174,9 @@
             }
         },
         "node_modules/@eslint/js": {
-            "version": "9.25.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.0.tgz",
-            "integrity": "sha512-iWhsUS8Wgxz9AXNfvfOPFSW4VfMXdVhp1hjkZVhXCrpgh/aLcc45rX6MPu+tIVUWDw0HfNwth7O28M1xDxNf9w==",
+            "version": "9.25.1",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.1.tgz",
+            "integrity": "sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -300,18 +300,6 @@
                 "node": ">= 8"
             }
         },
-        "node_modules/@pkgr/core": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz",
-            "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==",
-            "license": "MIT",
-            "engines": {
-                "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
-            },
-            "funding": {
-                "url": "https://opencollective.com/unts"
-            }
-        },
         "node_modules/@stylistic/eslint-plugin": {
             "version": "4.2.0",
             "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-4.2.0.tgz",
@@ -344,16 +332,16 @@
             "license": "MIT"
         },
         "node_modules/@typescript-eslint/eslint-plugin": {
-            "version": "8.30.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.30.1.tgz",
-            "integrity": "sha512-v+VWphxMjn+1t48/jO4t950D6KR8JaJuNXzi33Ve6P8sEmPr5k6CEXjdGwT6+LodVnEa91EQCtwjWNUCPweo+Q==",
+            "version": "8.31.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.31.0.tgz",
+            "integrity": "sha512-evaQJZ/J/S4wisevDvC1KFZkPzRetH8kYZbkgcTRyql3mcKsf+ZFDV1BVWUGTCAW5pQHoqn5gK5b8kn7ou9aFQ==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/regexpp": "^4.10.0",
-                "@typescript-eslint/scope-manager": "8.30.1",
-                "@typescript-eslint/type-utils": "8.30.1",
-                "@typescript-eslint/utils": "8.30.1",
-                "@typescript-eslint/visitor-keys": "8.30.1",
+                "@typescript-eslint/scope-manager": "8.31.0",
+                "@typescript-eslint/type-utils": "8.31.0",
+                "@typescript-eslint/utils": "8.31.0",
+                "@typescript-eslint/visitor-keys": "8.31.0",
                 "graphemer": "^1.4.0",
                 "ignore": "^5.3.1",
                 "natural-compare": "^1.4.0",
@@ -373,15 +361,15 @@
             }
         },
         "node_modules/@typescript-eslint/parser": {
-            "version": "8.30.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.30.1.tgz",
-            "integrity": "sha512-H+vqmWwT5xoNrXqWs/fesmssOW70gxFlgcMlYcBaWNPIEWDgLa4W9nkSPmhuOgLnXq9QYgkZ31fhDyLhleCsAg==",
+            "version": "8.31.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.31.0.tgz",
+            "integrity": "sha512-67kYYShjBR0jNI5vsf/c3WG4u+zDnCTHTPqVMQguffaWWFs7artgwKmfwdifl+r6XyM5LYLas/dInj2T0SgJyw==",
             "license": "MIT",
             "dependencies": {
-                "@typescript-eslint/scope-manager": "8.30.1",
-                "@typescript-eslint/types": "8.30.1",
-                "@typescript-eslint/typescript-estree": "8.30.1",
-                "@typescript-eslint/visitor-keys": "8.30.1",
+                "@typescript-eslint/scope-manager": "8.31.0",
+                "@typescript-eslint/types": "8.31.0",
+                "@typescript-eslint/typescript-estree": "8.31.0",
+                "@typescript-eslint/visitor-keys": "8.31.0",
                 "debug": "^4.3.4"
             },
             "engines": {
@@ -397,13 +385,13 @@
             }
         },
         "node_modules/@typescript-eslint/scope-manager": {
-            "version": "8.30.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.30.1.tgz",
-            "integrity": "sha512-+C0B6ChFXZkuaNDl73FJxRYT0G7ufVPOSQkqkpM/U198wUwUFOtgo1k/QzFh1KjpBitaK7R1tgjVz6o9HmsRPg==",
+            "version": "8.31.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.31.0.tgz",
+            "integrity": "sha512-knO8UyF78Nt8O/B64i7TlGXod69ko7z6vJD9uhSlm0qkAbGeRUSudcm0+K/4CrRjrpiHfBCjMWlc08Vav1xwcw==",
             "license": "MIT",
             "dependencies": {
-                "@typescript-eslint/types": "8.30.1",
-                "@typescript-eslint/visitor-keys": "8.30.1"
+                "@typescript-eslint/types": "8.31.0",
+                "@typescript-eslint/visitor-keys": "8.31.0"
             },
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -414,13 +402,13 @@
             }
         },
         "node_modules/@typescript-eslint/type-utils": {
-            "version": "8.30.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.30.1.tgz",
-            "integrity": "sha512-64uBF76bfQiJyHgZISC7vcNz3adqQKIccVoKubyQcOnNcdJBvYOILV1v22Qhsw3tw3VQu5ll8ND6hycgAR5fEA==",
+            "version": "8.31.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.31.0.tgz",
+            "integrity": "sha512-DJ1N1GdjI7IS7uRlzJuEDCgDQix3ZVYVtgeWEyhyn4iaoitpMBX6Ndd488mXSx0xah/cONAkEaYyylDyAeHMHg==",
             "license": "MIT",
             "dependencies": {
-                "@typescript-eslint/typescript-estree": "8.30.1",
-                "@typescript-eslint/utils": "8.30.1",
+                "@typescript-eslint/typescript-estree": "8.31.0",
+                "@typescript-eslint/utils": "8.31.0",
                 "debug": "^4.3.4",
                 "ts-api-utils": "^2.0.1"
             },
@@ -437,9 +425,9 @@
             }
         },
         "node_modules/@typescript-eslint/types": {
-            "version": "8.30.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.30.1.tgz",
-            "integrity": "sha512-81KawPfkuulyWo5QdyG/LOKbspyyiW+p4vpn4bYO7DM/hZImlVnFwrpCTnmNMOt8CvLRr5ojI9nU1Ekpw4RcEw==",
+            "version": "8.31.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.31.0.tgz",
+            "integrity": "sha512-Ch8oSjVyYyJxPQk8pMiP2FFGYatqXQfQIaMp+TpuuLlDachRWpUAeEu1u9B/v/8LToehUIWyiKcA/w5hUFRKuQ==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -450,13 +438,13 @@
             }
         },
         "node_modules/@typescript-eslint/typescript-estree": {
-            "version": "8.30.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.30.1.tgz",
-            "integrity": "sha512-kQQnxymiUy9tTb1F2uep9W6aBiYODgq5EMSk6Nxh4Z+BDUoYUSa029ISs5zTzKBFnexQEh71KqwjKnRz58lusQ==",
+            "version": "8.31.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.31.0.tgz",
+            "integrity": "sha512-xLmgn4Yl46xi6aDSZ9KkyfhhtnYI15/CvHbpOy/eR5NWhK/BK8wc709KKwhAR0m4ZKRP7h07bm4BWUYOCuRpQQ==",
             "license": "MIT",
             "dependencies": {
-                "@typescript-eslint/types": "8.30.1",
-                "@typescript-eslint/visitor-keys": "8.30.1",
+                "@typescript-eslint/types": "8.31.0",
+                "@typescript-eslint/visitor-keys": "8.31.0",
                 "debug": "^4.3.4",
                 "fast-glob": "^3.3.2",
                 "is-glob": "^4.0.3",
@@ -476,15 +464,15 @@
             }
         },
         "node_modules/@typescript-eslint/utils": {
-            "version": "8.30.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.30.1.tgz",
-            "integrity": "sha512-T/8q4R9En2tcEsWPQgB5BQ0XJVOtfARcUvOa8yJP3fh9M/mXraLxZrkCfGb6ChrO/V3W+Xbd04RacUEqk1CFEQ==",
+            "version": "8.31.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.31.0.tgz",
+            "integrity": "sha512-qi6uPLt9cjTFxAb1zGNgTob4x9ur7xC6mHQJ8GwEzGMGE9tYniublmJaowOJ9V2jUzxrltTPfdG2nKlWsq0+Ww==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.4.0",
-                "@typescript-eslint/scope-manager": "8.30.1",
-                "@typescript-eslint/types": "8.30.1",
-                "@typescript-eslint/typescript-estree": "8.30.1"
+                "@typescript-eslint/scope-manager": "8.31.0",
+                "@typescript-eslint/types": "8.31.0",
+                "@typescript-eslint/typescript-estree": "8.31.0"
             },
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -499,12 +487,12 @@
             }
         },
         "node_modules/@typescript-eslint/visitor-keys": {
-            "version": "8.30.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.30.1.tgz",
-            "integrity": "sha512-aEhgas7aJ6vZnNFC7K4/vMGDGyOiqWcYZPpIWrTKuTAlsvDNKy2GFDqh9smL+iq069ZvR0YzEeq0B8NJlLzjFA==",
+            "version": "8.31.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.31.0.tgz",
+            "integrity": "sha512-QcGHmlRHWOl93o64ZUMNewCdwKGU6WItOU52H0djgNmn1EOrhVudrDzXz4OycCRSCPwFCDrE2iIt5vmuUdHxuQ==",
             "license": "MIT",
             "dependencies": {
-                "@typescript-eslint/types": "8.30.1",
+                "@typescript-eslint/types": "8.31.0",
                 "eslint-visitor-keys": "^4.2.0"
             },
             "engines": {
@@ -710,12 +698,6 @@
             "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
             "license": "MIT"
         },
-        "node_modules/es-module-lexer": {
-            "version": "1.6.0",
-            "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz",
-            "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==",
-            "license": "MIT"
-        },
         "node_modules/escape-string-regexp": {
             "version": "4.0.0",
             "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
@@ -729,9 +711,9 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.25.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.0.tgz",
-            "integrity": "sha512-MsBdObhM4cEwkzCiraDv7A6txFXEqtNXOb877TsSp2FCkBNl8JfVQrmiuDqC1IkejT6JLPzYBXx/xAiYhyzgGA==",
+            "version": "9.25.1",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.1.tgz",
+            "integrity": "sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
@@ -740,7 +722,7 @@
                 "@eslint/config-helpers": "^0.2.1",
                 "@eslint/core": "^0.13.0",
                 "@eslint/eslintrc": "^3.3.1",
-                "@eslint/js": "9.25.0",
+                "@eslint/js": "9.25.1",
                 "@eslint/plugin-kit": "^0.2.8",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
@@ -789,9 +771,9 @@
             }
         },
         "node_modules/eslint-plugin-jsdoc": {
-            "version": "50.6.9",
-            "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.9.tgz",
-            "integrity": "sha512-7/nHu3FWD4QRG8tCVqcv+BfFtctUtEDWc29oeDXB4bwmDM2/r1ndl14AG/2DUntdqH7qmpvdemJKwb3R97/QEw==",
+            "version": "50.6.10",
+            "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.10.tgz",
+            "integrity": "sha512-HJRMrRIXjWtDyU6yar8xvdKMc1waSAfE6vRjEWBpws6pYeoVyCFtQQneEBnQkHXOV60idH5ymo/bh1XNBOTQmA==",
             "license": "BSD-3-Clause",
             "dependencies": {
                 "@es-joy/jsdoccomment": "~0.49.0",
@@ -801,10 +783,9 @@
                 "escape-string-regexp": "^4.0.0",
                 "espree": "^10.1.0",
                 "esquery": "^1.6.0",
-                "parse-imports": "^2.1.1",
+                "parse-imports-exports": "^0.2.4",
                 "semver": "^7.6.3",
-                "spdx-expression-parse": "^4.0.0",
-                "synckit": "^0.9.1"
+                "spdx-expression-parse": "^4.0.0"
             },
             "engines": {
                 "node": ">=18"
@@ -1362,19 +1343,21 @@
                 "node": ">=6"
             }
         },
-        "node_modules/parse-imports": {
-            "version": "2.2.1",
-            "resolved": "https://registry.npmjs.org/parse-imports/-/parse-imports-2.2.1.tgz",
-            "integrity": "sha512-OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4JeQ==",
-            "license": "Apache-2.0 AND MIT",
+        "node_modules/parse-imports-exports": {
+            "version": "0.2.4",
+            "resolved": "https://registry.npmjs.org/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz",
+            "integrity": "sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==",
+            "license": "MIT",
             "dependencies": {
-                "es-module-lexer": "^1.5.3",
-                "slashes": "^3.0.12"
-            },
-            "engines": {
-                "node": ">= 18"
+                "parse-statements": "1.0.11"
             }
         },
+        "node_modules/parse-statements": {
+            "version": "1.0.11",
+            "resolved": "https://registry.npmjs.org/parse-statements/-/parse-statements-1.0.11.tgz",
+            "integrity": "sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==",
+            "license": "MIT"
+        },
         "node_modules/path-exists": {
             "version": "4.0.0",
             "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -1535,12 +1518,6 @@
                 "node": ">=8"
             }
         },
-        "node_modules/slashes": {
-            "version": "3.0.12",
-            "resolved": "https://registry.npmjs.org/slashes/-/slashes-3.0.12.tgz",
-            "integrity": "sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==",
-            "license": "ISC"
-        },
         "node_modules/spdx-exceptions": {
             "version": "2.5.0",
             "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
@@ -1587,22 +1564,6 @@
                 "node": ">=8"
             }
         },
-        "node_modules/synckit": {
-            "version": "0.9.2",
-            "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz",
-            "integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==",
-            "license": "MIT",
-            "dependencies": {
-                "@pkgr/core": "^0.1.0",
-                "tslib": "^2.6.2"
-            },
-            "engines": {
-                "node": "^14.18.0 || >=16.0.0"
-            },
-            "funding": {
-                "url": "https://opencollective.com/unts"
-            }
-        },
         "node_modules/to-regex-range": {
             "version": "5.0.1",
             "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -1627,12 +1588,6 @@
                 "typescript": ">=4.8.4"
             }
         },
-        "node_modules/tslib": {
-            "version": "2.8.1",
-            "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
-            "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
-            "license": "0BSD"
-        },
         "node_modules/type-check": {
             "version": "0.4.0",
             "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -1659,14 +1614,14 @@
             }
         },
         "node_modules/typescript-eslint": {
-            "version": "8.30.1",
-            "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.30.1.tgz",
-            "integrity": "sha512-D7lC0kcehVH7Mb26MRQi64LMyRJsj3dToJxM1+JVTl53DQSV5/7oUGWQLcKl1C1KnoVHxMMU2FNQMffr7F3Row==",
+            "version": "8.31.0",
+            "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.31.0.tgz",
+            "integrity": "sha512-u+93F0sB0An8WEAPtwxVhFby573E8ckdjwUUQUj9QA4v8JAvgtoDdIyYR3XFwFHq2W1KJ1AurwJCO+w+Y1ixyQ==",
             "license": "MIT",
             "dependencies": {
-                "@typescript-eslint/eslint-plugin": "8.30.1",
-                "@typescript-eslint/parser": "8.30.1",
-                "@typescript-eslint/utils": "8.30.1"
+                "@typescript-eslint/eslint-plugin": "8.31.0",
+                "@typescript-eslint/parser": "8.31.0",
+                "@typescript-eslint/utils": "8.31.0"
             },
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
diff --git a/apps/config/package.json b/apps/config/package.json
index 81a117a8..837d8a0a 100644
--- a/apps/config/package.json
+++ b/apps/config/package.json
@@ -4,13 +4,13 @@
     "type": "module",
     "exports": "./index.ts",
     "dependencies": {
-        "@eslint/js": "9.25.0",
+        "@eslint/js": "9.25.1",
         "@stylistic/eslint-plugin": "4.2.0",
-        "eslint": "9.25.0",
-        "eslint-plugin-jsdoc": "50.6.9",
+        "eslint": "9.25.1",
+        "eslint-plugin-jsdoc": "50.6.10",
         "jiti": "2.4.2",
         "pkg-types": "2.1.0",
         "typescript": "5.8.3",
-        "typescript-eslint": "8.30.1"
+        "typescript-eslint": "8.31.0"
     }
 }
diff --git a/apps/extract-subs/default.nix b/apps/extract-subs/default.nix
index 36e2db66..c7a93f22 100644
--- a/apps/extract-subs/default.nix
+++ b/apps/extract-subs/default.nix
@@ -5,7 +5,7 @@
 }:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-gDGieED+RReHmhnjd0BWREt2OSbPlknw4aCFci5Pj14=";
+  npmDepsHash = "sha256-bCmpfCyEcbrb11KQS+4nxiyetWQrHLRDA5MGs1D3c38=";
 
   runtimeInputs = [
     ffmpeg-full
diff --git a/apps/extract-subs/package-lock.json b/apps/extract-subs/package-lock.json
index ef24528b..ffcd2ff5 100644
--- a/apps/extract-subs/package-lock.json
+++ b/apps/extract-subs/package-lock.json
@@ -9,9 +9,9 @@
             "version": "0.0.0",
             "dependencies": {
                 "@types/fluent-ffmpeg": "2.1.27",
-                "@types/node": "22.14.1",
-                "esbuild": "0.25.2",
-                "eslint": "9.25.0",
+                "@types/node": "22.15.0",
+                "esbuild": "0.25.3",
+                "eslint": "9.25.1",
                 "fluent-ffmpeg": "2.1.3",
                 "jiti": "2.4.2",
                 "typescript": "5.8.3"
@@ -39,9 +39,9 @@
             }
         },
         "node_modules/@esbuild/aix-ppc64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz",
-            "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.3.tgz",
+            "integrity": "sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==",
             "cpu": [
                 "ppc64"
             ],
@@ -55,9 +55,9 @@
             }
         },
         "node_modules/@esbuild/android-arm": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz",
-            "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.3.tgz",
+            "integrity": "sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==",
             "cpu": [
                 "arm"
             ],
@@ -71,9 +71,9 @@
             }
         },
         "node_modules/@esbuild/android-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz",
-            "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.3.tgz",
+            "integrity": "sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==",
             "cpu": [
                 "arm64"
             ],
@@ -87,9 +87,9 @@
             }
         },
         "node_modules/@esbuild/android-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz",
-            "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.3.tgz",
+            "integrity": "sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==",
             "cpu": [
                 "x64"
             ],
@@ -103,9 +103,9 @@
             }
         },
         "node_modules/@esbuild/darwin-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz",
-            "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.3.tgz",
+            "integrity": "sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==",
             "cpu": [
                 "arm64"
             ],
@@ -119,9 +119,9 @@
             }
         },
         "node_modules/@esbuild/darwin-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz",
-            "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.3.tgz",
+            "integrity": "sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==",
             "cpu": [
                 "x64"
             ],
@@ -135,9 +135,9 @@
             }
         },
         "node_modules/@esbuild/freebsd-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz",
-            "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.3.tgz",
+            "integrity": "sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==",
             "cpu": [
                 "arm64"
             ],
@@ -151,9 +151,9 @@
             }
         },
         "node_modules/@esbuild/freebsd-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz",
-            "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.3.tgz",
+            "integrity": "sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==",
             "cpu": [
                 "x64"
             ],
@@ -167,9 +167,9 @@
             }
         },
         "node_modules/@esbuild/linux-arm": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz",
-            "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.3.tgz",
+            "integrity": "sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==",
             "cpu": [
                 "arm"
             ],
@@ -183,9 +183,9 @@
             }
         },
         "node_modules/@esbuild/linux-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz",
-            "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.3.tgz",
+            "integrity": "sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==",
             "cpu": [
                 "arm64"
             ],
@@ -199,9 +199,9 @@
             }
         },
         "node_modules/@esbuild/linux-ia32": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz",
-            "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.3.tgz",
+            "integrity": "sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==",
             "cpu": [
                 "ia32"
             ],
@@ -215,9 +215,9 @@
             }
         },
         "node_modules/@esbuild/linux-loong64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz",
-            "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.3.tgz",
+            "integrity": "sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==",
             "cpu": [
                 "loong64"
             ],
@@ -231,9 +231,9 @@
             }
         },
         "node_modules/@esbuild/linux-mips64el": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz",
-            "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.3.tgz",
+            "integrity": "sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==",
             "cpu": [
                 "mips64el"
             ],
@@ -247,9 +247,9 @@
             }
         },
         "node_modules/@esbuild/linux-ppc64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz",
-            "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.3.tgz",
+            "integrity": "sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==",
             "cpu": [
                 "ppc64"
             ],
@@ -263,9 +263,9 @@
             }
         },
         "node_modules/@esbuild/linux-riscv64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz",
-            "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.3.tgz",
+            "integrity": "sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==",
             "cpu": [
                 "riscv64"
             ],
@@ -279,9 +279,9 @@
             }
         },
         "node_modules/@esbuild/linux-s390x": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz",
-            "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.3.tgz",
+            "integrity": "sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==",
             "cpu": [
                 "s390x"
             ],
@@ -295,9 +295,9 @@
             }
         },
         "node_modules/@esbuild/linux-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz",
-            "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.3.tgz",
+            "integrity": "sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==",
             "cpu": [
                 "x64"
             ],
@@ -311,9 +311,9 @@
             }
         },
         "node_modules/@esbuild/netbsd-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz",
-            "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.3.tgz",
+            "integrity": "sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==",
             "cpu": [
                 "arm64"
             ],
@@ -327,9 +327,9 @@
             }
         },
         "node_modules/@esbuild/netbsd-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz",
-            "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.3.tgz",
+            "integrity": "sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==",
             "cpu": [
                 "x64"
             ],
@@ -343,9 +343,9 @@
             }
         },
         "node_modules/@esbuild/openbsd-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz",
-            "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.3.tgz",
+            "integrity": "sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==",
             "cpu": [
                 "arm64"
             ],
@@ -359,9 +359,9 @@
             }
         },
         "node_modules/@esbuild/openbsd-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz",
-            "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.3.tgz",
+            "integrity": "sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==",
             "cpu": [
                 "x64"
             ],
@@ -375,9 +375,9 @@
             }
         },
         "node_modules/@esbuild/sunos-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz",
-            "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.3.tgz",
+            "integrity": "sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==",
             "cpu": [
                 "x64"
             ],
@@ -391,9 +391,9 @@
             }
         },
         "node_modules/@esbuild/win32-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz",
-            "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.3.tgz",
+            "integrity": "sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==",
             "cpu": [
                 "arm64"
             ],
@@ -407,9 +407,9 @@
             }
         },
         "node_modules/@esbuild/win32-ia32": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz",
-            "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.3.tgz",
+            "integrity": "sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==",
             "cpu": [
                 "ia32"
             ],
@@ -423,9 +423,9 @@
             }
         },
         "node_modules/@esbuild/win32-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz",
-            "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.3.tgz",
+            "integrity": "sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==",
             "cpu": [
                 "x64"
             ],
@@ -536,9 +536,9 @@
             }
         },
         "node_modules/@eslint/js": {
-            "version": "9.25.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.0.tgz",
-            "integrity": "sha512-iWhsUS8Wgxz9AXNfvfOPFSW4VfMXdVhp1hjkZVhXCrpgh/aLcc45rX6MPu+tIVUWDw0HfNwth7O28M1xDxNf9w==",
+            "version": "9.25.1",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.1.tgz",
+            "integrity": "sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -649,9 +649,9 @@
             "license": "MIT"
         },
         "node_modules/@types/node": {
-            "version": "22.14.1",
-            "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz",
-            "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==",
+            "version": "22.15.0",
+            "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.0.tgz",
+            "integrity": "sha512-99S8dWD2DkeE6PBaEDw+In3aar7hdoBvjyJMR6vaKBTzpvR0P00ClzJMOoVrj9D2+Sy/YCwACYHnBTpMhg1UCA==",
             "license": "MIT",
             "dependencies": {
                 "undici-types": "~6.21.0"
@@ -823,9 +823,9 @@
             "license": "MIT"
         },
         "node_modules/esbuild": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz",
-            "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.3.tgz",
+            "integrity": "sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==",
             "hasInstallScript": true,
             "license": "MIT",
             "bin": {
@@ -835,31 +835,31 @@
                 "node": ">=18"
             },
             "optionalDependencies": {
-                "@esbuild/aix-ppc64": "0.25.2",
-                "@esbuild/android-arm": "0.25.2",
-                "@esbuild/android-arm64": "0.25.2",
-                "@esbuild/android-x64": "0.25.2",
-                "@esbuild/darwin-arm64": "0.25.2",
-                "@esbuild/darwin-x64": "0.25.2",
-                "@esbuild/freebsd-arm64": "0.25.2",
-                "@esbuild/freebsd-x64": "0.25.2",
-                "@esbuild/linux-arm": "0.25.2",
-                "@esbuild/linux-arm64": "0.25.2",
-                "@esbuild/linux-ia32": "0.25.2",
-                "@esbuild/linux-loong64": "0.25.2",
-                "@esbuild/linux-mips64el": "0.25.2",
-                "@esbuild/linux-ppc64": "0.25.2",
-                "@esbuild/linux-riscv64": "0.25.2",
-                "@esbuild/linux-s390x": "0.25.2",
-                "@esbuild/linux-x64": "0.25.2",
-                "@esbuild/netbsd-arm64": "0.25.2",
-                "@esbuild/netbsd-x64": "0.25.2",
-                "@esbuild/openbsd-arm64": "0.25.2",
-                "@esbuild/openbsd-x64": "0.25.2",
-                "@esbuild/sunos-x64": "0.25.2",
-                "@esbuild/win32-arm64": "0.25.2",
-                "@esbuild/win32-ia32": "0.25.2",
-                "@esbuild/win32-x64": "0.25.2"
+                "@esbuild/aix-ppc64": "0.25.3",
+                "@esbuild/android-arm": "0.25.3",
+                "@esbuild/android-arm64": "0.25.3",
+                "@esbuild/android-x64": "0.25.3",
+                "@esbuild/darwin-arm64": "0.25.3",
+                "@esbuild/darwin-x64": "0.25.3",
+                "@esbuild/freebsd-arm64": "0.25.3",
+                "@esbuild/freebsd-x64": "0.25.3",
+                "@esbuild/linux-arm": "0.25.3",
+                "@esbuild/linux-arm64": "0.25.3",
+                "@esbuild/linux-ia32": "0.25.3",
+                "@esbuild/linux-loong64": "0.25.3",
+                "@esbuild/linux-mips64el": "0.25.3",
+                "@esbuild/linux-ppc64": "0.25.3",
+                "@esbuild/linux-riscv64": "0.25.3",
+                "@esbuild/linux-s390x": "0.25.3",
+                "@esbuild/linux-x64": "0.25.3",
+                "@esbuild/netbsd-arm64": "0.25.3",
+                "@esbuild/netbsd-x64": "0.25.3",
+                "@esbuild/openbsd-arm64": "0.25.3",
+                "@esbuild/openbsd-x64": "0.25.3",
+                "@esbuild/sunos-x64": "0.25.3",
+                "@esbuild/win32-arm64": "0.25.3",
+                "@esbuild/win32-ia32": "0.25.3",
+                "@esbuild/win32-x64": "0.25.3"
             }
         },
         "node_modules/escape-string-regexp": {
@@ -875,9 +875,9 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.25.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.0.tgz",
-            "integrity": "sha512-MsBdObhM4cEwkzCiraDv7A6txFXEqtNXOb877TsSp2FCkBNl8JfVQrmiuDqC1IkejT6JLPzYBXx/xAiYhyzgGA==",
+            "version": "9.25.1",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.1.tgz",
+            "integrity": "sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
@@ -886,7 +886,7 @@
                 "@eslint/config-helpers": "^0.2.1",
                 "@eslint/core": "^0.13.0",
                 "@eslint/eslintrc": "^3.3.1",
-                "@eslint/js": "9.25.0",
+                "@eslint/js": "9.25.1",
                 "@eslint/plugin-kit": "^0.2.8",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
diff --git a/apps/extract-subs/package.json b/apps/extract-subs/package.json
index 72f349c3..3397d548 100644
--- a/apps/extract-subs/package.json
+++ b/apps/extract-subs/package.json
@@ -9,9 +9,9 @@
     "dependencies": {
         "@types/fluent-ffmpeg": "2.1.27",
         "fluent-ffmpeg": "2.1.3",
-        "@types/node": "22.14.1",
-        "esbuild": "0.25.2",
-        "eslint": "9.25.0",
+        "@types/node": "22.15.0",
+        "esbuild": "0.25.3",
+        "eslint": "9.25.1",
         "jiti": "2.4.2",
         "typescript": "5.8.3"
     },
diff --git a/apps/list2series/default.nix b/apps/list2series/default.nix
index 3663ec97..b80baeca 100644
--- a/apps/list2series/default.nix
+++ b/apps/list2series/default.nix
@@ -1,7 +1,7 @@
 {buildApp, ...}:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-lFAf1jUqonnOtKqTi1rOX/2He0fA/uC3i09GS1ajDPE=";
+  npmDepsHash = "sha256-jZc+bjYzI9ef5lw2PGp4CDa2nbTTJ2nOZeWt6ftRgww=";
 
   runtimeInputs = [];
 
diff --git a/apps/list2series/package-lock.json b/apps/list2series/package-lock.json
index 29a44b4d..57d1c7ff 100644
--- a/apps/list2series/package-lock.json
+++ b/apps/list2series/package-lock.json
@@ -8,10 +8,10 @@
             "name": "list2series",
             "version": "0.0.0",
             "dependencies": {
-                "@types/node": "22.14.1",
-                "axios": "1.8.4",
-                "esbuild": "0.25.2",
-                "eslint": "9.25.0",
+                "@types/node": "22.15.0",
+                "axios": "1.9.0",
+                "esbuild": "0.25.3",
+                "eslint": "9.25.1",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
                 "typescript": "5.8.3"
@@ -28,20 +28,20 @@
             "version": "0.0.0",
             "dev": true,
             "dependencies": {
-                "@eslint/js": "9.25.0",
+                "@eslint/js": "9.25.1",
                 "@stylistic/eslint-plugin": "4.2.0",
-                "eslint": "9.25.0",
-                "eslint-plugin-jsdoc": "50.6.9",
+                "eslint": "9.25.1",
+                "eslint-plugin-jsdoc": "50.6.10",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
                 "typescript": "5.8.3",
-                "typescript-eslint": "8.30.1"
+                "typescript-eslint": "8.31.0"
             }
         },
         "node_modules/@esbuild/aix-ppc64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz",
-            "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.3.tgz",
+            "integrity": "sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==",
             "cpu": [
                 "ppc64"
             ],
@@ -55,9 +55,9 @@
             }
         },
         "node_modules/@esbuild/android-arm": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz",
-            "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.3.tgz",
+            "integrity": "sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==",
             "cpu": [
                 "arm"
             ],
@@ -71,9 +71,9 @@
             }
         },
         "node_modules/@esbuild/android-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz",
-            "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.3.tgz",
+            "integrity": "sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==",
             "cpu": [
                 "arm64"
             ],
@@ -87,9 +87,9 @@
             }
         },
         "node_modules/@esbuild/android-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz",
-            "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.3.tgz",
+            "integrity": "sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==",
             "cpu": [
                 "x64"
             ],
@@ -103,9 +103,9 @@
             }
         },
         "node_modules/@esbuild/darwin-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz",
-            "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.3.tgz",
+            "integrity": "sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==",
             "cpu": [
                 "arm64"
             ],
@@ -119,9 +119,9 @@
             }
         },
         "node_modules/@esbuild/darwin-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz",
-            "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.3.tgz",
+            "integrity": "sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==",
             "cpu": [
                 "x64"
             ],
@@ -135,9 +135,9 @@
             }
         },
         "node_modules/@esbuild/freebsd-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz",
-            "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.3.tgz",
+            "integrity": "sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==",
             "cpu": [
                 "arm64"
             ],
@@ -151,9 +151,9 @@
             }
         },
         "node_modules/@esbuild/freebsd-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz",
-            "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.3.tgz",
+            "integrity": "sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==",
             "cpu": [
                 "x64"
             ],
@@ -167,9 +167,9 @@
             }
         },
         "node_modules/@esbuild/linux-arm": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz",
-            "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.3.tgz",
+            "integrity": "sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==",
             "cpu": [
                 "arm"
             ],
@@ -183,9 +183,9 @@
             }
         },
         "node_modules/@esbuild/linux-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz",
-            "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.3.tgz",
+            "integrity": "sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==",
             "cpu": [
                 "arm64"
             ],
@@ -199,9 +199,9 @@
             }
         },
         "node_modules/@esbuild/linux-ia32": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz",
-            "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.3.tgz",
+            "integrity": "sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==",
             "cpu": [
                 "ia32"
             ],
@@ -215,9 +215,9 @@
             }
         },
         "node_modules/@esbuild/linux-loong64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz",
-            "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.3.tgz",
+            "integrity": "sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==",
             "cpu": [
                 "loong64"
             ],
@@ -231,9 +231,9 @@
             }
         },
         "node_modules/@esbuild/linux-mips64el": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz",
-            "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.3.tgz",
+            "integrity": "sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==",
             "cpu": [
                 "mips64el"
             ],
@@ -247,9 +247,9 @@
             }
         },
         "node_modules/@esbuild/linux-ppc64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz",
-            "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.3.tgz",
+            "integrity": "sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==",
             "cpu": [
                 "ppc64"
             ],
@@ -263,9 +263,9 @@
             }
         },
         "node_modules/@esbuild/linux-riscv64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz",
-            "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.3.tgz",
+            "integrity": "sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==",
             "cpu": [
                 "riscv64"
             ],
@@ -279,9 +279,9 @@
             }
         },
         "node_modules/@esbuild/linux-s390x": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz",
-            "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.3.tgz",
+            "integrity": "sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==",
             "cpu": [
                 "s390x"
             ],
@@ -295,9 +295,9 @@
             }
         },
         "node_modules/@esbuild/linux-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz",
-            "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.3.tgz",
+            "integrity": "sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==",
             "cpu": [
                 "x64"
             ],
@@ -311,9 +311,9 @@
             }
         },
         "node_modules/@esbuild/netbsd-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz",
-            "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.3.tgz",
+            "integrity": "sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==",
             "cpu": [
                 "arm64"
             ],
@@ -327,9 +327,9 @@
             }
         },
         "node_modules/@esbuild/netbsd-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz",
-            "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.3.tgz",
+            "integrity": "sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==",
             "cpu": [
                 "x64"
             ],
@@ -343,9 +343,9 @@
             }
         },
         "node_modules/@esbuild/openbsd-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz",
-            "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.3.tgz",
+            "integrity": "sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==",
             "cpu": [
                 "arm64"
             ],
@@ -359,9 +359,9 @@
             }
         },
         "node_modules/@esbuild/openbsd-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz",
-            "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.3.tgz",
+            "integrity": "sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==",
             "cpu": [
                 "x64"
             ],
@@ -375,9 +375,9 @@
             }
         },
         "node_modules/@esbuild/sunos-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz",
-            "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.3.tgz",
+            "integrity": "sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==",
             "cpu": [
                 "x64"
             ],
@@ -391,9 +391,9 @@
             }
         },
         "node_modules/@esbuild/win32-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz",
-            "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.3.tgz",
+            "integrity": "sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==",
             "cpu": [
                 "arm64"
             ],
@@ -407,9 +407,9 @@
             }
         },
         "node_modules/@esbuild/win32-ia32": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz",
-            "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.3.tgz",
+            "integrity": "sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==",
             "cpu": [
                 "ia32"
             ],
@@ -423,9 +423,9 @@
             }
         },
         "node_modules/@esbuild/win32-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz",
-            "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.3.tgz",
+            "integrity": "sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==",
             "cpu": [
                 "x64"
             ],
@@ -536,9 +536,9 @@
             }
         },
         "node_modules/@eslint/js": {
-            "version": "9.25.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.0.tgz",
-            "integrity": "sha512-iWhsUS8Wgxz9AXNfvfOPFSW4VfMXdVhp1hjkZVhXCrpgh/aLcc45rX6MPu+tIVUWDw0HfNwth7O28M1xDxNf9w==",
+            "version": "9.25.1",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.1.tgz",
+            "integrity": "sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -640,9 +640,9 @@
             "license": "MIT"
         },
         "node_modules/@types/node": {
-            "version": "22.14.1",
-            "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz",
-            "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==",
+            "version": "22.15.0",
+            "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.0.tgz",
+            "integrity": "sha512-99S8dWD2DkeE6PBaEDw+In3aar7hdoBvjyJMR6vaKBTzpvR0P00ClzJMOoVrj9D2+Sy/YCwACYHnBTpMhg1UCA==",
             "license": "MIT",
             "dependencies": {
                 "undici-types": "~6.21.0"
@@ -713,9 +713,9 @@
             "license": "MIT"
         },
         "node_modules/axios": {
-            "version": "1.8.4",
-            "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz",
-            "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==",
+            "version": "1.9.0",
+            "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz",
+            "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==",
             "license": "MIT",
             "dependencies": {
                 "follow-redirects": "^1.15.6",
@@ -925,9 +925,9 @@
             }
         },
         "node_modules/esbuild": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz",
-            "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.3.tgz",
+            "integrity": "sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==",
             "hasInstallScript": true,
             "license": "MIT",
             "bin": {
@@ -937,31 +937,31 @@
                 "node": ">=18"
             },
             "optionalDependencies": {
-                "@esbuild/aix-ppc64": "0.25.2",
-                "@esbuild/android-arm": "0.25.2",
-                "@esbuild/android-arm64": "0.25.2",
-                "@esbuild/android-x64": "0.25.2",
-                "@esbuild/darwin-arm64": "0.25.2",
-                "@esbuild/darwin-x64": "0.25.2",
-                "@esbuild/freebsd-arm64": "0.25.2",
-                "@esbuild/freebsd-x64": "0.25.2",
-                "@esbuild/linux-arm": "0.25.2",
-                "@esbuild/linux-arm64": "0.25.2",
-                "@esbuild/linux-ia32": "0.25.2",
-                "@esbuild/linux-loong64": "0.25.2",
-                "@esbuild/linux-mips64el": "0.25.2",
-                "@esbuild/linux-ppc64": "0.25.2",
-                "@esbuild/linux-riscv64": "0.25.2",
-                "@esbuild/linux-s390x": "0.25.2",
-                "@esbuild/linux-x64": "0.25.2",
-                "@esbuild/netbsd-arm64": "0.25.2",
-                "@esbuild/netbsd-x64": "0.25.2",
-                "@esbuild/openbsd-arm64": "0.25.2",
-                "@esbuild/openbsd-x64": "0.25.2",
-                "@esbuild/sunos-x64": "0.25.2",
-                "@esbuild/win32-arm64": "0.25.2",
-                "@esbuild/win32-ia32": "0.25.2",
-                "@esbuild/win32-x64": "0.25.2"
+                "@esbuild/aix-ppc64": "0.25.3",
+                "@esbuild/android-arm": "0.25.3",
+                "@esbuild/android-arm64": "0.25.3",
+                "@esbuild/android-x64": "0.25.3",
+                "@esbuild/darwin-arm64": "0.25.3",
+                "@esbuild/darwin-x64": "0.25.3",
+                "@esbuild/freebsd-arm64": "0.25.3",
+                "@esbuild/freebsd-x64": "0.25.3",
+                "@esbuild/linux-arm": "0.25.3",
+                "@esbuild/linux-arm64": "0.25.3",
+                "@esbuild/linux-ia32": "0.25.3",
+                "@esbuild/linux-loong64": "0.25.3",
+                "@esbuild/linux-mips64el": "0.25.3",
+                "@esbuild/linux-ppc64": "0.25.3",
+                "@esbuild/linux-riscv64": "0.25.3",
+                "@esbuild/linux-s390x": "0.25.3",
+                "@esbuild/linux-x64": "0.25.3",
+                "@esbuild/netbsd-arm64": "0.25.3",
+                "@esbuild/netbsd-x64": "0.25.3",
+                "@esbuild/openbsd-arm64": "0.25.3",
+                "@esbuild/openbsd-x64": "0.25.3",
+                "@esbuild/sunos-x64": "0.25.3",
+                "@esbuild/win32-arm64": "0.25.3",
+                "@esbuild/win32-ia32": "0.25.3",
+                "@esbuild/win32-x64": "0.25.3"
             }
         },
         "node_modules/escape-string-regexp": {
@@ -977,9 +977,9 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.25.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.0.tgz",
-            "integrity": "sha512-MsBdObhM4cEwkzCiraDv7A6txFXEqtNXOb877TsSp2FCkBNl8JfVQrmiuDqC1IkejT6JLPzYBXx/xAiYhyzgGA==",
+            "version": "9.25.1",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.1.tgz",
+            "integrity": "sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
@@ -988,7 +988,7 @@
                 "@eslint/config-helpers": "^0.2.1",
                 "@eslint/core": "^0.13.0",
                 "@eslint/eslintrc": "^3.3.1",
-                "@eslint/js": "9.25.0",
+                "@eslint/js": "9.25.1",
                 "@eslint/plugin-kit": "^0.2.8",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
diff --git a/apps/list2series/package.json b/apps/list2series/package.json
index 296fb2e9..59f91898 100644
--- a/apps/list2series/package.json
+++ b/apps/list2series/package.json
@@ -7,10 +7,10 @@
         "build": "node_ver=$(node -v); esbuild src/app.ts --bundle --platform=node --target=\"node${node_ver:1:2}\" --outfile=out/bin/app.cjs"
     },
     "dependencies": {
-        "@types/node": "22.14.1",
-        "axios": "1.8.4",
-        "esbuild": "0.25.2",
-        "eslint": "9.25.0",
+        "@types/node": "22.15.0",
+        "axios": "1.9.0",
+        "esbuild": "0.25.3",
+        "eslint": "9.25.1",
         "jiti": "2.4.2",
         "pkg-types": "2.1.0",
         "typescript": "5.8.3"
diff --git a/apps/mc-mods/default.nix b/apps/mc-mods/default.nix
index 3ace1134..c5922079 100644
--- a/apps/mc-mods/default.nix
+++ b/apps/mc-mods/default.nix
@@ -5,7 +5,7 @@
 }:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-s5c8hgdGPrYAIw0ov0Gn36vO1leLy4VfuWH9GmyqipE=";
+  npmDepsHash = "sha256-kysYHgQ/kMm6Jt2mCQlnP5YEh8GKTRgRfW/YMFQUFuU=";
 
   runtimeInputs = [
     nodejs_latest
diff --git a/apps/mc-mods/package-lock.json b/apps/mc-mods/package-lock.json
index f617849b..bfa36c94 100644
--- a/apps/mc-mods/package-lock.json
+++ b/apps/mc-mods/package-lock.json
@@ -8,9 +8,9 @@
             "name": "mc-mods",
             "version": "0.0.0",
             "dependencies": {
-                "@types/node": "22.14.1",
-                "esbuild": "0.25.2",
-                "eslint": "9.25.0",
+                "@types/node": "22.15.0",
+                "esbuild": "0.25.3",
+                "eslint": "9.25.1",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
                 "typescript": "5.8.3"
@@ -27,20 +27,20 @@
             "version": "0.0.0",
             "dev": true,
             "dependencies": {
-                "@eslint/js": "9.25.0",
+                "@eslint/js": "9.25.1",
                 "@stylistic/eslint-plugin": "4.2.0",
-                "eslint": "9.25.0",
-                "eslint-plugin-jsdoc": "50.6.9",
+                "eslint": "9.25.1",
+                "eslint-plugin-jsdoc": "50.6.10",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
                 "typescript": "5.8.3",
-                "typescript-eslint": "8.30.1"
+                "typescript-eslint": "8.31.0"
             }
         },
         "node_modules/@esbuild/aix-ppc64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz",
-            "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.3.tgz",
+            "integrity": "sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==",
             "cpu": [
                 "ppc64"
             ],
@@ -54,9 +54,9 @@
             }
         },
         "node_modules/@esbuild/android-arm": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz",
-            "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.3.tgz",
+            "integrity": "sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==",
             "cpu": [
                 "arm"
             ],
@@ -70,9 +70,9 @@
             }
         },
         "node_modules/@esbuild/android-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz",
-            "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.3.tgz",
+            "integrity": "sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==",
             "cpu": [
                 "arm64"
             ],
@@ -86,9 +86,9 @@
             }
         },
         "node_modules/@esbuild/android-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz",
-            "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.3.tgz",
+            "integrity": "sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==",
             "cpu": [
                 "x64"
             ],
@@ -102,9 +102,9 @@
             }
         },
         "node_modules/@esbuild/darwin-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz",
-            "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.3.tgz",
+            "integrity": "sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==",
             "cpu": [
                 "arm64"
             ],
@@ -118,9 +118,9 @@
             }
         },
         "node_modules/@esbuild/darwin-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz",
-            "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.3.tgz",
+            "integrity": "sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==",
             "cpu": [
                 "x64"
             ],
@@ -134,9 +134,9 @@
             }
         },
         "node_modules/@esbuild/freebsd-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz",
-            "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.3.tgz",
+            "integrity": "sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==",
             "cpu": [
                 "arm64"
             ],
@@ -150,9 +150,9 @@
             }
         },
         "node_modules/@esbuild/freebsd-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz",
-            "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.3.tgz",
+            "integrity": "sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==",
             "cpu": [
                 "x64"
             ],
@@ -166,9 +166,9 @@
             }
         },
         "node_modules/@esbuild/linux-arm": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz",
-            "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.3.tgz",
+            "integrity": "sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==",
             "cpu": [
                 "arm"
             ],
@@ -182,9 +182,9 @@
             }
         },
         "node_modules/@esbuild/linux-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz",
-            "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.3.tgz",
+            "integrity": "sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==",
             "cpu": [
                 "arm64"
             ],
@@ -198,9 +198,9 @@
             }
         },
         "node_modules/@esbuild/linux-ia32": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz",
-            "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.3.tgz",
+            "integrity": "sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==",
             "cpu": [
                 "ia32"
             ],
@@ -214,9 +214,9 @@
             }
         },
         "node_modules/@esbuild/linux-loong64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz",
-            "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.3.tgz",
+            "integrity": "sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==",
             "cpu": [
                 "loong64"
             ],
@@ -230,9 +230,9 @@
             }
         },
         "node_modules/@esbuild/linux-mips64el": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz",
-            "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.3.tgz",
+            "integrity": "sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==",
             "cpu": [
                 "mips64el"
             ],
@@ -246,9 +246,9 @@
             }
         },
         "node_modules/@esbuild/linux-ppc64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz",
-            "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.3.tgz",
+            "integrity": "sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==",
             "cpu": [
                 "ppc64"
             ],
@@ -262,9 +262,9 @@
             }
         },
         "node_modules/@esbuild/linux-riscv64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz",
-            "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.3.tgz",
+            "integrity": "sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==",
             "cpu": [
                 "riscv64"
             ],
@@ -278,9 +278,9 @@
             }
         },
         "node_modules/@esbuild/linux-s390x": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz",
-            "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.3.tgz",
+            "integrity": "sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==",
             "cpu": [
                 "s390x"
             ],
@@ -294,9 +294,9 @@
             }
         },
         "node_modules/@esbuild/linux-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz",
-            "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.3.tgz",
+            "integrity": "sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==",
             "cpu": [
                 "x64"
             ],
@@ -310,9 +310,9 @@
             }
         },
         "node_modules/@esbuild/netbsd-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz",
-            "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.3.tgz",
+            "integrity": "sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==",
             "cpu": [
                 "arm64"
             ],
@@ -326,9 +326,9 @@
             }
         },
         "node_modules/@esbuild/netbsd-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz",
-            "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.3.tgz",
+            "integrity": "sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==",
             "cpu": [
                 "x64"
             ],
@@ -342,9 +342,9 @@
             }
         },
         "node_modules/@esbuild/openbsd-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz",
-            "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.3.tgz",
+            "integrity": "sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==",
             "cpu": [
                 "arm64"
             ],
@@ -358,9 +358,9 @@
             }
         },
         "node_modules/@esbuild/openbsd-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz",
-            "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.3.tgz",
+            "integrity": "sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==",
             "cpu": [
                 "x64"
             ],
@@ -374,9 +374,9 @@
             }
         },
         "node_modules/@esbuild/sunos-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz",
-            "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.3.tgz",
+            "integrity": "sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==",
             "cpu": [
                 "x64"
             ],
@@ -390,9 +390,9 @@
             }
         },
         "node_modules/@esbuild/win32-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz",
-            "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.3.tgz",
+            "integrity": "sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==",
             "cpu": [
                 "arm64"
             ],
@@ -406,9 +406,9 @@
             }
         },
         "node_modules/@esbuild/win32-ia32": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz",
-            "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.3.tgz",
+            "integrity": "sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==",
             "cpu": [
                 "ia32"
             ],
@@ -422,9 +422,9 @@
             }
         },
         "node_modules/@esbuild/win32-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz",
-            "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.3.tgz",
+            "integrity": "sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==",
             "cpu": [
                 "x64"
             ],
@@ -535,9 +535,9 @@
             }
         },
         "node_modules/@eslint/js": {
-            "version": "9.25.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.0.tgz",
-            "integrity": "sha512-iWhsUS8Wgxz9AXNfvfOPFSW4VfMXdVhp1hjkZVhXCrpgh/aLcc45rX6MPu+tIVUWDw0HfNwth7O28M1xDxNf9w==",
+            "version": "9.25.1",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.1.tgz",
+            "integrity": "sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -639,9 +639,9 @@
             "license": "MIT"
         },
         "node_modules/@types/node": {
-            "version": "22.14.1",
-            "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz",
-            "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==",
+            "version": "22.15.0",
+            "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.0.tgz",
+            "integrity": "sha512-99S8dWD2DkeE6PBaEDw+In3aar7hdoBvjyJMR6vaKBTzpvR0P00ClzJMOoVrj9D2+Sy/YCwACYHnBTpMhg1UCA==",
             "license": "MIT",
             "dependencies": {
                 "undici-types": "~6.21.0"
@@ -814,9 +814,9 @@
             "license": "MIT"
         },
         "node_modules/esbuild": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz",
-            "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.3.tgz",
+            "integrity": "sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==",
             "hasInstallScript": true,
             "license": "MIT",
             "bin": {
@@ -826,31 +826,31 @@
                 "node": ">=18"
             },
             "optionalDependencies": {
-                "@esbuild/aix-ppc64": "0.25.2",
-                "@esbuild/android-arm": "0.25.2",
-                "@esbuild/android-arm64": "0.25.2",
-                "@esbuild/android-x64": "0.25.2",
-                "@esbuild/darwin-arm64": "0.25.2",
-                "@esbuild/darwin-x64": "0.25.2",
-                "@esbuild/freebsd-arm64": "0.25.2",
-                "@esbuild/freebsd-x64": "0.25.2",
-                "@esbuild/linux-arm": "0.25.2",
-                "@esbuild/linux-arm64": "0.25.2",
-                "@esbuild/linux-ia32": "0.25.2",
-                "@esbuild/linux-loong64": "0.25.2",
-                "@esbuild/linux-mips64el": "0.25.2",
-                "@esbuild/linux-ppc64": "0.25.2",
-                "@esbuild/linux-riscv64": "0.25.2",
-                "@esbuild/linux-s390x": "0.25.2",
-                "@esbuild/linux-x64": "0.25.2",
-                "@esbuild/netbsd-arm64": "0.25.2",
-                "@esbuild/netbsd-x64": "0.25.2",
-                "@esbuild/openbsd-arm64": "0.25.2",
-                "@esbuild/openbsd-x64": "0.25.2",
-                "@esbuild/sunos-x64": "0.25.2",
-                "@esbuild/win32-arm64": "0.25.2",
-                "@esbuild/win32-ia32": "0.25.2",
-                "@esbuild/win32-x64": "0.25.2"
+                "@esbuild/aix-ppc64": "0.25.3",
+                "@esbuild/android-arm": "0.25.3",
+                "@esbuild/android-arm64": "0.25.3",
+                "@esbuild/android-x64": "0.25.3",
+                "@esbuild/darwin-arm64": "0.25.3",
+                "@esbuild/darwin-x64": "0.25.3",
+                "@esbuild/freebsd-arm64": "0.25.3",
+                "@esbuild/freebsd-x64": "0.25.3",
+                "@esbuild/linux-arm": "0.25.3",
+                "@esbuild/linux-arm64": "0.25.3",
+                "@esbuild/linux-ia32": "0.25.3",
+                "@esbuild/linux-loong64": "0.25.3",
+                "@esbuild/linux-mips64el": "0.25.3",
+                "@esbuild/linux-ppc64": "0.25.3",
+                "@esbuild/linux-riscv64": "0.25.3",
+                "@esbuild/linux-s390x": "0.25.3",
+                "@esbuild/linux-x64": "0.25.3",
+                "@esbuild/netbsd-arm64": "0.25.3",
+                "@esbuild/netbsd-x64": "0.25.3",
+                "@esbuild/openbsd-arm64": "0.25.3",
+                "@esbuild/openbsd-x64": "0.25.3",
+                "@esbuild/sunos-x64": "0.25.3",
+                "@esbuild/win32-arm64": "0.25.3",
+                "@esbuild/win32-ia32": "0.25.3",
+                "@esbuild/win32-x64": "0.25.3"
             }
         },
         "node_modules/escape-string-regexp": {
@@ -866,9 +866,9 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.25.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.0.tgz",
-            "integrity": "sha512-MsBdObhM4cEwkzCiraDv7A6txFXEqtNXOb877TsSp2FCkBNl8JfVQrmiuDqC1IkejT6JLPzYBXx/xAiYhyzgGA==",
+            "version": "9.25.1",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.1.tgz",
+            "integrity": "sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
@@ -877,7 +877,7 @@
                 "@eslint/config-helpers": "^0.2.1",
                 "@eslint/core": "^0.13.0",
                 "@eslint/eslintrc": "^3.3.1",
-                "@eslint/js": "9.25.0",
+                "@eslint/js": "9.25.1",
                 "@eslint/plugin-kit": "^0.2.8",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
diff --git a/apps/mc-mods/package.json b/apps/mc-mods/package.json
index a8f1d294..7d666ee8 100644
--- a/apps/mc-mods/package.json
+++ b/apps/mc-mods/package.json
@@ -7,9 +7,9 @@
         "build": "node_ver=$(node -v); esbuild src/app.ts --bundle --platform=node --target=\"node${node_ver:1:2}\" --outfile=out/bin/app.cjs"
     },
     "dependencies": {
-        "@types/node": "22.14.1",
-        "esbuild": "0.25.2",
-        "eslint": "9.25.0",
+        "@types/node": "22.15.0",
+        "esbuild": "0.25.3",
+        "eslint": "9.25.1",
         "jiti": "2.4.2",
         "pkg-types": "2.1.0",
         "typescript": "5.8.3"
diff --git a/apps/pin-inputs/default.nix b/apps/pin-inputs/default.nix
index 4ce7b3ce..ab8152ff 100644
--- a/apps/pin-inputs/default.nix
+++ b/apps/pin-inputs/default.nix
@@ -1,7 +1,7 @@
 {buildApp, ...}:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-7siUjfZbkPZXCwrhWeg2NoThHdBtULJXueXr1+wGmuY=";
+  npmDepsHash = "sha256-0cyJ/TiloLtGCE1GPLjr30/RoHTG2uXxLUgWl87srIA=";
 
   runtimeInputs = [];
 
diff --git a/apps/pin-inputs/package-lock.json b/apps/pin-inputs/package-lock.json
index cdbd314a..abd6a6b3 100644
--- a/apps/pin-inputs/package-lock.json
+++ b/apps/pin-inputs/package-lock.json
@@ -8,9 +8,9 @@
             "name": "pin-inputs",
             "version": "0.0.0",
             "dependencies": {
-                "@types/node": "22.14.1",
-                "esbuild": "0.25.2",
-                "eslint": "9.25.0",
+                "@types/node": "22.15.0",
+                "esbuild": "0.25.3",
+                "eslint": "9.25.1",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
                 "typescript": "5.8.3"
@@ -27,20 +27,20 @@
             "version": "0.0.0",
             "dev": true,
             "dependencies": {
-                "@eslint/js": "9.25.0",
+                "@eslint/js": "9.25.1",
                 "@stylistic/eslint-plugin": "4.2.0",
-                "eslint": "9.25.0",
-                "eslint-plugin-jsdoc": "50.6.9",
+                "eslint": "9.25.1",
+                "eslint-plugin-jsdoc": "50.6.10",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
                 "typescript": "5.8.3",
-                "typescript-eslint": "8.30.1"
+                "typescript-eslint": "8.31.0"
             }
         },
         "node_modules/@esbuild/aix-ppc64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz",
-            "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.3.tgz",
+            "integrity": "sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==",
             "cpu": [
                 "ppc64"
             ],
@@ -54,9 +54,9 @@
             }
         },
         "node_modules/@esbuild/android-arm": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz",
-            "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.3.tgz",
+            "integrity": "sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==",
             "cpu": [
                 "arm"
             ],
@@ -70,9 +70,9 @@
             }
         },
         "node_modules/@esbuild/android-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz",
-            "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.3.tgz",
+            "integrity": "sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==",
             "cpu": [
                 "arm64"
             ],
@@ -86,9 +86,9 @@
             }
         },
         "node_modules/@esbuild/android-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz",
-            "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.3.tgz",
+            "integrity": "sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==",
             "cpu": [
                 "x64"
             ],
@@ -102,9 +102,9 @@
             }
         },
         "node_modules/@esbuild/darwin-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz",
-            "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.3.tgz",
+            "integrity": "sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==",
             "cpu": [
                 "arm64"
             ],
@@ -118,9 +118,9 @@
             }
         },
         "node_modules/@esbuild/darwin-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz",
-            "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.3.tgz",
+            "integrity": "sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==",
             "cpu": [
                 "x64"
             ],
@@ -134,9 +134,9 @@
             }
         },
         "node_modules/@esbuild/freebsd-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz",
-            "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.3.tgz",
+            "integrity": "sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==",
             "cpu": [
                 "arm64"
             ],
@@ -150,9 +150,9 @@
             }
         },
         "node_modules/@esbuild/freebsd-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz",
-            "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.3.tgz",
+            "integrity": "sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==",
             "cpu": [
                 "x64"
             ],
@@ -166,9 +166,9 @@
             }
         },
         "node_modules/@esbuild/linux-arm": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz",
-            "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.3.tgz",
+            "integrity": "sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==",
             "cpu": [
                 "arm"
             ],
@@ -182,9 +182,9 @@
             }
         },
         "node_modules/@esbuild/linux-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz",
-            "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.3.tgz",
+            "integrity": "sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==",
             "cpu": [
                 "arm64"
             ],
@@ -198,9 +198,9 @@
             }
         },
         "node_modules/@esbuild/linux-ia32": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz",
-            "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.3.tgz",
+            "integrity": "sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==",
             "cpu": [
                 "ia32"
             ],
@@ -214,9 +214,9 @@
             }
         },
         "node_modules/@esbuild/linux-loong64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz",
-            "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.3.tgz",
+            "integrity": "sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==",
             "cpu": [
                 "loong64"
             ],
@@ -230,9 +230,9 @@
             }
         },
         "node_modules/@esbuild/linux-mips64el": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz",
-            "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.3.tgz",
+            "integrity": "sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==",
             "cpu": [
                 "mips64el"
             ],
@@ -246,9 +246,9 @@
             }
         },
         "node_modules/@esbuild/linux-ppc64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz",
-            "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.3.tgz",
+            "integrity": "sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==",
             "cpu": [
                 "ppc64"
             ],
@@ -262,9 +262,9 @@
             }
         },
         "node_modules/@esbuild/linux-riscv64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz",
-            "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.3.tgz",
+            "integrity": "sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==",
             "cpu": [
                 "riscv64"
             ],
@@ -278,9 +278,9 @@
             }
         },
         "node_modules/@esbuild/linux-s390x": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz",
-            "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.3.tgz",
+            "integrity": "sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==",
             "cpu": [
                 "s390x"
             ],
@@ -294,9 +294,9 @@
             }
         },
         "node_modules/@esbuild/linux-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz",
-            "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.3.tgz",
+            "integrity": "sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==",
             "cpu": [
                 "x64"
             ],
@@ -310,9 +310,9 @@
             }
         },
         "node_modules/@esbuild/netbsd-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz",
-            "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.3.tgz",
+            "integrity": "sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==",
             "cpu": [
                 "arm64"
             ],
@@ -326,9 +326,9 @@
             }
         },
         "node_modules/@esbuild/netbsd-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz",
-            "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.3.tgz",
+            "integrity": "sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==",
             "cpu": [
                 "x64"
             ],
@@ -342,9 +342,9 @@
             }
         },
         "node_modules/@esbuild/openbsd-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz",
-            "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.3.tgz",
+            "integrity": "sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==",
             "cpu": [
                 "arm64"
             ],
@@ -358,9 +358,9 @@
             }
         },
         "node_modules/@esbuild/openbsd-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz",
-            "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.3.tgz",
+            "integrity": "sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==",
             "cpu": [
                 "x64"
             ],
@@ -374,9 +374,9 @@
             }
         },
         "node_modules/@esbuild/sunos-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz",
-            "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.3.tgz",
+            "integrity": "sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==",
             "cpu": [
                 "x64"
             ],
@@ -390,9 +390,9 @@
             }
         },
         "node_modules/@esbuild/win32-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz",
-            "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.3.tgz",
+            "integrity": "sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==",
             "cpu": [
                 "arm64"
             ],
@@ -406,9 +406,9 @@
             }
         },
         "node_modules/@esbuild/win32-ia32": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz",
-            "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.3.tgz",
+            "integrity": "sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==",
             "cpu": [
                 "ia32"
             ],
@@ -422,9 +422,9 @@
             }
         },
         "node_modules/@esbuild/win32-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz",
-            "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.3.tgz",
+            "integrity": "sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==",
             "cpu": [
                 "x64"
             ],
@@ -535,9 +535,9 @@
             }
         },
         "node_modules/@eslint/js": {
-            "version": "9.25.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.0.tgz",
-            "integrity": "sha512-iWhsUS8Wgxz9AXNfvfOPFSW4VfMXdVhp1hjkZVhXCrpgh/aLcc45rX6MPu+tIVUWDw0HfNwth7O28M1xDxNf9w==",
+            "version": "9.25.1",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.1.tgz",
+            "integrity": "sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -639,9 +639,9 @@
             "license": "MIT"
         },
         "node_modules/@types/node": {
-            "version": "22.14.1",
-            "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz",
-            "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==",
+            "version": "22.15.0",
+            "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.0.tgz",
+            "integrity": "sha512-99S8dWD2DkeE6PBaEDw+In3aar7hdoBvjyJMR6vaKBTzpvR0P00ClzJMOoVrj9D2+Sy/YCwACYHnBTpMhg1UCA==",
             "license": "MIT",
             "dependencies": {
                 "undici-types": "~6.21.0"
@@ -814,9 +814,9 @@
             "license": "MIT"
         },
         "node_modules/esbuild": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz",
-            "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.3.tgz",
+            "integrity": "sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==",
             "hasInstallScript": true,
             "license": "MIT",
             "bin": {
@@ -826,31 +826,31 @@
                 "node": ">=18"
             },
             "optionalDependencies": {
-                "@esbuild/aix-ppc64": "0.25.2",
-                "@esbuild/android-arm": "0.25.2",
-                "@esbuild/android-arm64": "0.25.2",
-                "@esbuild/android-x64": "0.25.2",
-                "@esbuild/darwin-arm64": "0.25.2",
-                "@esbuild/darwin-x64": "0.25.2",
-                "@esbuild/freebsd-arm64": "0.25.2",
-                "@esbuild/freebsd-x64": "0.25.2",
-                "@esbuild/linux-arm": "0.25.2",
-                "@esbuild/linux-arm64": "0.25.2",
-                "@esbuild/linux-ia32": "0.25.2",
-                "@esbuild/linux-loong64": "0.25.2",
-                "@esbuild/linux-mips64el": "0.25.2",
-                "@esbuild/linux-ppc64": "0.25.2",
-                "@esbuild/linux-riscv64": "0.25.2",
-                "@esbuild/linux-s390x": "0.25.2",
-                "@esbuild/linux-x64": "0.25.2",
-                "@esbuild/netbsd-arm64": "0.25.2",
-                "@esbuild/netbsd-x64": "0.25.2",
-                "@esbuild/openbsd-arm64": "0.25.2",
-                "@esbuild/openbsd-x64": "0.25.2",
-                "@esbuild/sunos-x64": "0.25.2",
-                "@esbuild/win32-arm64": "0.25.2",
-                "@esbuild/win32-ia32": "0.25.2",
-                "@esbuild/win32-x64": "0.25.2"
+                "@esbuild/aix-ppc64": "0.25.3",
+                "@esbuild/android-arm": "0.25.3",
+                "@esbuild/android-arm64": "0.25.3",
+                "@esbuild/android-x64": "0.25.3",
+                "@esbuild/darwin-arm64": "0.25.3",
+                "@esbuild/darwin-x64": "0.25.3",
+                "@esbuild/freebsd-arm64": "0.25.3",
+                "@esbuild/freebsd-x64": "0.25.3",
+                "@esbuild/linux-arm": "0.25.3",
+                "@esbuild/linux-arm64": "0.25.3",
+                "@esbuild/linux-ia32": "0.25.3",
+                "@esbuild/linux-loong64": "0.25.3",
+                "@esbuild/linux-mips64el": "0.25.3",
+                "@esbuild/linux-ppc64": "0.25.3",
+                "@esbuild/linux-riscv64": "0.25.3",
+                "@esbuild/linux-s390x": "0.25.3",
+                "@esbuild/linux-x64": "0.25.3",
+                "@esbuild/netbsd-arm64": "0.25.3",
+                "@esbuild/netbsd-x64": "0.25.3",
+                "@esbuild/openbsd-arm64": "0.25.3",
+                "@esbuild/openbsd-x64": "0.25.3",
+                "@esbuild/sunos-x64": "0.25.3",
+                "@esbuild/win32-arm64": "0.25.3",
+                "@esbuild/win32-ia32": "0.25.3",
+                "@esbuild/win32-x64": "0.25.3"
             }
         },
         "node_modules/escape-string-regexp": {
@@ -866,9 +866,9 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.25.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.0.tgz",
-            "integrity": "sha512-MsBdObhM4cEwkzCiraDv7A6txFXEqtNXOb877TsSp2FCkBNl8JfVQrmiuDqC1IkejT6JLPzYBXx/xAiYhyzgGA==",
+            "version": "9.25.1",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.1.tgz",
+            "integrity": "sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
@@ -877,7 +877,7 @@
                 "@eslint/config-helpers": "^0.2.1",
                 "@eslint/core": "^0.13.0",
                 "@eslint/eslintrc": "^3.3.1",
-                "@eslint/js": "9.25.0",
+                "@eslint/js": "9.25.1",
                 "@eslint/plugin-kit": "^0.2.8",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
diff --git a/apps/pin-inputs/package.json b/apps/pin-inputs/package.json
index 9f710d3b..a3ec30f4 100644
--- a/apps/pin-inputs/package.json
+++ b/apps/pin-inputs/package.json
@@ -7,9 +7,9 @@
         "build": "node_ver=$(node -v); esbuild src/app.ts --bundle --platform=node --target=\"node${node_ver:1:2}\" --outfile=out/bin/app.cjs"
     },
     "dependencies": {
-        "@types/node": "22.14.1",
-        "esbuild": "0.25.2",
-        "eslint": "9.25.0",
+        "@types/node": "22.15.0",
+        "esbuild": "0.25.3",
+        "eslint": "9.25.1",
         "jiti": "2.4.2",
         "pkg-types": "2.1.0",
         "typescript": "5.8.3"
diff --git a/apps/update-sources/default.nix b/apps/update-sources/default.nix
index 87816c24..2b6e3eff 100644
--- a/apps/update-sources/default.nix
+++ b/apps/update-sources/default.nix
@@ -12,7 +12,7 @@
 }:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-Eqj0/lxega6zkKwXIxLRjEVXD7Z0chGLo4o0k3Dstk4=";
+  npmDepsHash = "sha256-jcvfbNRz7F3legAmPrB8kgZrsVtObdNQceqBOEsGV2w=";
 
   runtimeInputs = [
     curl
diff --git a/apps/update-sources/package-lock.json b/apps/update-sources/package-lock.json
index 87cc0101..4bed651d 100644
--- a/apps/update-sources/package-lock.json
+++ b/apps/update-sources/package-lock.json
@@ -8,9 +8,9 @@
             "name": "update-sources",
             "version": "0.0.0",
             "dependencies": {
-                "@types/node": "22.14.1",
-                "esbuild": "0.25.2",
-                "eslint": "9.25.0",
+                "@types/node": "22.15.0",
+                "esbuild": "0.25.3",
+                "eslint": "9.25.1",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
                 "typescript": "5.8.3"
@@ -38,9 +38,9 @@
             }
         },
         "node_modules/@esbuild/aix-ppc64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz",
-            "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.3.tgz",
+            "integrity": "sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==",
             "cpu": [
                 "ppc64"
             ],
@@ -54,9 +54,9 @@
             }
         },
         "node_modules/@esbuild/android-arm": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz",
-            "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.3.tgz",
+            "integrity": "sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==",
             "cpu": [
                 "arm"
             ],
@@ -70,9 +70,9 @@
             }
         },
         "node_modules/@esbuild/android-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz",
-            "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.3.tgz",
+            "integrity": "sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==",
             "cpu": [
                 "arm64"
             ],
@@ -86,9 +86,9 @@
             }
         },
         "node_modules/@esbuild/android-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz",
-            "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.3.tgz",
+            "integrity": "sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==",
             "cpu": [
                 "x64"
             ],
@@ -102,9 +102,9 @@
             }
         },
         "node_modules/@esbuild/darwin-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz",
-            "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.3.tgz",
+            "integrity": "sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==",
             "cpu": [
                 "arm64"
             ],
@@ -118,9 +118,9 @@
             }
         },
         "node_modules/@esbuild/darwin-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz",
-            "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.3.tgz",
+            "integrity": "sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==",
             "cpu": [
                 "x64"
             ],
@@ -134,9 +134,9 @@
             }
         },
         "node_modules/@esbuild/freebsd-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz",
-            "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.3.tgz",
+            "integrity": "sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==",
             "cpu": [
                 "arm64"
             ],
@@ -150,9 +150,9 @@
             }
         },
         "node_modules/@esbuild/freebsd-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz",
-            "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.3.tgz",
+            "integrity": "sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==",
             "cpu": [
                 "x64"
             ],
@@ -166,9 +166,9 @@
             }
         },
         "node_modules/@esbuild/linux-arm": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz",
-            "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.3.tgz",
+            "integrity": "sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==",
             "cpu": [
                 "arm"
             ],
@@ -182,9 +182,9 @@
             }
         },
         "node_modules/@esbuild/linux-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz",
-            "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.3.tgz",
+            "integrity": "sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==",
             "cpu": [
                 "arm64"
             ],
@@ -198,9 +198,9 @@
             }
         },
         "node_modules/@esbuild/linux-ia32": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz",
-            "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.3.tgz",
+            "integrity": "sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==",
             "cpu": [
                 "ia32"
             ],
@@ -214,9 +214,9 @@
             }
         },
         "node_modules/@esbuild/linux-loong64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz",
-            "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.3.tgz",
+            "integrity": "sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==",
             "cpu": [
                 "loong64"
             ],
@@ -230,9 +230,9 @@
             }
         },
         "node_modules/@esbuild/linux-mips64el": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz",
-            "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.3.tgz",
+            "integrity": "sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==",
             "cpu": [
                 "mips64el"
             ],
@@ -246,9 +246,9 @@
             }
         },
         "node_modules/@esbuild/linux-ppc64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz",
-            "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.3.tgz",
+            "integrity": "sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==",
             "cpu": [
                 "ppc64"
             ],
@@ -262,9 +262,9 @@
             }
         },
         "node_modules/@esbuild/linux-riscv64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz",
-            "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.3.tgz",
+            "integrity": "sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==",
             "cpu": [
                 "riscv64"
             ],
@@ -278,9 +278,9 @@
             }
         },
         "node_modules/@esbuild/linux-s390x": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz",
-            "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.3.tgz",
+            "integrity": "sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==",
             "cpu": [
                 "s390x"
             ],
@@ -294,9 +294,9 @@
             }
         },
         "node_modules/@esbuild/linux-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz",
-            "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.3.tgz",
+            "integrity": "sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==",
             "cpu": [
                 "x64"
             ],
@@ -310,9 +310,9 @@
             }
         },
         "node_modules/@esbuild/netbsd-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz",
-            "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.3.tgz",
+            "integrity": "sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==",
             "cpu": [
                 "arm64"
             ],
@@ -326,9 +326,9 @@
             }
         },
         "node_modules/@esbuild/netbsd-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz",
-            "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.3.tgz",
+            "integrity": "sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==",
             "cpu": [
                 "x64"
             ],
@@ -342,9 +342,9 @@
             }
         },
         "node_modules/@esbuild/openbsd-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz",
-            "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.3.tgz",
+            "integrity": "sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==",
             "cpu": [
                 "arm64"
             ],
@@ -358,9 +358,9 @@
             }
         },
         "node_modules/@esbuild/openbsd-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz",
-            "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.3.tgz",
+            "integrity": "sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==",
             "cpu": [
                 "x64"
             ],
@@ -374,9 +374,9 @@
             }
         },
         "node_modules/@esbuild/sunos-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz",
-            "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.3.tgz",
+            "integrity": "sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==",
             "cpu": [
                 "x64"
             ],
@@ -390,9 +390,9 @@
             }
         },
         "node_modules/@esbuild/win32-arm64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz",
-            "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.3.tgz",
+            "integrity": "sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==",
             "cpu": [
                 "arm64"
             ],
@@ -406,9 +406,9 @@
             }
         },
         "node_modules/@esbuild/win32-ia32": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz",
-            "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.3.tgz",
+            "integrity": "sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==",
             "cpu": [
                 "ia32"
             ],
@@ -422,9 +422,9 @@
             }
         },
         "node_modules/@esbuild/win32-x64": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz",
-            "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.3.tgz",
+            "integrity": "sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==",
             "cpu": [
                 "x64"
             ],
@@ -535,9 +535,9 @@
             }
         },
         "node_modules/@eslint/js": {
-            "version": "9.25.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.0.tgz",
-            "integrity": "sha512-iWhsUS8Wgxz9AXNfvfOPFSW4VfMXdVhp1hjkZVhXCrpgh/aLcc45rX6MPu+tIVUWDw0HfNwth7O28M1xDxNf9w==",
+            "version": "9.25.1",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.1.tgz",
+            "integrity": "sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -639,9 +639,9 @@
             "license": "MIT"
         },
         "node_modules/@types/node": {
-            "version": "22.14.1",
-            "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz",
-            "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==",
+            "version": "22.15.0",
+            "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.0.tgz",
+            "integrity": "sha512-99S8dWD2DkeE6PBaEDw+In3aar7hdoBvjyJMR6vaKBTzpvR0P00ClzJMOoVrj9D2+Sy/YCwACYHnBTpMhg1UCA==",
             "license": "MIT",
             "dependencies": {
                 "undici-types": "~6.21.0"
@@ -814,9 +814,9 @@
             "license": "MIT"
         },
         "node_modules/esbuild": {
-            "version": "0.25.2",
-            "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz",
-            "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==",
+            "version": "0.25.3",
+            "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.3.tgz",
+            "integrity": "sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==",
             "hasInstallScript": true,
             "license": "MIT",
             "bin": {
@@ -826,31 +826,31 @@
                 "node": ">=18"
             },
             "optionalDependencies": {
-                "@esbuild/aix-ppc64": "0.25.2",
-                "@esbuild/android-arm": "0.25.2",
-                "@esbuild/android-arm64": "0.25.2",
-                "@esbuild/android-x64": "0.25.2",
-                "@esbuild/darwin-arm64": "0.25.2",
-                "@esbuild/darwin-x64": "0.25.2",
-                "@esbuild/freebsd-arm64": "0.25.2",
-                "@esbuild/freebsd-x64": "0.25.2",
-                "@esbuild/linux-arm": "0.25.2",
-                "@esbuild/linux-arm64": "0.25.2",
-                "@esbuild/linux-ia32": "0.25.2",
-                "@esbuild/linux-loong64": "0.25.2",
-                "@esbuild/linux-mips64el": "0.25.2",
-                "@esbuild/linux-ppc64": "0.25.2",
-                "@esbuild/linux-riscv64": "0.25.2",
-                "@esbuild/linux-s390x": "0.25.2",
-                "@esbuild/linux-x64": "0.25.2",
-                "@esbuild/netbsd-arm64": "0.25.2",
-                "@esbuild/netbsd-x64": "0.25.2",
-                "@esbuild/openbsd-arm64": "0.25.2",
-                "@esbuild/openbsd-x64": "0.25.2",
-                "@esbuild/sunos-x64": "0.25.2",
-                "@esbuild/win32-arm64": "0.25.2",
-                "@esbuild/win32-ia32": "0.25.2",
-                "@esbuild/win32-x64": "0.25.2"
+                "@esbuild/aix-ppc64": "0.25.3",
+                "@esbuild/android-arm": "0.25.3",
+                "@esbuild/android-arm64": "0.25.3",
+                "@esbuild/android-x64": "0.25.3",
+                "@esbuild/darwin-arm64": "0.25.3",
+                "@esbuild/darwin-x64": "0.25.3",
+                "@esbuild/freebsd-arm64": "0.25.3",
+                "@esbuild/freebsd-x64": "0.25.3",
+                "@esbuild/linux-arm": "0.25.3",
+                "@esbuild/linux-arm64": "0.25.3",
+                "@esbuild/linux-ia32": "0.25.3",
+                "@esbuild/linux-loong64": "0.25.3",
+                "@esbuild/linux-mips64el": "0.25.3",
+                "@esbuild/linux-ppc64": "0.25.3",
+                "@esbuild/linux-riscv64": "0.25.3",
+                "@esbuild/linux-s390x": "0.25.3",
+                "@esbuild/linux-x64": "0.25.3",
+                "@esbuild/netbsd-arm64": "0.25.3",
+                "@esbuild/netbsd-x64": "0.25.3",
+                "@esbuild/openbsd-arm64": "0.25.3",
+                "@esbuild/openbsd-x64": "0.25.3",
+                "@esbuild/sunos-x64": "0.25.3",
+                "@esbuild/win32-arm64": "0.25.3",
+                "@esbuild/win32-ia32": "0.25.3",
+                "@esbuild/win32-x64": "0.25.3"
             }
         },
         "node_modules/escape-string-regexp": {
@@ -866,9 +866,9 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.25.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.0.tgz",
-            "integrity": "sha512-MsBdObhM4cEwkzCiraDv7A6txFXEqtNXOb877TsSp2FCkBNl8JfVQrmiuDqC1IkejT6JLPzYBXx/xAiYhyzgGA==",
+            "version": "9.25.1",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.1.tgz",
+            "integrity": "sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
@@ -877,7 +877,7 @@
                 "@eslint/config-helpers": "^0.2.1",
                 "@eslint/core": "^0.13.0",
                 "@eslint/eslintrc": "^3.3.1",
-                "@eslint/js": "9.25.0",
+                "@eslint/js": "9.25.1",
                 "@eslint/plugin-kit": "^0.2.8",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
diff --git a/apps/update-sources/package.json b/apps/update-sources/package.json
index a8d812a9..03a008ff 100644
--- a/apps/update-sources/package.json
+++ b/apps/update-sources/package.json
@@ -7,9 +7,9 @@
         "build": "node_ver=$(node -v); esbuild src/app.ts --bundle --platform=node --target=\"node${node_ver:1:2}\" --outfile=out/bin/app.cjs"
     },
     "dependencies": {
-        "@types/node": "22.14.1",
-        "esbuild": "0.25.2",
-        "eslint": "9.25.0",
+        "@types/node": "22.15.0",
+        "esbuild": "0.25.3",
+        "eslint": "9.25.1",
         "jiti": "2.4.2",
         "pkg-types": "2.1.0",
         "typescript": "5.8.3"
diff --git a/configurations/cluster/modules/caddy/plugins.nix b/configurations/cluster/modules/caddy/plugins.nix
index d5aab9c1..078dfd4a 100644
--- a/configurations/cluster/modules/caddy/plugins.nix
+++ b/configurations/cluster/modules/caddy/plugins.nix
@@ -13,5 +13,5 @@
     };
   };
 
-  hash = "sha256-C3sYu0ezjBocdsC6U76gv0UOZCID2jDIiyQBywLlOS4=";
+  hash = "sha256-Aa1nhA0MTv8XA9femdueDQh01iYwWsuMMLE+7BIHWlM=";
 }
diff --git a/configurations/nos/modules/docker/forgejo/images/act_runner.nix b/configurations/nos/modules/docker/forgejo/images/act_runner.nix
index a5f68a1e..318a0ddc 100644
--- a/configurations/nos/modules/docker/forgejo/images/act_runner.nix
+++ b/configurations/nos/modules/docker/forgejo/images/act_runner.nix
@@ -1,8 +1,8 @@
 pkgs:
 pkgs.dockerTools.pullImage rec {
   imageName = "vegardit/gitea-act-runner";
-  imageDigest = "sha256:02ab7bbb1423d790d7fdf39b62851b4422243858e282738744930270bf2e2a99";
-  hash = "sha256-kix0y5xsijlXGkK57gLQlvDjRR9s8a46HV3yVJ+yfAg=";
+  imageDigest = "sha256:6e59daffeaf0be4c2588853a67cb23335a34a8f0ae393983f61f658bc62a4890";
+  hash = "sha256-39Fkj3QRUKnnvGf0mSJq54QQMg7LQYVuoFNSeYwJE0Y=";
   finalImageName = imageName;
   finalImageTag = "dind-latest";
 }
diff --git a/configurations/nos/modules/docker/immich/images/machine-learning.nix b/configurations/nos/modules/docker/immich/images/machine-learning.nix
index c9f97079..285f8b8a 100644
--- a/configurations/nos/modules/docker/immich/images/machine-learning.nix
+++ b/configurations/nos/modules/docker/immich/images/machine-learning.nix
@@ -1,8 +1,8 @@
 pkgs:
 pkgs.dockerTools.pullImage rec {
   imageName = "ghcr.io/immich-app/immich-machine-learning";
-  imageDigest = "sha256:d6f07b454c0ec7e4ba3a5926fff2482f8fd1a9922b489122dec33b11a4f37bdd";
-  hash = "sha256-4XMrJQzlWsvnMSyDdZsHUa8I4QPHgYaTmo0OKix3ETw=";
+  imageDigest = "sha256:48fc9c8315a00e1856cb9dff1db626ec8c7f1e424d60a6002c7f04ce94fdfa9a";
+  hash = "sha256-ZTsAMlqByJFznaZH+bvYD2qtjG811q+J2r2l78/eaa0=";
   finalImageName = imageName;
   finalImageTag = "release";
 }
diff --git a/configurations/nos/modules/docker/immich/images/server.nix b/configurations/nos/modules/docker/immich/images/server.nix
index 8bc19c26..e3d3d37e 100644
--- a/configurations/nos/modules/docker/immich/images/server.nix
+++ b/configurations/nos/modules/docker/immich/images/server.nix
@@ -1,8 +1,8 @@
 pkgs:
 pkgs.dockerTools.pullImage rec {
   imageName = "ghcr.io/immich-app/immich-server";
-  imageDigest = "sha256:7e5b6729b12b5e5cc5d98bcc6f7c27f723fabae4ee77696855808ebd5200bbf8";
-  hash = "sha256-4+AK8upcMkTYmTxrp19qfO0yXNHaRs67UnGz9r5v7xY=";
+  imageDigest = "sha256:71cb6d2a6587f6481ae22b1cd743c74f163acbf26ade4df890e4425bb1f2e891";
+  hash = "sha256-M/t9NcZGRitWM9+rHiFjd8PreKqnW2EsHD1rS+nBH6M=";
   finalImageName = imageName;
   finalImageTag = "release";
 }
diff --git a/configurations/nos/modules/docker/media/bazarr/images/bazarr.nix b/configurations/nos/modules/docker/media/bazarr/images/bazarr.nix
index 82727f3e..d72d0b41 100644
--- a/configurations/nos/modules/docker/media/bazarr/images/bazarr.nix
+++ b/configurations/nos/modules/docker/media/bazarr/images/bazarr.nix
@@ -1,8 +1,8 @@
 pkgs:
 pkgs.dockerTools.pullImage rec {
   imageName = "ghcr.io/linuxserver/bazarr";
-  imageDigest = "sha256:b98bdcac54db7ed05524fb63447b855d7fc419428222b3827b1cc9655f95bf51";
-  hash = "sha256-NefisUb38Lia+InLyOktZO8anr9PL+yNAgGaz1Vr+ok=";
+  imageDigest = "sha256:2219fa5f4db9b33fa187553177daae80e7baa6b0350a3132395c7bf6b4ded771";
+  hash = "sha256-UF0vOc80YcXwtQjFI7ylvSd1BRlnzakmERNkpXwWwT8=";
   finalImageName = imageName;
   finalImageTag = "latest";
 }
diff --git a/configurations/nos/modules/docker/media/prowlarr/images/prowlarr.nix b/configurations/nos/modules/docker/media/prowlarr/images/prowlarr.nix
index ede4fc50..4fa03381 100644
--- a/configurations/nos/modules/docker/media/prowlarr/images/prowlarr.nix
+++ b/configurations/nos/modules/docker/media/prowlarr/images/prowlarr.nix
@@ -1,8 +1,8 @@
 pkgs:
 pkgs.dockerTools.pullImage rec {
   imageName = "ghcr.io/linuxserver/prowlarr";
-  imageDigest = "sha256:e3242cf552ed1818f9e8208c7826e6b3a28b9203c9732fb0dae176b0323954f2";
-  hash = "sha256-kdRtOAmw0OBLSEqurQzEkp9bqAL5qjMT1i5kDvE9R80=";
+  imageDigest = "sha256:cc04fd226d3418e493c015eb9ad66857066a4ddf024d7214ab2b39712e19e74c";
+  hash = "sha256-QAXrP+EhEoS1IfvumVinNzqEEYKPdKRHY0oHv0xX55M=";
   finalImageName = imageName;
   finalImageTag = "latest";
 }
diff --git a/configurations/nos/modules/docker/media/radarr/images/radarr.nix b/configurations/nos/modules/docker/media/radarr/images/radarr.nix
index 3291a3a7..49e553e6 100644
--- a/configurations/nos/modules/docker/media/radarr/images/radarr.nix
+++ b/configurations/nos/modules/docker/media/radarr/images/radarr.nix
@@ -1,8 +1,8 @@
 pkgs:
 pkgs.dockerTools.pullImage rec {
   imageName = "ghcr.io/linuxserver/radarr";
-  imageDigest = "sha256:9a4a7ed79dee5fcc9940b57ddfddfe7c87dea2d13a221ca2fdd2c1c8d9e75c2e";
-  hash = "sha256-qWkmwf2RVIn/T/vy2YyJGIR8yc206AoJECkPcEtIWEE=";
+  imageDigest = "sha256:7e9dbd55e29496f66fd8f3e210e5c202c1437ba8f4a748013c6da8ac268a0de1";
+  hash = "sha256-5lCeg3RvBuBTzWv7NLVu59DyENr1a+I78fZzb/firvg=";
   finalImageName = imageName;
   finalImageTag = "latest";
 }
diff --git a/configurations/nos/modules/docker/nextcloud/images/nextcloud.nix b/configurations/nos/modules/docker/nextcloud/images/nextcloud.nix
index 1ecf2f30..e86c9594 100644
--- a/configurations/nos/modules/docker/nextcloud/images/nextcloud.nix
+++ b/configurations/nos/modules/docker/nextcloud/images/nextcloud.nix
@@ -1,8 +1,8 @@
 pkgs:
 pkgs.dockerTools.pullImage rec {
   imageName = "nextcloud";
-  imageDigest = "sha256:dcff0b12c4b301ca85074068b262cde17888170cb7f779397e9ee07adaf0aa45";
-  hash = "sha256-pX85lZ+smzInK2fmLohrHznjECI3nSoxj/sAvggFW3w=";
+  imageDigest = "sha256:862be1879153618f4a391b6ea0ad2943f8627fa04f2d09b2205f33ab468b548e";
+  hash = "sha256-pDoloIBcRSS81D+YH431nKTv5/3xaTf6DBSS5H1xOqc=";
   finalImageName = imageName;
   finalImageTag = "fpm";
 }
diff --git a/flake.lock b/flake.lock
index c73393c5..b41689a6 100644
--- a/flake.lock
+++ b/flake.lock
@@ -3,11 +3,11 @@
     "Kapowarr-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1744746361,
-        "narHash": "sha256-vu0nVGjwQSW5K1WtYeL8ixWQABJG0KgT6erenRK44Zs=",
+        "lastModified": 1745186869,
+        "narHash": "sha256-zqxKKADZLwwQziWHHNhniG6Z+JgKWvEW2c04Obya8bA=",
         "owner": "matt1432",
         "repo": "Kapowarr",
-        "rev": "d5a170f80b39b8d3477574211bd775291268a129",
+        "rev": "951d2f34ecd91176a4225e56b9f1d4359cff4bad",
         "type": "github"
       },
       "original": {
@@ -402,11 +402,11 @@
     "gpu-screen-recorder-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1744979475,
-        "narHash": "sha256-Y19KCSaectrCvXb66ghRwiTFBwBQrBm9xcv1PZUXPuY=",
+        "lastModified": 1745430522,
+        "narHash": "sha256-GePE2nkuXeymKEGe0YIPUINgkYAoMKGeUwj/nb8RFGk=",
         "ref": "refs/heads/master",
-        "rev": "a1c09a61af0b1e6cd172dd582c48fec6ebea81c8",
-        "revCount": 1065,
+        "rev": "06b559ecef8aa81e9658e76bf3d5ad0c173087d5",
+        "revCount": 1077,
         "type": "git",
         "url": "https://repo.dec05eba.com/gpu-screen-recorder"
       },
@@ -461,11 +461,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1745128386,
-        "narHash": "sha256-xnNxL9lZC5Ez8AxTgHZZu8pYSNM34+5GD5jGSs8Vq4M=",
+        "lastModified": 1745494811,
+        "narHash": "sha256-YZCh2o9Ua1n9uCvrvi5pRxtuVNml8X2a03qIFfRKpFs=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "f98314bb064cf8f8446c44afbadaaad2505875a7",
+        "rev": "abfad3d2958c9e6300a883bd443512c55dfeb1be",
         "type": "github"
       },
       "original": {
@@ -519,11 +519,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1743953322,
-        "narHash": "sha256-prQ5JKopXtzCMX2eT3dXbaVvGmzjMRE2bXStQDdazpM=",
+        "lastModified": 1745015490,
+        "narHash": "sha256-apEJ9zoSzmslhJ2vOKFcXTMZLUFYzh1ghfB6Rbw3Low=",
         "owner": "hyprwm",
         "repo": "hyprgraphics",
-        "rev": "9d7f2687c84c729afbc3b13f7937655570f2978d",
+        "rev": "60754910946b4e2dc1377b967b7156cb989c5873",
         "type": "github"
       },
       "original": {
@@ -542,16 +542,17 @@
         ]
       },
       "locked": {
-        "lastModified": 1744930206,
-        "narHash": "sha256-LlkTIzJhpKPHcetX6VsbmPseGfiBfXcOET7iXZnYWD0=",
+        "lastModified": 1745374999,
+        "narHash": "sha256-XDKYeRuSdVuGCKaSsoYUrQanppmbzh5cMSjcO2aAK3Y=",
         "owner": "horriblename",
         "repo": "hyprgrass",
-        "rev": "11eaedb1222a914686d91546cb5765cf8ac32653",
+        "rev": "dab59fb9ddb29e90c868d42a3486dd51d2863cfe",
         "type": "github"
       },
       "original": {
         "owner": "horriblename",
         "repo": "hyprgrass",
+        "rev": "dab59fb9ddb29e90c868d42a3486dd51d2863cfe",
         "type": "github"
       }
     },
@@ -577,11 +578,11 @@
         "xdph": "xdph"
       },
       "locked": {
-        "lastModified": 1745164468,
-        "narHash": "sha256-JOza51SDXsdHIuIR40wdFTzjZdSIq8RwFpCacDNURgk=",
+        "lastModified": 1745520589,
+        "narHash": "sha256-d+Wt23atV3D4xDHl3YbbreVGk+7GzalymG//H3+Kmj4=",
         "owner": "hyprwm",
         "repo": "Hyprland",
-        "rev": "9b4060f09be06250e859b27d6dd3ded5349f5546",
+        "rev": "0e80ecc5342db04c8c1f807fa6db4c703fb89e3a",
         "type": "github"
       },
       "original": {
@@ -603,11 +604,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1745156469,
-        "narHash": "sha256-3PK27C3XcPoOkEIQnaPi3cdvh7XjIGqkcQ6MeZMvy2E=",
+        "lastModified": 1745350310,
+        "narHash": "sha256-M9QKHcx6aFD2NVjD5pl3/VMxf8ZIDdaqplZL8YWwupA=",
         "owner": "hyprwm",
         "repo": "hyprland-plugins",
-        "rev": "faa4e782753ab994333666b7e686b038d420c22f",
+        "rev": "8e5e53adefdd96158841ee5b23bce4fe631bf57e",
         "type": "github"
       },
       "original": {
@@ -837,11 +838,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1745044299,
-        "narHash": "sha256-/A/xjRjJY9CGcgOHQ5kTxV7VIJxac86i6NQ5CejMzZc=",
+        "lastModified": 1745487384,
+        "narHash": "sha256-WvQ4XXi0vMtEpPqhfo8ztxjeaeHkbW5tfR4O5+w8r5U=",
         "owner": "Jovian-Experiments",
         "repo": "Jovian-NixOS",
-        "rev": "c7ff1a4578eb11ef84288941aa23e385b6fde635",
+        "rev": "0168e4a65c9d43c22ac38ff27f5fa31c7d535148",
         "type": "github"
       },
       "original": {
@@ -863,11 +864,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1744618733,
-        "narHash": "sha256-ngoKLBeBzp2aFsIKg0efEY+xssOJZzUb8cgVayS4IhY=",
+        "lastModified": 1745323308,
+        "narHash": "sha256-24sYD/Yxu5AuyoFatLwkTMFJIZqWXHngX5u5/8RUmjo=",
         "owner": "kotontrion",
         "repo": "kompass",
-        "rev": "c561a4bd8156bee68f336e18d5e4270ab3475e7e",
+        "rev": "9849f59c5c97af7ab76d8219f182e259d50a6929",
         "type": "github"
       },
       "original": {
@@ -1040,11 +1041,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1743682999,
-        "narHash": "sha256-bg+aAN8K90r3m/I+xXiXG0gawpbkshwlk93wxUN7KEk=",
+        "lastModified": 1745477852,
+        "narHash": "sha256-QvJJ3BHhPOhotJuuIYEzZwwtXUBwXBl2aVJy7FBe29k=",
         "owner": "viperML",
         "repo": "nh",
-        "rev": "9e9a4590b38b62b28f07a1fae973ce7b6ca0687a",
+        "rev": "418c6620f80f064b38011d0f44c1240c67169cc5",
         "type": "github"
       },
       "original": {
@@ -1161,11 +1162,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1745114168,
-        "narHash": "sha256-x+HdFBsfRznwWPpnqXM3yaTVz2CcK5X/ThY6BA3PgcI=",
+        "lastModified": 1745373052,
+        "narHash": "sha256-YoxUn3PXwLN7GxtzRLNAWBAgE728FwLy2oy9roiz/Xg=",
         "owner": "fufexan",
         "repo": "nix-gaming",
-        "rev": "05b70003daf802fd5c0af3903fab5f23fef3c47c",
+        "rev": "8582d6d908005589e1e0818da7558d63edbbbaf2",
         "type": "github"
       },
       "original": {
@@ -1283,11 +1284,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1745066849,
-        "narHash": "sha256-euud5ZDWH5U5sam+ZFoJY3UtxPluVUpk3fRSDmIZclk=",
+        "lastModified": 1745526248,
+        "narHash": "sha256-J5JT079hfkkKTzTaLnpKAQarZD81FKRYDoej+aQD8+g=",
         "owner": "kaylorben",
         "repo": "nixcord",
-        "rev": "f4456331e4c89989a7dae4f23a0fd87d81b3e7ad",
+        "rev": "f5720c0e0ea8ce733892af38d251b4d1bd06e78e",
         "type": "github"
       },
       "original": {
@@ -1348,17 +1349,16 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1744932701,
-        "narHash": "sha256-fusHbZCyv126cyArUwwKrLdCkgVAIaa/fQJYFlCEqiU=",
+        "lastModified": 1745391562,
+        "narHash": "sha256-sPwcCYuiEopaafePqlG826tBhctuJsLx/mhKKM5Fmjo=",
         "ref": "nixos-unstable",
-        "rev": "b024ced1aac25639f8ca8fdfc2f8c4fbd66c48ef",
+        "rev": "8a2f738d9d1f1d986b5a4cd2fd2061a7127237d7",
         "shallow": true,
         "type": "git",
         "url": "https://github.com/NixOS/nixpkgs"
       },
       "original": {
         "ref": "nixos-unstable",
-        "rev": "b024ced1aac25639f8ca8fdfc2f8c4fbd66c48ef",
         "shallow": true,
         "type": "git",
         "url": "https://github.com/NixOS/nixpkgs"
@@ -1760,11 +1760,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1744669848,
-        "narHash": "sha256-pXyanHLUzLNd3MX9vsWG+6Z2hTU8niyphWstYEP3/GU=",
+        "lastModified": 1745310711,
+        "narHash": "sha256-ePyTpKEJTgX0gvgNQWd7tQYQ3glIkbqcW778RpHlqgA=",
         "owner": "Mic92",
         "repo": "sops-nix",
-        "rev": "61154300d945f0b147b30d24ddcafa159148026a",
+        "rev": "5e3e92b16d6fdf9923425a8d4df7496b2434f39c",
         "type": "github"
       },
       "original": {
@@ -1776,11 +1776,11 @@
     "spotifyplus-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1744475120,
-        "narHash": "sha256-nXnAdt4uBeoBY3w+6lVSmanjZ6KnVR3yoIA9vMXXJX8=",
+        "lastModified": 1745507481,
+        "narHash": "sha256-IFSGGUn/ojpqOBOUM2YJgzY7z3Z5HOBaA+M15OoTpAk=",
         "owner": "thlucas1",
         "repo": "homeassistantcomponent_spotifyplus",
-        "rev": "70fa77270835fb4b998c411b839e72764d3f9e7b",
+        "rev": "851b0c09e8c78639ebb81700cda4e61153c3df48",
         "type": "github"
       },
       "original": {
@@ -1792,11 +1792,11 @@
     "spotifywebapi-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1744034885,
-        "narHash": "sha256-+vJdkAVCeha6mfSLTvlr6IEcL3TVPNXu4D3Py44IK7g=",
+        "lastModified": 1745419099,
+        "narHash": "sha256-w8wyJPWjg6jA/Q8pRbmOL4DlvF/uQg8kGH/D9KntRdg=",
         "owner": "thlucas1",
         "repo": "SpotifyWebApiPython",
-        "rev": "4b1c6c1c2e99af7b5c9f7b6227eced649260fe81",
+        "rev": "b0e9071016a95e2142146038cb327442f737b71a",
         "type": "github"
       },
       "original": {
@@ -1875,11 +1875,11 @@
     "tuya-local-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1745113967,
-        "narHash": "sha256-2m5BYQzqRjGpXFbVqKnYHFdBTxzv8vmFYOgZDEZSQvg=",
+        "lastModified": 1745310688,
+        "narHash": "sha256-7aDmUrGTPXF6j0obAQq9bLj53cBz0rGWiGScpqvccsU=",
         "owner": "make-all",
         "repo": "tuya-local",
-        "rev": "f059e05c883188b04ca4c14819b4adb09b50b956",
+        "rev": "0092b5041386d3a42ec66414bcb14d28778675f2",
         "type": "github"
       },
       "original": {
@@ -1907,11 +1907,11 @@
     "vimplugin-roslyn-nvim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1744984504,
-        "narHash": "sha256-WeY6xU7AJPnCVM274KOlYKZJGlM6MTe2bJTA11OuQoM=",
+        "lastModified": 1745515849,
+        "narHash": "sha256-B+6GrmC4AhmAII2Y1q3ALL3GAaXksXkpiCsU191l/ak=",
         "owner": "seblj",
         "repo": "roslyn.nvim",
-        "rev": "d06aa2f6c5990dd195eb12e68bc5a96b6fd23bff",
+        "rev": "817983daa584d21f45d937928c87ba165b2a601a",
         "type": "github"
       },
       "original": {
@@ -1959,11 +1959,11 @@
     "wakewords-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1739969293,
-        "narHash": "sha256-kYiVnuZo/y3YPTc/9R3CQCGbOxiJIP/DsqkAOonvPUM=",
+        "lastModified": 1745474691,
+        "narHash": "sha256-XpfmqO2x0AnY88q5eNg+OHO9slYVoI3UHXxICazkM54=",
         "owner": "fwartner",
         "repo": "home-assistant-wakewords-collection",
-        "rev": "3264b27018c33b0d82279173c7ea8f28f2752866",
+        "rev": "755eded16d3f6feeb8556d2044357f07713e04e2",
         "type": "github"
       },
       "original": {
diff --git a/flake.nix b/flake.nix
index 1396f46a..7f937c00 100644
--- a/flake.nix
+++ b/flake.nix
@@ -146,6 +146,7 @@
       };
       owner = "horriblename";
       repo = "hyprgrass";
+      rev = "dab59fb9ddb29e90c868d42a3486dd51d2863cfe";
       type = "github";
     };
     hyprland = {
@@ -363,7 +364,6 @@
     };
     nixpkgs = {
       ref = "nixos-unstable";
-      rev = "b024ced1aac25639f8ca8fdfc2f8c4fbd66c48ef";
       shallow = true;
       type = "git";
       url = "https://github.com/NixOS/nixpkgs";
diff --git a/inputs/default.nix b/inputs/default.nix
index 81febbd7..02567f3f 100644
--- a/inputs/default.nix
+++ b/inputs/default.nix
@@ -14,9 +14,6 @@ let
       url = "https://github.com/NixOS/nixpkgs";
       ref = "nixos-unstable";
       shallow = true;
-
-      # FIXME: remove this on next flake update
-      rev = "b024ced1aac25639f8ca8fdfc2f8c4fbd66c48ef";
     };
 
     home-manager = mkInput {
@@ -176,6 +173,9 @@ let
       hyprgrass = mkHyprDep {
         owner = "horriblename";
         repo = "hyprgrass";
+
+        # FIXME: https://github.com/horriblename/hyprgrass/pull/232
+        rev = "dab59fb9ddb29e90c868d42a3486dd51d2863cfe";
       };
 
       hyprpaper = mkHyprDep {
diff --git a/lib/pkgs/mk-types/default.nix b/lib/pkgs/mk-types/default.nix
index 2579d360..cc2960d5 100644
--- a/lib/pkgs/mk-types/default.nix
+++ b/lib/pkgs/mk-types/default.nix
@@ -21,7 +21,7 @@ in
     pname = "${pname}-types";
     version = "0.0.0";
 
-    npmDepsHash = "sha256-NKmsPEshXn8nIpKPztSk47HsORMuo1twh4mQo91Bq20=";
+    npmDepsHash = "sha256-OazGca4hrQd1IsreB+Nt4OldevkgbjvRqO7fapeV5/0=";
 
     src = ./.;
     dontNpmBuild = true;
diff --git a/lib/pkgs/mk-types/package-lock.json b/lib/pkgs/mk-types/package-lock.json
index 85998355..1c229cf0 100644
--- a/lib/pkgs/mk-types/package-lock.json
+++ b/lib/pkgs/mk-types/package-lock.json
@@ -233,9 +233,9 @@
             }
         },
         "node_modules/@inquirer/prompts": {
-            "version": "7.4.1",
-            "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.4.1.tgz",
-            "integrity": "sha512-UlmM5FVOZF0gpoe1PT/jN4vk8JmpIWBlMvTL8M+hlvPmzN89K6z03+IFmyeu/oFCenwdwHDr2gky7nIGSEVvlA==",
+            "version": "7.5.0",
+            "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.5.0.tgz",
+            "integrity": "sha512-tk8Bx7l5AX/CR0sVfGj3Xg6v7cYlFBkEahH+EgBB+cZib6Fc83dwerTbzj7f2+qKckjIUGsviWRI1d7lx6nqQA==",
             "license": "MIT",
             "dependencies": {
                 "@inquirer/checkbox": "^4.1.5",
@@ -245,9 +245,9 @@
                 "@inquirer/input": "^4.1.9",
                 "@inquirer/number": "^3.0.12",
                 "@inquirer/password": "^4.0.12",
-                "@inquirer/rawlist": "^4.0.12",
+                "@inquirer/rawlist": "^4.1.0",
                 "@inquirer/search": "^3.0.12",
-                "@inquirer/select": "^4.1.1"
+                "@inquirer/select": "^4.2.0"
             },
             "engines": {
                 "node": ">=18"
@@ -262,9 +262,9 @@
             }
         },
         "node_modules/@inquirer/rawlist": {
-            "version": "4.0.12",
-            "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.0.12.tgz",
-            "integrity": "sha512-wNPJZy8Oc7RyGISPxp9/MpTOqX8lr0r+lCCWm7hQra+MDtYRgINv1hxw7R+vKP71Bu/3LszabxOodfV/uTfsaA==",
+            "version": "4.1.0",
+            "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.0.tgz",
+            "integrity": "sha512-6ob45Oh9pXmfprKqUiEeMz/tjtVTFQTgDDz1xAMKMrIvyrYjAmRbQZjMJfsictlL4phgjLhdLu27IkHNnNjB7g==",
             "license": "MIT",
             "dependencies": {
                 "@inquirer/core": "^10.1.10",
@@ -307,9 +307,9 @@
             }
         },
         "node_modules/@inquirer/select": {
-            "version": "4.1.1",
-            "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.1.1.tgz",
-            "integrity": "sha512-IUXzzTKVdiVNMA+2yUvPxWsSgOG4kfX93jOM4Zb5FgujeInotv5SPIJVeXQ+fO4xu7tW8VowFhdG5JRmmCyQ1Q==",
+            "version": "4.2.0",
+            "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.2.0.tgz",
+            "integrity": "sha512-KkXQ4aSySWimpV4V/TUJWdB3tdfENZUU765GjOIZ0uPwdbGIG6jrxD4dDf1w68uP+DVtfNhr1A92B+0mbTZ8FA==",
             "license": "MIT",
             "dependencies": {
                 "@inquirer/core": "^10.1.10",
@@ -795,9 +795,9 @@
             }
         },
         "node_modules/fast-xml-parser": {
-            "version": "5.2.0",
-            "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.0.tgz",
-            "integrity": "sha512-Uw9+Mjt4SBRud1IcaYuW/O0lW8SKKdMl5g7g24HiIuyH5fQSD+AVLybSlJtqLYEbytVFjWQa5DMGcNgeksdRBg==",
+            "version": "5.2.1",
+            "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.1.tgz",
+            "integrity": "sha512-Kqq/ewnRACQ20e0BlQ5KqHRYWRBp7yv+jttK4Yj2yY+2ldgCoxJkrP1NHUhjypsJ+eQXlGJ/jebM3wa60s1rbQ==",
             "funding": [
                 {
                     "type": "github",
@@ -859,9 +859,9 @@
             }
         },
         "node_modules/glob": {
-            "version": "11.0.1",
-            "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz",
-            "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==",
+            "version": "11.0.2",
+            "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.2.tgz",
+            "integrity": "sha512-YT7U7Vye+t5fZ/QMkBFrTJ7ZQxInIUjwyAjVj84CYXqgBdv30MFUPGnBR6sQaVq6Is15wYJUsnzTuWaGRBhBAQ==",
             "license": "ISC",
             "dependencies": {
                 "foreground-child": "^3.1.0",
@@ -919,13 +919,13 @@
             }
         },
         "node_modules/inquirer": {
-            "version": "12.5.2",
-            "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-12.5.2.tgz",
-            "integrity": "sha512-qoDk/vdSTIaXNXAoNnlg7ubexpJfUo7t8GT2vylxvE49BrLhToFuPPdMViidG2boHV7+AcP1TCkJs/+PPoF2QQ==",
+            "version": "12.6.0",
+            "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-12.6.0.tgz",
+            "integrity": "sha512-3zmmccQd/8o65nPOZJZ+2wqt76Ghw3+LaMrmc6JE/IzcvQhJ1st+QLCOo/iLS85/tILU0myG31a2TAZX0ysAvg==",
             "license": "MIT",
             "dependencies": {
                 "@inquirer/core": "^10.1.10",
-                "@inquirer/prompts": "^7.4.1",
+                "@inquirer/prompts": "^7.5.0",
                 "@inquirer/type": "^3.0.6",
                 "ansi-escapes": "^4.3.2",
                 "mute-stream": "^2.0.0",
diff --git a/modules/ags/config/default.nix b/modules/ags/config/default.nix
index 8f4757db..7ac7a691 100644
--- a/modules/ags/config/default.nix
+++ b/modules/ags/config/default.nix
@@ -1,3 +1,3 @@
 {
-  npmDepsHash = "sha256-2F8VeLRljwyK0s4q/3EUUm1aQkZtvwI5KqgLxKKwkLc=";
+  npmDepsHash = "sha256-MOkQhi4EOcf85XvFcOd9T878ycDOBcWfmc7Oawwists=";
 }
diff --git a/modules/ags/config/package-lock.json b/modules/ags/config/package-lock.json
index 0bf2d946..ee6a4db2 100644
--- a/modules/ags/config/package-lock.json
+++ b/modules/ags/config/package-lock.json
@@ -8,14 +8,14 @@
             "name": "ags",
             "version": "0.0.0",
             "dependencies": {
-                "@eslint/js": "9.25.0",
+                "@eslint/js": "9.25.1",
                 "@stylistic/eslint-plugin": "4.2.0",
                 "astal": "https://gitpkg.vercel.app/Aylur/astal/lang/gjs/src?c96126c7e261737270ad7ae35b27674c318648e6",
-                "eslint": "9.25.0",
-                "eslint-plugin-jsdoc": "50.6.9",
+                "eslint": "9.25.1",
+                "eslint-plugin-jsdoc": "50.6.10",
                 "fzf": "0.5.2",
                 "jiti": "2.4.2",
-                "typescript-eslint": "8.30.1"
+                "typescript-eslint": "8.31.0"
             }
         },
         "node_modules/@es-joy/jsdoccomment": {
@@ -174,9 +174,9 @@
             }
         },
         "node_modules/@eslint/js": {
-            "version": "9.25.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.0.tgz",
-            "integrity": "sha512-iWhsUS8Wgxz9AXNfvfOPFSW4VfMXdVhp1hjkZVhXCrpgh/aLcc45rX6MPu+tIVUWDw0HfNwth7O28M1xDxNf9w==",
+            "version": "9.25.1",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.1.tgz",
+            "integrity": "sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -300,18 +300,6 @@
                 "node": ">= 8"
             }
         },
-        "node_modules/@pkgr/core": {
-            "version": "0.1.2",
-            "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.2.tgz",
-            "integrity": "sha512-fdDH1LSGfZdTH2sxdpVMw31BanV28K/Gry0cVFxaNP77neJSkd82mM8ErPNYs9e+0O7SdHBLTDzDgwUuy18RnQ==",
-            "license": "MIT",
-            "engines": {
-                "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
-            },
-            "funding": {
-                "url": "https://opencollective.com/unts"
-            }
-        },
         "node_modules/@stylistic/eslint-plugin": {
             "version": "4.2.0",
             "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-4.2.0.tgz",
@@ -344,16 +332,16 @@
             "license": "MIT"
         },
         "node_modules/@typescript-eslint/eslint-plugin": {
-            "version": "8.30.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.30.1.tgz",
-            "integrity": "sha512-v+VWphxMjn+1t48/jO4t950D6KR8JaJuNXzi33Ve6P8sEmPr5k6CEXjdGwT6+LodVnEa91EQCtwjWNUCPweo+Q==",
+            "version": "8.31.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.31.0.tgz",
+            "integrity": "sha512-evaQJZ/J/S4wisevDvC1KFZkPzRetH8kYZbkgcTRyql3mcKsf+ZFDV1BVWUGTCAW5pQHoqn5gK5b8kn7ou9aFQ==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/regexpp": "^4.10.0",
-                "@typescript-eslint/scope-manager": "8.30.1",
-                "@typescript-eslint/type-utils": "8.30.1",
-                "@typescript-eslint/utils": "8.30.1",
-                "@typescript-eslint/visitor-keys": "8.30.1",
+                "@typescript-eslint/scope-manager": "8.31.0",
+                "@typescript-eslint/type-utils": "8.31.0",
+                "@typescript-eslint/utils": "8.31.0",
+                "@typescript-eslint/visitor-keys": "8.31.0",
                 "graphemer": "^1.4.0",
                 "ignore": "^5.3.1",
                 "natural-compare": "^1.4.0",
@@ -373,15 +361,15 @@
             }
         },
         "node_modules/@typescript-eslint/parser": {
-            "version": "8.30.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.30.1.tgz",
-            "integrity": "sha512-H+vqmWwT5xoNrXqWs/fesmssOW70gxFlgcMlYcBaWNPIEWDgLa4W9nkSPmhuOgLnXq9QYgkZ31fhDyLhleCsAg==",
+            "version": "8.31.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.31.0.tgz",
+            "integrity": "sha512-67kYYShjBR0jNI5vsf/c3WG4u+zDnCTHTPqVMQguffaWWFs7artgwKmfwdifl+r6XyM5LYLas/dInj2T0SgJyw==",
             "license": "MIT",
             "dependencies": {
-                "@typescript-eslint/scope-manager": "8.30.1",
-                "@typescript-eslint/types": "8.30.1",
-                "@typescript-eslint/typescript-estree": "8.30.1",
-                "@typescript-eslint/visitor-keys": "8.30.1",
+                "@typescript-eslint/scope-manager": "8.31.0",
+                "@typescript-eslint/types": "8.31.0",
+                "@typescript-eslint/typescript-estree": "8.31.0",
+                "@typescript-eslint/visitor-keys": "8.31.0",
                 "debug": "^4.3.4"
             },
             "engines": {
@@ -397,13 +385,13 @@
             }
         },
         "node_modules/@typescript-eslint/scope-manager": {
-            "version": "8.30.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.30.1.tgz",
-            "integrity": "sha512-+C0B6ChFXZkuaNDl73FJxRYT0G7ufVPOSQkqkpM/U198wUwUFOtgo1k/QzFh1KjpBitaK7R1tgjVz6o9HmsRPg==",
+            "version": "8.31.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.31.0.tgz",
+            "integrity": "sha512-knO8UyF78Nt8O/B64i7TlGXod69ko7z6vJD9uhSlm0qkAbGeRUSudcm0+K/4CrRjrpiHfBCjMWlc08Vav1xwcw==",
             "license": "MIT",
             "dependencies": {
-                "@typescript-eslint/types": "8.30.1",
-                "@typescript-eslint/visitor-keys": "8.30.1"
+                "@typescript-eslint/types": "8.31.0",
+                "@typescript-eslint/visitor-keys": "8.31.0"
             },
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -414,13 +402,13 @@
             }
         },
         "node_modules/@typescript-eslint/type-utils": {
-            "version": "8.30.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.30.1.tgz",
-            "integrity": "sha512-64uBF76bfQiJyHgZISC7vcNz3adqQKIccVoKubyQcOnNcdJBvYOILV1v22Qhsw3tw3VQu5ll8ND6hycgAR5fEA==",
+            "version": "8.31.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.31.0.tgz",
+            "integrity": "sha512-DJ1N1GdjI7IS7uRlzJuEDCgDQix3ZVYVtgeWEyhyn4iaoitpMBX6Ndd488mXSx0xah/cONAkEaYyylDyAeHMHg==",
             "license": "MIT",
             "dependencies": {
-                "@typescript-eslint/typescript-estree": "8.30.1",
-                "@typescript-eslint/utils": "8.30.1",
+                "@typescript-eslint/typescript-estree": "8.31.0",
+                "@typescript-eslint/utils": "8.31.0",
                 "debug": "^4.3.4",
                 "ts-api-utils": "^2.0.1"
             },
@@ -437,9 +425,9 @@
             }
         },
         "node_modules/@typescript-eslint/types": {
-            "version": "8.30.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.30.1.tgz",
-            "integrity": "sha512-81KawPfkuulyWo5QdyG/LOKbspyyiW+p4vpn4bYO7DM/hZImlVnFwrpCTnmNMOt8CvLRr5ojI9nU1Ekpw4RcEw==",
+            "version": "8.31.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.31.0.tgz",
+            "integrity": "sha512-Ch8oSjVyYyJxPQk8pMiP2FFGYatqXQfQIaMp+TpuuLlDachRWpUAeEu1u9B/v/8LToehUIWyiKcA/w5hUFRKuQ==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -450,13 +438,13 @@
             }
         },
         "node_modules/@typescript-eslint/typescript-estree": {
-            "version": "8.30.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.30.1.tgz",
-            "integrity": "sha512-kQQnxymiUy9tTb1F2uep9W6aBiYODgq5EMSk6Nxh4Z+BDUoYUSa029ISs5zTzKBFnexQEh71KqwjKnRz58lusQ==",
+            "version": "8.31.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.31.0.tgz",
+            "integrity": "sha512-xLmgn4Yl46xi6aDSZ9KkyfhhtnYI15/CvHbpOy/eR5NWhK/BK8wc709KKwhAR0m4ZKRP7h07bm4BWUYOCuRpQQ==",
             "license": "MIT",
             "dependencies": {
-                "@typescript-eslint/types": "8.30.1",
-                "@typescript-eslint/visitor-keys": "8.30.1",
+                "@typescript-eslint/types": "8.31.0",
+                "@typescript-eslint/visitor-keys": "8.31.0",
                 "debug": "^4.3.4",
                 "fast-glob": "^3.3.2",
                 "is-glob": "^4.0.3",
@@ -476,15 +464,15 @@
             }
         },
         "node_modules/@typescript-eslint/utils": {
-            "version": "8.30.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.30.1.tgz",
-            "integrity": "sha512-T/8q4R9En2tcEsWPQgB5BQ0XJVOtfARcUvOa8yJP3fh9M/mXraLxZrkCfGb6ChrO/V3W+Xbd04RacUEqk1CFEQ==",
+            "version": "8.31.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.31.0.tgz",
+            "integrity": "sha512-qi6uPLt9cjTFxAb1zGNgTob4x9ur7xC6mHQJ8GwEzGMGE9tYniublmJaowOJ9V2jUzxrltTPfdG2nKlWsq0+Ww==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.4.0",
-                "@typescript-eslint/scope-manager": "8.30.1",
-                "@typescript-eslint/types": "8.30.1",
-                "@typescript-eslint/typescript-estree": "8.30.1"
+                "@typescript-eslint/scope-manager": "8.31.0",
+                "@typescript-eslint/types": "8.31.0",
+                "@typescript-eslint/typescript-estree": "8.31.0"
             },
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -499,12 +487,12 @@
             }
         },
         "node_modules/@typescript-eslint/visitor-keys": {
-            "version": "8.30.1",
-            "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.30.1.tgz",
-            "integrity": "sha512-aEhgas7aJ6vZnNFC7K4/vMGDGyOiqWcYZPpIWrTKuTAlsvDNKy2GFDqh9smL+iq069ZvR0YzEeq0B8NJlLzjFA==",
+            "version": "8.31.0",
+            "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.31.0.tgz",
+            "integrity": "sha512-QcGHmlRHWOl93o64ZUMNewCdwKGU6WItOU52H0djgNmn1EOrhVudrDzXz4OycCRSCPwFCDrE2iIt5vmuUdHxuQ==",
             "license": "MIT",
             "dependencies": {
-                "@typescript-eslint/types": "8.30.1",
+                "@typescript-eslint/types": "8.31.0",
                 "eslint-visitor-keys": "^4.2.0"
             },
             "engines": {
@@ -709,12 +697,6 @@
             "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
             "license": "MIT"
         },
-        "node_modules/es-module-lexer": {
-            "version": "1.6.0",
-            "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz",
-            "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==",
-            "license": "MIT"
-        },
         "node_modules/escape-string-regexp": {
             "version": "4.0.0",
             "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
@@ -728,9 +710,9 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.25.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.0.tgz",
-            "integrity": "sha512-MsBdObhM4cEwkzCiraDv7A6txFXEqtNXOb877TsSp2FCkBNl8JfVQrmiuDqC1IkejT6JLPzYBXx/xAiYhyzgGA==",
+            "version": "9.25.1",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.1.tgz",
+            "integrity": "sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
@@ -739,7 +721,7 @@
                 "@eslint/config-helpers": "^0.2.1",
                 "@eslint/core": "^0.13.0",
                 "@eslint/eslintrc": "^3.3.1",
-                "@eslint/js": "9.25.0",
+                "@eslint/js": "9.25.1",
                 "@eslint/plugin-kit": "^0.2.8",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
@@ -788,9 +770,9 @@
             }
         },
         "node_modules/eslint-plugin-jsdoc": {
-            "version": "50.6.9",
-            "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.9.tgz",
-            "integrity": "sha512-7/nHu3FWD4QRG8tCVqcv+BfFtctUtEDWc29oeDXB4bwmDM2/r1ndl14AG/2DUntdqH7qmpvdemJKwb3R97/QEw==",
+            "version": "50.6.10",
+            "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.10.tgz",
+            "integrity": "sha512-HJRMrRIXjWtDyU6yar8xvdKMc1waSAfE6vRjEWBpws6pYeoVyCFtQQneEBnQkHXOV60idH5ymo/bh1XNBOTQmA==",
             "license": "BSD-3-Clause",
             "dependencies": {
                 "@es-joy/jsdoccomment": "~0.49.0",
@@ -800,10 +782,9 @@
                 "escape-string-regexp": "^4.0.0",
                 "espree": "^10.1.0",
                 "esquery": "^1.6.0",
-                "parse-imports": "^2.1.1",
+                "parse-imports-exports": "^0.2.4",
                 "semver": "^7.6.3",
-                "spdx-expression-parse": "^4.0.0",
-                "synckit": "^0.9.1"
+                "spdx-expression-parse": "^4.0.0"
             },
             "engines": {
                 "node": ">=18"
@@ -1361,19 +1342,21 @@
                 "node": ">=6"
             }
         },
-        "node_modules/parse-imports": {
-            "version": "2.2.1",
-            "resolved": "https://registry.npmjs.org/parse-imports/-/parse-imports-2.2.1.tgz",
-            "integrity": "sha512-OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4JeQ==",
-            "license": "Apache-2.0 AND MIT",
+        "node_modules/parse-imports-exports": {
+            "version": "0.2.4",
+            "resolved": "https://registry.npmjs.org/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz",
+            "integrity": "sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==",
+            "license": "MIT",
             "dependencies": {
-                "es-module-lexer": "^1.5.3",
-                "slashes": "^3.0.12"
-            },
-            "engines": {
-                "node": ">= 18"
+                "parse-statements": "1.0.11"
             }
         },
+        "node_modules/parse-statements": {
+            "version": "1.0.11",
+            "resolved": "https://registry.npmjs.org/parse-statements/-/parse-statements-1.0.11.tgz",
+            "integrity": "sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==",
+            "license": "MIT"
+        },
         "node_modules/path-exists": {
             "version": "4.0.0",
             "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -1517,12 +1500,6 @@
                 "node": ">=8"
             }
         },
-        "node_modules/slashes": {
-            "version": "3.0.12",
-            "resolved": "https://registry.npmjs.org/slashes/-/slashes-3.0.12.tgz",
-            "integrity": "sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==",
-            "license": "ISC"
-        },
         "node_modules/spdx-exceptions": {
             "version": "2.5.0",
             "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
@@ -1569,22 +1546,6 @@
                 "node": ">=8"
             }
         },
-        "node_modules/synckit": {
-            "version": "0.9.2",
-            "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz",
-            "integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==",
-            "license": "MIT",
-            "dependencies": {
-                "@pkgr/core": "^0.1.0",
-                "tslib": "^2.6.2"
-            },
-            "engines": {
-                "node": "^14.18.0 || >=16.0.0"
-            },
-            "funding": {
-                "url": "https://opencollective.com/unts"
-            }
-        },
         "node_modules/to-regex-range": {
             "version": "5.0.1",
             "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -1609,12 +1570,6 @@
                 "typescript": ">=4.8.4"
             }
         },
-        "node_modules/tslib": {
-            "version": "2.8.1",
-            "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
-            "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
-            "license": "0BSD"
-        },
         "node_modules/type-check": {
             "version": "0.4.0",
             "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -1642,14 +1597,14 @@
             }
         },
         "node_modules/typescript-eslint": {
-            "version": "8.30.1",
-            "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.30.1.tgz",
-            "integrity": "sha512-D7lC0kcehVH7Mb26MRQi64LMyRJsj3dToJxM1+JVTl53DQSV5/7oUGWQLcKl1C1KnoVHxMMU2FNQMffr7F3Row==",
+            "version": "8.31.0",
+            "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.31.0.tgz",
+            "integrity": "sha512-u+93F0sB0An8WEAPtwxVhFby573E8ckdjwUUQUj9QA4v8JAvgtoDdIyYR3XFwFHq2W1KJ1AurwJCO+w+Y1ixyQ==",
             "license": "MIT",
             "dependencies": {
-                "@typescript-eslint/eslint-plugin": "8.30.1",
-                "@typescript-eslint/parser": "8.30.1",
-                "@typescript-eslint/utils": "8.30.1"
+                "@typescript-eslint/eslint-plugin": "8.31.0",
+                "@typescript-eslint/parser": "8.31.0",
+                "@typescript-eslint/utils": "8.31.0"
             },
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
diff --git a/modules/ags/config/package.json b/modules/ags/config/package.json
index 170c8e65..56585d41 100644
--- a/modules/ags/config/package.json
+++ b/modules/ags/config/package.json
@@ -4,12 +4,12 @@
     "main": "app.ts",
     "dependencies": {
         "astal": "https://gitpkg.vercel.app/Aylur/astal/lang/gjs/src?c96126c7e261737270ad7ae35b27674c318648e6",
-        "@eslint/js": "9.25.0",
+        "@eslint/js": "9.25.1",
         "@stylistic/eslint-plugin": "4.2.0",
-        "eslint": "9.25.0",
-        "eslint-plugin-jsdoc": "50.6.9",
+        "eslint": "9.25.1",
+        "eslint-plugin-jsdoc": "50.6.10",
         "fzf": "0.5.2",
         "jiti": "2.4.2",
-        "typescript-eslint": "8.30.1"
+        "typescript-eslint": "8.31.0"
     }
 }
diff --git a/scopedPackages/lovelace-components/material-rounded-theme/default.nix b/scopedPackages/lovelace-components/material-rounded-theme/default.nix
index cc4be4d3..b07ef2b5 100644
--- a/scopedPackages/lovelace-components/material-rounded-theme/default.nix
+++ b/scopedPackages/lovelace-components/material-rounded-theme/default.nix
@@ -6,7 +6,7 @@
   ...
 }: let
   pname = "material-rounded-theme";
-  version = "4.0.2";
+  version = "4.0.4";
 in
   stdenv.mkDerivation {
     inherit pname version;
@@ -15,7 +15,7 @@ in
       owner = "Nerwyn";
       repo = pname;
       rev = version;
-      hash = "sha256-ZsajvWYUbrOUVTmzSIyNiEUsCgURuYdah5Ra5NSmep8=";
+      hash = "sha256-fCXkKRTN3JzmBcgVaeCDahMxQl8CRXRQ/oTt/DqzfD8=";
     };
 
     installPhase = ''