diff --git a/.github/update.log b/.github/update.log index 930c2d17f2..aadc3d7867 100644 --- a/.github/update.log +++ b/.github/update.log @@ -1276,3 +1276,4 @@ Update On Sun Feb 15 19:49:15 CET 2026 Update On Mon Feb 16 19:58:09 CET 2026 Update On Tue Feb 17 20:08:38 CET 2026 Update On Wed Feb 18 20:06:41 CET 2026 +Update On Thu Feb 19 20:02:27 CET 2026 diff --git a/clash-nyanpasu/backend/Cargo.lock b/clash-nyanpasu/backend/Cargo.lock index c8f0ab60fe..f38faa705a 100644 --- a/clash-nyanpasu/backend/Cargo.lock +++ b/clash-nyanpasu/backend/Cargo.lock @@ -1215,9 +1215,9 @@ checksum = "f4ad8f11f288f48ca24471bbd51ac257aaeaaa07adae295591266b792902ae64" [[package]] name = "bumpalo" -version = "3.19.1" +version = "3.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" +checksum = "5c6f81257d10a0f602a294ae4182251151ff97dbb504ef9afcdda4a64b24d9b4" [[package]] name = "bytemuck" diff --git a/clash-nyanpasu/frontend/nyanpasu/package.json b/clash-nyanpasu/frontend/nyanpasu/package.json index 90a52cadb5..115813d4ba 100644 --- a/clash-nyanpasu/frontend/nyanpasu/package.json +++ b/clash-nyanpasu/frontend/nyanpasu/package.json @@ -34,7 +34,7 @@ "@radix-ui/react-switch": "1.2.6", "@radix-ui/react-tooltip": "1.2.8", "@radix-ui/react-use-controllable-state": "1.2.2", - "@tailwindcss/postcss": "4.1.18", + "@tailwindcss/postcss": "4.2.0", "@tanstack/react-table": "8.21.3", "@tanstack/react-virtual": "3.13.18", "@tanstack/router-zod-adapter": "1.81.5", @@ -49,8 +49,8 @@ "country-emoji": "1.5.6", "dayjs": "1.11.19", "framer-motion": "12.34.2", - "i18next": "25.8.10", - "jotai": "2.17.1", + "i18next": "25.8.11", + "jotai": "2.18.0", "json-schema": "0.4.0", "material-react-table": "3.2.1", "monaco-editor": "0.55.1", @@ -74,12 +74,12 @@ "@csstools/normalize.css": "12.1.1", "@emotion/babel-plugin": "11.13.5", "@emotion/react": "11.14.0", - "@iconify/json": "2.2.440", + "@iconify/json": "2.2.441", "@monaco-editor/react": "4.7.0", "@tanstack/react-query": "5.90.21", - "@tanstack/react-router": "1.160.2", - "@tanstack/react-router-devtools": "1.160.2", - "@tanstack/router-plugin": "1.161.0", + "@tanstack/react-router": "1.161.1", + "@tanstack/react-router-devtools": "1.161.1", + "@tanstack/router-plugin": "1.161.1", "@tauri-apps/plugin-clipboard-manager": "2.3.2", "@tauri-apps/plugin-dialog": "2.6.0", "@tauri-apps/plugin-fs": "2.4.5", diff --git a/clash-nyanpasu/frontend/ui/package.json b/clash-nyanpasu/frontend/ui/package.json index 16bf2d801d..a79a7bdc55 100644 --- a/clash-nyanpasu/frontend/ui/package.json +++ b/clash-nyanpasu/frontend/ui/package.json @@ -29,7 +29,7 @@ "react-error-boundary": "6.0.0", "react-i18next": "15.7.4", "react-use": "17.6.0", - "tailwindcss": "4.1.18", + "tailwindcss": "4.2.0", "vite": "7.3.1", "vite-tsconfig-paths": "6.1.1" }, @@ -39,7 +39,7 @@ "clsx": "2.1.1", "d3-interpolate-path": "2.3.0", "sass-embedded": "1.97.3", - "tailwind-merge": "3.4.1", + "tailwind-merge": "3.5.0", "typescript-plugin-css-modules": "5.2.0", "vite-plugin-dts": "4.5.4" } diff --git a/clash-nyanpasu/package.json b/clash-nyanpasu/package.json index f9f95c998c..fa34745085 100644 --- a/clash-nyanpasu/package.json +++ b/clash-nyanpasu/package.json @@ -56,8 +56,8 @@ "lodash-es": "4.17.23" }, "devDependencies": { - "@commitlint/cli": "20.4.1", - "@commitlint/config-conventional": "20.4.1", + "@commitlint/cli": "20.4.2", + "@commitlint/config-conventional": "20.4.2", "@ianvs/prettier-plugin-sort-imports": "4.7.1", "@tauri-apps/cli": "2.10.0", "@types/fs-extra": "11.0.4", @@ -68,7 +68,7 @@ "cross-env": "10.1.0", "dedent": "1.7.1", "globals": "17.3.0", - "knip": "5.84.0", + "knip": "5.84.1", "lint-staged": "16.2.7", "npm-run-all2": "8.0.4", "oxlint": "1.48.0", @@ -87,7 +87,7 @@ "stylelint-declaration-block-no-ignored-properties": "3.0.0", "stylelint-order": "7.0.1", "stylelint-scss": "7.0.0", - "tailwindcss": "4.1.18", + "tailwindcss": "4.2.0", "tsx": "4.21.0", "typescript": "5.9.3" }, diff --git a/clash-nyanpasu/pnpm-lock.yaml b/clash-nyanpasu/pnpm-lock.yaml index 5c3db22e4b..3c2f82b7c5 100644 --- a/clash-nyanpasu/pnpm-lock.yaml +++ b/clash-nyanpasu/pnpm-lock.yaml @@ -23,11 +23,11 @@ importers: version: 4.17.23 devDependencies: '@commitlint/cli': - specifier: 20.4.1 - version: 20.4.1(@types/node@24.10.13)(typescript@5.9.3) + specifier: 20.4.2 + version: 20.4.2(@types/node@24.10.13)(typescript@5.9.3) '@commitlint/config-conventional': - specifier: 20.4.1 - version: 20.4.1 + specifier: 20.4.2 + version: 20.4.2 '@ianvs/prettier-plugin-sort-imports': specifier: 4.7.1 version: 4.7.1(@prettier/plugin-oxc@0.1.3)(content-tag@4.0.0)(prettier-plugin-ember-template-tag@2.1.3(prettier@3.8.1))(prettier@3.8.1) @@ -59,8 +59,8 @@ importers: specifier: 17.3.0 version: 17.3.0 knip: - specifier: 5.84.0 - version: 5.84.0(@types/node@24.10.13)(typescript@5.9.3) + specifier: 5.84.1 + version: 5.84.1(@types/node@24.10.13)(typescript@5.9.3) lint-staged: specifier: 16.2.7 version: 16.2.7 @@ -116,8 +116,8 @@ importers: specifier: 7.0.0 version: 7.0.0(stylelint@17.3.0(typescript@5.9.3)) tailwindcss: - specifier: 4.1.18 - version: 4.1.18 + specifier: 4.2.0 + version: 4.2.0 tsx: specifier: 4.21.0 version: 4.21.0 @@ -234,8 +234,8 @@ importers: specifier: 1.2.2 version: 1.2.2(@types/react@19.2.14)(react@19.2.4) '@tailwindcss/postcss': - specifier: 4.1.18 - version: 4.1.18 + specifier: 4.2.0 + version: 4.2.0 '@tanstack/react-table': specifier: 8.21.3 version: 8.21.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -244,7 +244,7 @@ importers: version: 3.13.18(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@tanstack/router-zod-adapter': specifier: 1.81.5 - version: 1.81.5(@tanstack/react-router@1.160.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(zod@4.3.6) + version: 1.81.5(@tanstack/react-router@1.161.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(zod@4.3.6) '@tauri-apps/api': specifier: 2.10.1 version: 2.10.1 @@ -279,11 +279,11 @@ importers: specifier: 12.34.2 version: 12.34.2(@emotion/is-prop-valid@1.3.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) i18next: - specifier: 25.8.10 - version: 25.8.10(typescript@5.9.3) + specifier: 25.8.11 + version: 25.8.11(typescript@5.9.3) jotai: - specifier: 2.17.1 - version: 2.17.1(@babel/core@7.29.0)(@babel/template@7.28.6)(@types/react@19.2.14)(react@19.2.4) + specifier: 2.18.0 + version: 2.18.0(@babel/core@7.29.0)(@babel/template@7.28.6)(@types/react@19.2.14)(react@19.2.4) json-schema: specifier: 0.4.0 version: 0.4.0 @@ -316,7 +316,7 @@ importers: version: 8.2.0(9489c1b0cad6767e8aa76cc60ab09b7b) react-i18next: specifier: 15.7.4 - version: 15.7.4(i18next@25.8.10(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + version: 15.7.4(i18next@25.8.11(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) react-markdown: specifier: 10.1.0 version: 10.1.0(@types/react@19.2.14)(react@19.2.4) @@ -349,8 +349,8 @@ importers: specifier: 11.14.0 version: 11.14.0(@types/react@19.2.14)(react@19.2.4) '@iconify/json': - specifier: 2.2.440 - version: 2.2.440 + specifier: 2.2.441 + version: 2.2.441 '@monaco-editor/react': specifier: 4.7.0 version: 4.7.0(monaco-editor@0.55.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -358,14 +358,14 @@ importers: specifier: 5.90.21 version: 5.90.21(react@19.2.4) '@tanstack/react-router': - specifier: 1.160.2 - version: 1.160.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + specifier: 1.161.1 + version: 1.161.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@tanstack/react-router-devtools': - specifier: 1.160.2 - version: 1.160.2(@tanstack/react-router@1.160.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.160.0)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + specifier: 1.161.1 + version: 1.161.1(@tanstack/react-router@1.161.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.161.1)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@tanstack/router-plugin': - specifier: 1.161.0 - version: 1.161.0(@tanstack/react-router@1.160.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)) + specifier: 1.161.1 + version: 1.161.1(@tanstack/react-router@1.161.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)) '@tauri-apps/plugin-clipboard-manager': specifier: 2.3.2 version: 2.3.2 @@ -401,13 +401,13 @@ importers: version: 13.15.10 '@vitejs/plugin-legacy': specifier: 7.2.1 - version: 7.2.1(terser@5.36.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 7.2.1(terser@5.36.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)) '@vitejs/plugin-react': specifier: 5.1.4 - version: 5.1.4(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 5.1.4(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)) '@vitejs/plugin-react-swc': specifier: 4.2.3 - version: 4.2.3(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 4.2.3(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)) change-case: specifier: 5.4.4 version: 5.4.4 @@ -446,19 +446,19 @@ importers: version: 13.15.26 vite: specifier: 7.3.1 - version: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1) + version: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1) vite-plugin-html: specifier: 3.2.2 - version: 3.2.2(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 3.2.2(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)) vite-plugin-sass-dts: specifier: 1.3.35 - version: 1.3.35(postcss@8.5.6)(prettier@3.8.1)(sass-embedded@1.97.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 1.3.35(postcss@8.5.6)(prettier@3.8.1)(sass-embedded@1.97.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)) vite-plugin-svgr: specifier: 4.5.0 - version: 4.5.0(rollup@4.46.2)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 4.5.0(rollup@4.46.2)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)) vite-tsconfig-paths: specifier: 6.1.1 - version: 6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)) zod: specifier: 4.3.6 version: 4.3.6 @@ -494,7 +494,7 @@ importers: version: 19.2.14 '@vitejs/plugin-react': specifier: 5.1.4 - version: 5.1.4(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 5.1.4(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)) ahooks: specifier: 3.9.6 version: 3.9.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -515,19 +515,19 @@ importers: version: 6.0.0(react@19.2.4) react-i18next: specifier: 15.7.4 - version: 15.7.4(i18next@25.8.10(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + version: 15.7.4(i18next@25.8.11(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) react-use: specifier: 17.6.0 version: 17.6.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) tailwindcss: - specifier: 4.1.18 - version: 4.1.18 + specifier: 4.2.0 + version: 4.2.0 vite: specifier: 7.3.1 - version: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1) + version: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1) vite-tsconfig-paths: specifier: 6.1.1 - version: 6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)) devDependencies: '@emotion/react': specifier: 11.14.0 @@ -545,14 +545,14 @@ importers: specifier: 1.97.3 version: 1.97.3 tailwind-merge: - specifier: 3.4.1 - version: 3.4.1 + specifier: 3.5.0 + version: 3.5.0 typescript-plugin-css-modules: specifier: 5.2.0 version: 5.2.0(typescript@5.9.3) vite-plugin-dts: specifier: 4.5.4 - version: 4.5.4(@types/node@24.10.13)(rollup@4.46.2)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 4.5.4(@types/node@24.10.13)(rollup@4.46.2)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)) scripts: dependencies: @@ -1261,13 +1261,13 @@ packages: '@cacheable/utils@2.3.4': resolution: {integrity: sha512-knwKUJEYgIfwShABS1BX6JyJJTglAFcEU7EXqzTdiGCXur4voqkiJkdgZIQtWNFhynzDWERcTYv/sETMu3uJWA==} - '@commitlint/cli@20.4.1': - resolution: {integrity: sha512-uuFKKpc7OtQM+6SRqT+a4kV818o1pS+uvv/gsRhyX7g4x495jg+Q7P0+O9VNGyLXBYP0syksS7gMRDJKcekr6A==} + '@commitlint/cli@20.4.2': + resolution: {integrity: sha512-YjYSX2yj/WsVoxh9mNiymfFS2ADbg2EK4+1WAsMuckwKMCqJ5PDG0CJU/8GvmHWcv4VRB2V02KqSiecRksWqZQ==} engines: {node: '>=v18'} hasBin: true - '@commitlint/config-conventional@20.4.1': - resolution: {integrity: sha512-0YUvIeBtpi86XriqrR+TCULVFiyYTIOEPjK7tTRMxjcBm1qlzb+kz7IF2WxL6Fq5DaundG8VO37BNgMkMTBwqA==} + '@commitlint/config-conventional@20.4.2': + resolution: {integrity: sha512-rwkTF55q7Q+6dpSKUmJoScV0f3EpDlWKw2UPzklkLS4o5krMN1tPWAVOgHRtyUTMneIapLeQwaCjn44Td6OzBQ==} engines: {node: '>=v18'} '@commitlint/config-validator@20.4.0': @@ -1290,8 +1290,8 @@ packages: resolution: {integrity: sha512-In5EO4JR1lNsAv1oOBBO24V9ND1IqdAJDKZiEpdfjDl2HMasAcT7oA+5BKONv1pRoLG380DGPE2W2RIcUwdgLA==} engines: {node: '>=v18'} - '@commitlint/lint@20.4.1': - resolution: {integrity: sha512-g94LrGl/c6UhuhDQqNqU232aslLEN2vzc7MPfQTHzwzM4GHNnEAwVWWnh0zX8S5YXecuLXDwbCsoGwmpAgPWKA==} + '@commitlint/lint@20.4.2': + resolution: {integrity: sha512-buquzNRtFng6xjXvBU1abY/WPEEjCgUipNQrNmIWe8QuJ6LWLtei/LDBAzEe5ASm45+Q9L2Xi3/GVvlj50GAug==} engines: {node: '>=v18'} '@commitlint/load@20.4.0': @@ -1314,8 +1314,8 @@ packages: resolution: {integrity: sha512-ay1KM8q0t+/OnlpqXJ+7gEFQNlUtSU5Gxr8GEwnVf2TPN3+ywc5DzL3JCxmpucqxfHBTFwfRMXxPRRnR5Ki20g==} engines: {node: '>=v18'} - '@commitlint/rules@20.4.1': - resolution: {integrity: sha512-WtqypKEPbQEuJwJS4aKs0OoJRBKz1HXPBC9wRtzVNH68FLhPWzxXlF09hpUXM9zdYTpm4vAdoTGkWiBgQ/vL0g==} + '@commitlint/rules@20.4.2': + resolution: {integrity: sha512-oz83pnp5Yq6uwwTAabuVQPNlPfeD2Y5ZjMb7Wx8FSUlu4sLYJjbBWt8031Z0osCFPfHzAwSYrjnfDFKtuSMdKg==} engines: {node: '>=v18'} '@commitlint/to-lines@20.0.0': @@ -1683,8 +1683,8 @@ packages: prettier-plugin-ember-template-tag: optional: true - '@iconify/json@2.2.440': - resolution: {integrity: sha512-W6FCAYp7vyEZmoW++l4V3e5F3usBxQvD5SXbVXOL/cy2wRCucC3XF9QVJcZTtriTdcoZQZqTZHjClkHK4CCSYQ==} + '@iconify/json@2.2.441': + resolution: {integrity: sha512-SN7n/3vboWO7A2iTV/t5RP5Hp0dSJkwpeQ/FsksN3sV8BsV0WuAhJp0n4HmXoAD+Icu0/cM07a8ijt+qSDf5Cg==} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} @@ -3387,69 +3387,69 @@ packages: '@swc/types@0.1.25': resolution: {integrity: sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==} - '@tailwindcss/node@4.1.18': - resolution: {integrity: sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==} + '@tailwindcss/node@4.2.0': + resolution: {integrity: sha512-Yv+fn/o2OmL5fh/Ir62VXItdShnUxfpkMA4Y7jdeC8O81WPB8Kf6TT6GSHvnqgSwDzlB5iT7kDpeXxLsUS0T6Q==} - '@tailwindcss/oxide-android-arm64@4.1.18': - resolution: {integrity: sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-android-arm64@4.2.0': + resolution: {integrity: sha512-F0QkHAVaW/JNBWl4CEKWdZ9PMb0khw5DCELAOnu+RtjAfx5Zgw+gqCHFvqg3AirU1IAd181fwOtJQ5I8Yx5wtw==} + engines: {node: '>= 20'} cpu: [arm64] os: [android] - '@tailwindcss/oxide-darwin-arm64@4.1.18': - resolution: {integrity: sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-darwin-arm64@4.2.0': + resolution: {integrity: sha512-I0QylkXsBsJMZ4nkUNSR04p6+UptjcwhcVo3Zu828ikiEqHjVmQL9RuQ6uT/cVIiKpvtVA25msu/eRV97JeNSA==} + engines: {node: '>= 20'} cpu: [arm64] os: [darwin] - '@tailwindcss/oxide-darwin-x64@4.1.18': - resolution: {integrity: sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-darwin-x64@4.2.0': + resolution: {integrity: sha512-6TmQIn4p09PBrmnkvbYQ0wbZhLtbaksCDx7Y7R3FYYx0yxNA7xg5KP7dowmQ3d2JVdabIHvs3Hx4K3d5uCf8xg==} + engines: {node: '>= 20'} cpu: [x64] os: [darwin] - '@tailwindcss/oxide-freebsd-x64@4.1.18': - resolution: {integrity: sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-freebsd-x64@4.2.0': + resolution: {integrity: sha512-qBudxDvAa2QwGlq9y7VIzhTvp2mLJ6nD/G8/tI70DCDoneaUeLWBJaPcbfzqRIWraj+o969aDQKvKW9dvkUizw==} + engines: {node: '>= 20'} cpu: [x64] os: [freebsd] - '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': - resolution: {integrity: sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.0': + resolution: {integrity: sha512-7XKkitpy5NIjFZNUQPeUyNJNJn1CJeV7rmMR+exHfTuOsg8rxIO9eNV5TSEnqRcaOK77zQpsyUkBWmPy8FgdSg==} + engines: {node: '>= 20'} cpu: [arm] os: [linux] - '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': - resolution: {integrity: sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-linux-arm64-gnu@4.2.0': + resolution: {integrity: sha512-Mff5a5Q3WoQR01pGU1gr29hHM1N93xYrKkGXfPw/aRtK4bOc331Ho4Tgfsm5WDGvpevqMpdlkCojT3qlCQbCpA==} + engines: {node: '>= 20'} cpu: [arm64] os: [linux] libc: [glibc] - '@tailwindcss/oxide-linux-arm64-musl@4.1.18': - resolution: {integrity: sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-linux-arm64-musl@4.2.0': + resolution: {integrity: sha512-XKcSStleEVnbH6W/9DHzZv1YhjE4eSS6zOu2eRtYAIh7aV4o3vIBs+t/B15xlqoxt6ef/0uiqJVB6hkHjWD/0A==} + engines: {node: '>= 20'} cpu: [arm64] os: [linux] libc: [musl] - '@tailwindcss/oxide-linux-x64-gnu@4.1.18': - resolution: {integrity: sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-linux-x64-gnu@4.2.0': + resolution: {integrity: sha512-/hlXCBqn9K6fi7eAM0RsobHwJYa5V/xzWspVTzxnX+Ft9v6n+30Pz8+RxCn7sQL/vRHHLS30iQPrHQunu6/vJA==} + engines: {node: '>= 20'} cpu: [x64] os: [linux] libc: [glibc] - '@tailwindcss/oxide-linux-x64-musl@4.1.18': - resolution: {integrity: sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-linux-x64-musl@4.2.0': + resolution: {integrity: sha512-lKUaygq4G7sWkhQbfdRRBkaq4LY39IriqBQ+Gk6l5nKq6Ay2M2ZZb1tlIyRNgZKS8cbErTwuYSor0IIULC0SHw==} + engines: {node: '>= 20'} cpu: [x64] os: [linux] libc: [musl] - '@tailwindcss/oxide-wasm32-wasi@4.1.18': - resolution: {integrity: sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==} + '@tailwindcss/oxide-wasm32-wasi@4.2.0': + resolution: {integrity: sha512-xuDjhAsFdUuFP5W9Ze4k/o4AskUtI8bcAGU4puTYprr89QaYFmhYOPfP+d1pH+k9ets6RoE23BXZM1X1jJqoyw==} engines: {node: '>=14.0.0'} cpu: [wasm32] bundledDependencies: @@ -3460,24 +3460,24 @@ packages: - '@emnapi/wasi-threads' - tslib - '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': - resolution: {integrity: sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-win32-arm64-msvc@4.2.0': + resolution: {integrity: sha512-2UU/15y1sWDEDNJXxEIrfWKC2Yb4YgIW5Xz2fKFqGzFWfoMHWFlfa1EJlGO2Xzjkq/tvSarh9ZTjvbxqWvLLXA==} + engines: {node: '>= 20'} cpu: [arm64] os: [win32] - '@tailwindcss/oxide-win32-x64-msvc@4.1.18': - resolution: {integrity: sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==} - engines: {node: '>= 10'} + '@tailwindcss/oxide-win32-x64-msvc@4.2.0': + resolution: {integrity: sha512-CrFadmFoc+z76EV6LPG1jx6XceDsaCG3lFhyLNo/bV9ByPrE+FnBPckXQVP4XRkN76h3Fjt/a+5Er/oA/nCBvQ==} + engines: {node: '>= 20'} cpu: [x64] os: [win32] - '@tailwindcss/oxide@4.1.18': - resolution: {integrity: sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==} - engines: {node: '>= 10'} + '@tailwindcss/oxide@4.2.0': + resolution: {integrity: sha512-AZqQzADaj742oqn2xjl5JbIOzZB/DGCYF/7bpvhA8KvjUj9HJkag6bBuwZvH1ps6dfgxNHyuJVlzSr2VpMgdTQ==} + engines: {node: '>= 20'} - '@tailwindcss/postcss@4.1.18': - resolution: {integrity: sha512-Ce0GFnzAOuPyfV5SxjXGn0CubwGcuDB0zcdaPuCSzAa/2vII24JTkH+I6jcbXLb1ctjZMZZI6OjDaLPJQL1S0g==} + '@tailwindcss/postcss@4.2.0': + resolution: {integrity: sha512-u6YBacGpOm/ixPfKqfgrJEjMfrYmPD7gEFRoygS/hnQaRtV0VCBdpkx5Ouw9pnaLRwwlgGCuJw8xLpaR0hOrQg==} '@tanstack/history@1.154.14': resolution: {integrity: sha512-xyIfof8eHBuub1CkBnbKNKQXeRZC4dClhmzePHVOEel4G7lk/dW+TQ16da7CFdeNLv6u6Owf5VoBQxoo6DFTSA==} @@ -3495,20 +3495,20 @@ packages: peerDependencies: react: ^18 || ^19 - '@tanstack/react-router-devtools@1.160.2': - resolution: {integrity: sha512-uSdQD77S+LcANCiWcLsrqSxyEqTXdZhBETbciKcYJrcgd8rfkxg6AIewYi7148QPU6gb3VKQbeRlqXmBeEs5dg==} + '@tanstack/react-router-devtools@1.161.1': + resolution: {integrity: sha512-fl+o760gCHbd4Nb64SpVJQjpe77xDh2Mx6NqZy0aKACXvWRd8CDcFPzSvDZu4s7tHqFKMfzXqhNzL/jT+A8Prg==} engines: {node: '>=12'} peerDependencies: - '@tanstack/react-router': ^1.160.2 - '@tanstack/router-core': ^1.160.0 + '@tanstack/react-router': ^1.161.1 + '@tanstack/router-core': ^1.161.1 react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' peerDependenciesMeta: '@tanstack/router-core': optional: true - '@tanstack/react-router@1.160.2': - resolution: {integrity: sha512-EJWAMS4qCfWKNCzzYGy6ZuWTdBATYEEWieaQdmM7zUesyOQ01j7o6aKXdmCp9rWuSKjPHXagWubEnEo+Puhi3w==} + '@tanstack/react-router@1.161.1': + resolution: {integrity: sha512-RQlCaunj+sleC8/JLxd22sWNpwqTHftcRdwGwNF27tjEzTnj06C6azWmA5sGclTdxGVclEOc/eaW7bUv5klsNw==} engines: {node: '>=12'} peerDependencies: react: '>=18.0.0 || >=19.0.0' @@ -3539,30 +3539,30 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/router-core@1.160.0': - resolution: {integrity: sha512-vbh6OsE0MG+0c+SKh2uk5yEEZlWsxT96Ub2JaTs7ixOvZp3Wu9PTEIe2BA3cShNZhEsDI0Le4NqgY4XIaHLLvA==} + '@tanstack/router-core@1.161.1': + resolution: {integrity: sha512-Ika9RBvxB5cE+ziLxq90rqwhl9sb+j6mlGkRDwuDaGSDODenFeCDzjE0YQlgQ/kBUdSK2K1fFBiQPy5cnl54Og==} engines: {node: '>=12'} - '@tanstack/router-devtools-core@1.160.0': - resolution: {integrity: sha512-P/l0GVd0qmDbskg8/UbkOrCxuFz0t69BCxv2j4+8Xfy8AcqnFtoR1LChKgYyxGPy9sWOxktAneFdy1xA3X/Q6A==} + '@tanstack/router-devtools-core@1.161.1': + resolution: {integrity: sha512-I3BcTUD2D8l1sKkab4JJM5LHwwWX5sDCbbhD+MGWplycIujzaW7xADbOnwLpeDjtJarc8kY20cUQ2NJ2eaX9kw==} engines: {node: '>=12'} peerDependencies: - '@tanstack/router-core': ^1.160.0 + '@tanstack/router-core': ^1.161.1 csstype: ^3.0.10 peerDependenciesMeta: csstype: optional: true - '@tanstack/router-generator@1.160.1': - resolution: {integrity: sha512-De6TicInwy3/9rQ++RZAyFOvB2oi5UV5T0iiIlxe3jgiOLFxMA4EKKVlT+alDxKnq6udTLam9xqhvGOVZ6a2hw==} + '@tanstack/router-generator@1.161.1': + resolution: {integrity: sha512-IvkjrSaqr3WzYDUjdXOug1x5MhJT5Pw+hKkAi+GDA4isaBjyXS71QmY3jhsZZ2Rz08Xjw2JkAoIJCxfqw6AQKw==} engines: {node: '>=12'} - '@tanstack/router-plugin@1.161.0': - resolution: {integrity: sha512-E0JGeMdKGYYMMjOEiM+330nIs0PG3nE/9KyU+7+SV54hDf4Xdt6BC3J9pDj1qA3oNqI5DwwTsG7GBA+7m47O4A==} + '@tanstack/router-plugin@1.161.1': + resolution: {integrity: sha512-1veqinPZRJMWJSgKljk3XF6l9PaDRRqnc2FMEGBRJ5ycmDqvzCP4RaKbA5pfE/DbXHkKF5Z7BiAeateZHgm4jA==} engines: {node: '>=12'} peerDependencies: '@rsbuild/core': '>=1.0.2' - '@tanstack/react-router': ^1.160.2 + '@tanstack/react-router': ^1.161.1 vite: '>=5.0.0 || >=6.0.0 || >=7.0.0' vite-plugin-solid: ^2.11.10 webpack: '>=5.92.0' @@ -4941,8 +4941,8 @@ packages: emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - enhanced-resolve@5.18.3: - resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} + enhanced-resolve@5.19.0: + resolution: {integrity: sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==} engines: {node: '>=10.13.0'} entities@2.2.0: @@ -5298,8 +5298,8 @@ packages: hyphenate-style-name@1.1.0: resolution: {integrity: sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==} - i18next@25.8.10: - resolution: {integrity: sha512-CtPJLMAz1G8sxo+mIzfBjGgLxWs7d6WqIjlmmv9BTsOat4pJIfwZ8cm07n3kFS6bP9c6YwsYutYrwsEeJVBo2g==} + i18next@25.8.11: + resolution: {integrity: sha512-LZ32llTLGludnddjLoijHV7TbmVubU5eJnsWf8taiuM3jmSfUuvBLuyDeubJKS1yBjLBgb7As124M4KWNcBvpw==} peerDependencies: typescript: ^5 peerDependenciesMeta: @@ -5490,8 +5490,8 @@ packages: jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} - jotai@2.17.1: - resolution: {integrity: sha512-TFNZZDa/0ewCLQyRC/Sq9crtixNj/Xdf/wmj9631xxMuKToVJZDbqcHIYN0OboH+7kh6P6tpIK7uKWClj86PKw==} + jotai@2.18.0: + resolution: {integrity: sha512-XI38kGWAvtxAZ+cwHcTgJsd+kJOJGf3OfL4XYaXWZMZ7IIY8e53abpIHvtVn1eAgJ5dlgwlGFnP4psrZ/vZbtA==} engines: {node: '>=12.20.0'} peerDependencies: '@babel/core': '>=7.0.0' @@ -5577,8 +5577,8 @@ packages: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - knip@5.84.0: - resolution: {integrity: sha512-gWXgr9HxRvghijn9t+7AueEwp3vy7uPIV+Ckl72xqBRw+tK2nNI9H0oknVE9J/NSk1jE5WuShzTp4A+40PjYhg==} + knip@5.84.1: + resolution: {integrity: sha512-F1+yACEsSapAwmQLzfD4i9uPsnI82P4p5ABpNQ9pcc4fpQtjHEX34XDtNl5863I4O6SCECpymylcWDHI3ouhQQ==} engines: {node: '>=18.18.0'} hasBin: true peerDependencies: @@ -5600,78 +5600,78 @@ packages: engines: {node: '>=6'} hasBin: true - lightningcss-android-arm64@1.30.2: - resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==} + lightningcss-android-arm64@1.31.1: + resolution: {integrity: sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [android] - lightningcss-darwin-arm64@1.30.2: - resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==} + lightningcss-darwin-arm64@1.31.1: + resolution: {integrity: sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] - lightningcss-darwin-x64@1.30.2: - resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==} + lightningcss-darwin-x64@1.31.1: + resolution: {integrity: sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] - lightningcss-freebsd-x64@1.30.2: - resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==} + lightningcss-freebsd-x64@1.31.1: + resolution: {integrity: sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] - lightningcss-linux-arm-gnueabihf@1.30.2: - resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==} + lightningcss-linux-arm-gnueabihf@1.31.1: + resolution: {integrity: sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] - lightningcss-linux-arm64-gnu@1.30.2: - resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==} + lightningcss-linux-arm64-gnu@1.31.1: + resolution: {integrity: sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] libc: [glibc] - lightningcss-linux-arm64-musl@1.30.2: - resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==} + lightningcss-linux-arm64-musl@1.31.1: + resolution: {integrity: sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] libc: [musl] - lightningcss-linux-x64-gnu@1.30.2: - resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==} + lightningcss-linux-x64-gnu@1.31.1: + resolution: {integrity: sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] libc: [glibc] - lightningcss-linux-x64-musl@1.30.2: - resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==} + lightningcss-linux-x64-musl@1.31.1: + resolution: {integrity: sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] libc: [musl] - lightningcss-win32-arm64-msvc@1.30.2: - resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==} + lightningcss-win32-arm64-msvc@1.31.1: + resolution: {integrity: sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] - lightningcss-win32-x64-msvc@1.30.2: - resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==} + lightningcss-win32-x64-msvc@1.31.1: + resolution: {integrity: sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] - lightningcss@1.30.2: - resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==} + lightningcss@1.31.1: + resolution: {integrity: sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==} engines: {node: '>= 12.0.0'} lilconfig@2.1.0: @@ -7102,14 +7102,14 @@ packages: resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} engines: {node: '>=10.0.0'} - tailwind-merge@3.4.1: - resolution: {integrity: sha512-2OA0rFqWOkITEAOFWSBSApYkDeH9t2B3XSJuI4YztKBzK3mX0737A2qtxDZ7xkw9Zfh0bWl+r34sF3HXV+Ig7Q==} + tailwind-merge@3.5.0: + resolution: {integrity: sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A==} - tailwindcss@4.1.18: - resolution: {integrity: sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==} + tailwindcss@4.2.0: + resolution: {integrity: sha512-yYzTZ4++b7fNYxFfpnberEEKu43w44aqDMNM9MHMmcKuCH7lL8jJ4yJ7LGHv7rSwiqM0nkiobF9I6cLlpS2P7Q==} - tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + tapable@2.3.0: + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} tar@7.5.9: @@ -8488,10 +8488,10 @@ snapshots: hashery: 1.3.0 keyv: 5.6.0 - '@commitlint/cli@20.4.1(@types/node@24.10.13)(typescript@5.9.3)': + '@commitlint/cli@20.4.2(@types/node@24.10.13)(typescript@5.9.3)': dependencies: '@commitlint/format': 20.4.0 - '@commitlint/lint': 20.4.1 + '@commitlint/lint': 20.4.2 '@commitlint/load': 20.4.0(@types/node@24.10.13)(typescript@5.9.3) '@commitlint/read': 20.4.0 '@commitlint/types': 20.4.0 @@ -8501,7 +8501,7 @@ snapshots: - '@types/node' - typescript - '@commitlint/config-conventional@20.4.1': + '@commitlint/config-conventional@20.4.2': dependencies: '@commitlint/types': 20.4.0 conventional-changelog-conventionalcommits: 9.1.0 @@ -8532,11 +8532,11 @@ snapshots: '@commitlint/types': 20.4.0 semver: 7.7.4 - '@commitlint/lint@20.4.1': + '@commitlint/lint@20.4.2': dependencies: '@commitlint/is-ignored': 20.4.1 '@commitlint/parse': 20.4.1 - '@commitlint/rules': 20.4.1 + '@commitlint/rules': 20.4.2 '@commitlint/types': 20.4.0 '@commitlint/load@20.4.0(@types/node@24.10.13)(typescript@5.9.3)': @@ -8579,7 +8579,7 @@ snapshots: lodash.mergewith: 4.6.2 resolve-from: 5.0.0 - '@commitlint/rules@20.4.1': + '@commitlint/rules@20.4.2': dependencies: '@commitlint/ensure': 20.4.1 '@commitlint/message': 20.4.0 @@ -8897,7 +8897,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@iconify/json@2.2.440': + '@iconify/json@2.2.441': dependencies: '@iconify/types': 2.0.0 pathe: 2.0.3 @@ -10454,74 +10454,74 @@ snapshots: dependencies: '@swc/counter': 0.1.3 - '@tailwindcss/node@4.1.18': + '@tailwindcss/node@4.2.0': dependencies: '@jridgewell/remapping': 2.3.5 - enhanced-resolve: 5.18.3 + enhanced-resolve: 5.19.0 jiti: 2.6.1 - lightningcss: 1.30.2 + lightningcss: 1.31.1 magic-string: 0.30.21 source-map-js: 1.2.1 - tailwindcss: 4.1.18 + tailwindcss: 4.2.0 - '@tailwindcss/oxide-android-arm64@4.1.18': + '@tailwindcss/oxide-android-arm64@4.2.0': optional: true - '@tailwindcss/oxide-darwin-arm64@4.1.18': + '@tailwindcss/oxide-darwin-arm64@4.2.0': optional: true - '@tailwindcss/oxide-darwin-x64@4.1.18': + '@tailwindcss/oxide-darwin-x64@4.2.0': optional: true - '@tailwindcss/oxide-freebsd-x64@4.1.18': + '@tailwindcss/oxide-freebsd-x64@4.2.0': optional: true - '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': + '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.0': optional: true - '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': + '@tailwindcss/oxide-linux-arm64-gnu@4.2.0': optional: true - '@tailwindcss/oxide-linux-arm64-musl@4.1.18': + '@tailwindcss/oxide-linux-arm64-musl@4.2.0': optional: true - '@tailwindcss/oxide-linux-x64-gnu@4.1.18': + '@tailwindcss/oxide-linux-x64-gnu@4.2.0': optional: true - '@tailwindcss/oxide-linux-x64-musl@4.1.18': + '@tailwindcss/oxide-linux-x64-musl@4.2.0': optional: true - '@tailwindcss/oxide-wasm32-wasi@4.1.18': + '@tailwindcss/oxide-wasm32-wasi@4.2.0': optional: true - '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': + '@tailwindcss/oxide-win32-arm64-msvc@4.2.0': optional: true - '@tailwindcss/oxide-win32-x64-msvc@4.1.18': + '@tailwindcss/oxide-win32-x64-msvc@4.2.0': optional: true - '@tailwindcss/oxide@4.1.18': + '@tailwindcss/oxide@4.2.0': optionalDependencies: - '@tailwindcss/oxide-android-arm64': 4.1.18 - '@tailwindcss/oxide-darwin-arm64': 4.1.18 - '@tailwindcss/oxide-darwin-x64': 4.1.18 - '@tailwindcss/oxide-freebsd-x64': 4.1.18 - '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.18 - '@tailwindcss/oxide-linux-arm64-gnu': 4.1.18 - '@tailwindcss/oxide-linux-arm64-musl': 4.1.18 - '@tailwindcss/oxide-linux-x64-gnu': 4.1.18 - '@tailwindcss/oxide-linux-x64-musl': 4.1.18 - '@tailwindcss/oxide-wasm32-wasi': 4.1.18 - '@tailwindcss/oxide-win32-arm64-msvc': 4.1.18 - '@tailwindcss/oxide-win32-x64-msvc': 4.1.18 + '@tailwindcss/oxide-android-arm64': 4.2.0 + '@tailwindcss/oxide-darwin-arm64': 4.2.0 + '@tailwindcss/oxide-darwin-x64': 4.2.0 + '@tailwindcss/oxide-freebsd-x64': 4.2.0 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.2.0 + '@tailwindcss/oxide-linux-arm64-gnu': 4.2.0 + '@tailwindcss/oxide-linux-arm64-musl': 4.2.0 + '@tailwindcss/oxide-linux-x64-gnu': 4.2.0 + '@tailwindcss/oxide-linux-x64-musl': 4.2.0 + '@tailwindcss/oxide-wasm32-wasi': 4.2.0 + '@tailwindcss/oxide-win32-arm64-msvc': 4.2.0 + '@tailwindcss/oxide-win32-x64-msvc': 4.2.0 - '@tailwindcss/postcss@4.1.18': + '@tailwindcss/postcss@4.2.0': dependencies: '@alloc/quick-lru': 5.2.0 - '@tailwindcss/node': 4.1.18 - '@tailwindcss/oxide': 4.1.18 + '@tailwindcss/node': 4.2.0 + '@tailwindcss/oxide': 4.2.0 postcss: 8.5.6 - tailwindcss: 4.1.18 + tailwindcss: 4.2.0 '@tanstack/history@1.154.14': {} @@ -10536,22 +10536,22 @@ snapshots: '@tanstack/query-core': 5.90.20 react: 19.2.4 - '@tanstack/react-router-devtools@1.160.2(@tanstack/react-router@1.160.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.160.0)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@tanstack/react-router-devtools@1.161.1(@tanstack/react-router@1.161.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.161.1)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@tanstack/react-router': 1.160.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@tanstack/router-devtools-core': 1.160.0(@tanstack/router-core@1.160.0)(csstype@3.2.3) + '@tanstack/react-router': 1.161.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@tanstack/router-devtools-core': 1.161.1(@tanstack/router-core@1.161.1)(csstype@3.2.3) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) optionalDependencies: - '@tanstack/router-core': 1.160.0 + '@tanstack/router-core': 1.161.1 transitivePeerDependencies: - csstype - '@tanstack/react-router@1.160.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@tanstack/react-router@1.161.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@tanstack/history': 1.154.14 '@tanstack/react-store': 0.8.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@tanstack/router-core': 1.160.0 + '@tanstack/router-core': 1.161.1 isbot: 5.1.28 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) @@ -10583,7 +10583,7 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - '@tanstack/router-core@1.160.0': + '@tanstack/router-core@1.161.1': dependencies: '@tanstack/history': 1.154.14 '@tanstack/store': 0.8.0 @@ -10593,18 +10593,18 @@ snapshots: tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - '@tanstack/router-devtools-core@1.160.0(@tanstack/router-core@1.160.0)(csstype@3.2.3)': + '@tanstack/router-devtools-core@1.161.1(@tanstack/router-core@1.161.1)(csstype@3.2.3)': dependencies: - '@tanstack/router-core': 1.160.0 + '@tanstack/router-core': 1.161.1 clsx: 2.1.1 goober: 2.1.16(csstype@3.2.3) tiny-invariant: 1.3.3 optionalDependencies: csstype: 3.2.3 - '@tanstack/router-generator@1.160.1': + '@tanstack/router-generator@1.161.1': dependencies: - '@tanstack/router-core': 1.160.0 + '@tanstack/router-core': 1.161.1 '@tanstack/router-utils': 1.158.0 '@tanstack/virtual-file-routes': 1.154.7 prettier: 3.8.1 @@ -10615,7 +10615,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.161.0(@tanstack/react-router@1.160.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1))': + '@tanstack/router-plugin@1.161.1(@tanstack/react-router@1.161.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0) @@ -10623,16 +10623,16 @@ snapshots: '@babel/template': 7.28.6 '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 - '@tanstack/router-core': 1.160.0 - '@tanstack/router-generator': 1.160.1 + '@tanstack/router-core': 1.161.1 + '@tanstack/router-generator': 1.161.1 '@tanstack/router-utils': 1.158.0 '@tanstack/virtual-file-routes': 1.154.7 chokidar: 3.6.0 unplugin: 2.3.11 zod: 3.25.76 optionalDependencies: - '@tanstack/react-router': 1.160.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1) + '@tanstack/react-router': 1.161.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -10650,9 +10650,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-zod-adapter@1.81.5(@tanstack/react-router@1.160.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(zod@4.3.6)': + '@tanstack/router-zod-adapter@1.81.5(@tanstack/react-router@1.161.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(zod@4.3.6)': dependencies: - '@tanstack/react-router': 1.160.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@tanstack/react-router': 1.161.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) zod: 4.3.6 '@tanstack/store@0.8.0': {} @@ -11215,7 +11215,7 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-legacy@7.2.1(terser@5.36.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1))': + '@vitejs/plugin-legacy@7.2.1(terser@5.36.0)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.0 '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.0) @@ -11230,19 +11230,19 @@ snapshots: regenerator-runtime: 0.14.1 systemjs: 6.15.1 terser: 5.36.0 - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react-swc@4.2.3(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1))': + '@vitejs/plugin-react-swc@4.2.3(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.2 '@swc/core': 1.15.11 - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - '@swc/helpers' - '@vitejs/plugin-react@5.1.4(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1))': + '@vitejs/plugin-react@5.1.4(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) @@ -11250,7 +11250,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-rc.3 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -12073,10 +12073,10 @@ snapshots: emoji-regex@8.0.0: {} - enhanced-resolve@5.18.3: + enhanced-resolve@5.19.0: dependencies: graceful-fs: 4.2.11 - tapable: 2.2.1 + tapable: 2.3.0 entities@2.2.0: {} @@ -12464,7 +12464,7 @@ snapshots: hyphenate-style-name@1.1.0: {} - i18next@25.8.10(typescript@5.9.3): + i18next@25.8.11(typescript@5.9.3): dependencies: '@babel/runtime': 7.28.6 optionalDependencies: @@ -12612,7 +12612,7 @@ snapshots: jju@1.4.0: {} - jotai@2.17.1(@babel/core@7.29.0)(@babel/template@7.28.6)(@types/react@19.2.14)(react@19.2.4): + jotai@2.18.0(@babel/core@7.29.0)(@babel/template@7.28.6)(@types/react@19.2.14)(react@19.2.4): optionalDependencies: '@babel/core': 7.29.0 '@babel/template': 7.28.6 @@ -12666,7 +12666,7 @@ snapshots: kind-of@6.0.3: {} - knip@5.84.0(@types/node@24.10.13)(typescript@5.9.3): + knip@5.84.1(@types/node@24.10.13)(typescript@5.9.3): dependencies: '@nodelib/fs.walk': 1.2.8 '@types/node': 24.10.13 @@ -12703,54 +12703,54 @@ snapshots: needle: 3.3.1 source-map: 0.6.1 - lightningcss-android-arm64@1.30.2: + lightningcss-android-arm64@1.31.1: optional: true - lightningcss-darwin-arm64@1.30.2: + lightningcss-darwin-arm64@1.31.1: optional: true - lightningcss-darwin-x64@1.30.2: + lightningcss-darwin-x64@1.31.1: optional: true - lightningcss-freebsd-x64@1.30.2: + lightningcss-freebsd-x64@1.31.1: optional: true - lightningcss-linux-arm-gnueabihf@1.30.2: + lightningcss-linux-arm-gnueabihf@1.31.1: optional: true - lightningcss-linux-arm64-gnu@1.30.2: + lightningcss-linux-arm64-gnu@1.31.1: optional: true - lightningcss-linux-arm64-musl@1.30.2: + lightningcss-linux-arm64-musl@1.31.1: optional: true - lightningcss-linux-x64-gnu@1.30.2: + lightningcss-linux-x64-gnu@1.31.1: optional: true - lightningcss-linux-x64-musl@1.30.2: + lightningcss-linux-x64-musl@1.31.1: optional: true - lightningcss-win32-arm64-msvc@1.30.2: + lightningcss-win32-arm64-msvc@1.31.1: optional: true - lightningcss-win32-x64-msvc@1.30.2: + lightningcss-win32-x64-msvc@1.31.1: optional: true - lightningcss@1.30.2: + lightningcss@1.31.1: dependencies: detect-libc: 2.0.4 optionalDependencies: - lightningcss-android-arm64: 1.30.2 - lightningcss-darwin-arm64: 1.30.2 - lightningcss-darwin-x64: 1.30.2 - lightningcss-freebsd-x64: 1.30.2 - lightningcss-linux-arm-gnueabihf: 1.30.2 - lightningcss-linux-arm64-gnu: 1.30.2 - lightningcss-linux-arm64-musl: 1.30.2 - lightningcss-linux-x64-gnu: 1.30.2 - lightningcss-linux-x64-musl: 1.30.2 - lightningcss-win32-arm64-msvc: 1.30.2 - lightningcss-win32-x64-msvc: 1.30.2 + lightningcss-android-arm64: 1.31.1 + lightningcss-darwin-arm64: 1.31.1 + lightningcss-darwin-x64: 1.31.1 + lightningcss-freebsd-x64: 1.31.1 + lightningcss-linux-arm-gnueabihf: 1.31.1 + lightningcss-linux-arm64-gnu: 1.31.1 + lightningcss-linux-arm64-musl: 1.31.1 + lightningcss-linux-x64-gnu: 1.31.1 + lightningcss-linux-x64-musl: 1.31.1 + lightningcss-win32-arm64-msvc: 1.31.1 + lightningcss-win32-x64-msvc: 1.31.1 lilconfig@2.1.0: {} @@ -13628,11 +13628,11 @@ snapshots: dependencies: react: 19.2.4 - react-i18next@15.7.4(i18next@25.8.10(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3): + react-i18next@15.7.4(i18next@25.8.11(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3): dependencies: '@babel/runtime': 7.28.3 html-parse-stringify: 3.0.1 - i18next: 25.8.10(typescript@5.9.3) + i18next: 25.8.11(typescript@5.9.3) react: 19.2.4 optionalDependencies: react-dom: 19.2.4(react@19.2.4) @@ -14336,11 +14336,11 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 - tailwind-merge@3.4.1: {} + tailwind-merge@3.5.0: {} - tailwindcss@4.1.18: {} + tailwindcss@4.2.0: {} - tapable@2.2.1: {} + tapable@2.3.0: {} tar@7.5.9: dependencies: @@ -14668,7 +14668,7 @@ snapshots: - rollup - supports-color - vite-plugin-dts@4.5.4(@types/node@24.10.13)(rollup@4.46.2)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)): + vite-plugin-dts@4.5.4(@types/node@24.10.13)(rollup@4.46.2)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)): dependencies: '@microsoft/api-extractor': 7.51.0(@types/node@24.10.13) '@rollup/pluginutils': 5.1.4(rollup@4.46.2) @@ -14681,13 +14681,13 @@ snapshots: magic-string: 0.30.17 typescript: 5.9.3 optionalDependencies: - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite-plugin-html@3.2.2(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)): + vite-plugin-html@3.2.2(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)): dependencies: '@rollup/pluginutils': 4.2.1 colorette: 2.0.20 @@ -14701,38 +14701,38 @@ snapshots: html-minifier-terser: 6.1.0 node-html-parser: 5.4.2 pathe: 0.2.0 - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1) - vite-plugin-sass-dts@1.3.35(postcss@8.5.6)(prettier@3.8.1)(sass-embedded@1.97.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)): + vite-plugin-sass-dts@1.3.35(postcss@8.5.6)(prettier@3.8.1)(sass-embedded@1.97.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)): dependencies: postcss: 8.5.6 postcss-js: 4.0.1(postcss@8.5.6) prettier: 3.8.1 sass-embedded: 1.97.3 - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1) - vite-plugin-svgr@4.5.0(rollup@4.46.2)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)): + vite-plugin-svgr@4.5.0(rollup@4.46.2)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)): dependencies: '@rollup/pluginutils': 5.2.0(rollup@4.46.2) '@svgr/core': 8.1.0(typescript@5.9.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.9.3)) - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - rollup - supports-color - typescript - vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)): + vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.0.3(typescript@5.9.3) - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color - typescript - vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.30.2)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1): + vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(less@4.2.0)(lightningcss@1.31.1)(sass-embedded@1.97.3)(sass@1.97.3)(stylus@0.62.0)(terser@5.36.0)(tsx@4.21.0)(yaml@2.8.1): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -14745,7 +14745,7 @@ snapshots: fsevents: 2.3.3 jiti: 2.6.1 less: 4.2.0 - lightningcss: 1.30.2 + lightningcss: 1.31.1 sass: 1.97.3 sass-embedded: 1.97.3 stylus: 0.62.0 diff --git a/lede/package/kernel/mt76/Makefile b/lede/package/kernel/mt76/Makefile index 524064dbbd..6e65cf500a 100644 --- a/lede/package/kernel/mt76/Makefile +++ b/lede/package/kernel/mt76/Makefile @@ -1,7 +1,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=mt76 -PKG_RELEASE=3 +PKG_RELEASE=1 PKG_LICENSE:=GPLv2 PKG_LICENSE_FILES:= @@ -14,25 +14,19 @@ PKG_SOURCE_DATE:=2022-12-22 PKG_SOURCE_VERSION:=5b509e80384ab019ac11aa90c81ec0dbb5b0d7f2 PKG_MIRROR_HASH:=6fc25df4d28becd010ff4971b23731c08b53e69381a9e4c868091899712f78a9 PATCH_DIR:=./patches-5.4 -else ifdef CONFIG_LINUX_6_1 -PKG_SOURCE_DATE:=2024-09-29 -PKG_SOURCE_VERSION:=ee693260c52191c9c4764915178ce3586e926428 -PKG_MIRROR_HASH:=213ca47f3e7ec8a8c6b4ade2e301f62fcc69793ed06d43eb730fc9a500fd5595 -PATCH_DIR:=./patches-6.x -else ifdef CONFIG_LINUX_6_6 -PKG_SOURCE_DATE:=2024-09-29 -PKG_SOURCE_VERSION:=ee693260c52191c9c4764915178ce3586e926428 -PKG_MIRROR_HASH:=213ca47f3e7ec8a8c6b4ade2e301f62fcc69793ed06d43eb730fc9a500fd5595 -PATCH_DIR:=./patches-6.x -else ifdef CONFIG_LINUX_6_12 -PKG_SOURCE_DATE:=2024-09-29 -PKG_SOURCE_VERSION:=ee693260c52191c9c4764915178ce3586e926428 -PKG_MIRROR_HASH:=213ca47f3e7ec8a8c6b4ade2e301f62fcc69793ed06d43eb730fc9a500fd5595 -PATCH_DIR:=./patches-6.x -else +else ifdef CONFIG_LINUX_5_10 PKG_SOURCE_DATE:=2023-09-18 PKG_SOURCE_VERSION:=2afc7285f75dca5a0583fd917285bf33f1429cc6 PKG_MIRROR_HASH:=2c9556b298246277ac2d65415e4449f98e6d5fdb99e0d0a92262f162df772bbc +else ifdef CONFIG_LINUX_5_15 +PKG_SOURCE_DATE:=2023-09-18 +PKG_SOURCE_VERSION:=2afc7285f75dca5a0583fd917285bf33f1429cc6 +PKG_MIRROR_HASH:=2c9556b298246277ac2d65415e4449f98e6d5fdb99e0d0a92262f162df772bbc +else +PKG_SOURCE_DATE:=2024-10-14 +PKG_SOURCE_VERSION:=8dfead68c20251fccb39113ee864fbbafc5b7f76 +PKG_MIRROR_HASH:=1abbc60039e5eb1b25c678a711b79a92e8b9f39e4db9801610811c76d2928718 +PATCH_DIR:=./patches-6.x endif PKG_MAINTAINER:=Felix Fietkau @@ -387,7 +381,8 @@ define KernelPackage/mt7925-common $(KernelPackage/mt76-default) TITLE:=MediaTek MT7925 wireless driver common code HIDDEN:=1 - DEPENDS+=+kmod-mt792x-common +@DRIVER_11AX_SUPPORT +kmod-hwmon-core + DEPENDS+=+kmod-mt792x-common +kmod-hwmon-core \ + +@DRIVER_11AX_SUPPORT +@DRIVER_11BE_SUPPORT FILES:= $(PKG_BUILD_DIR)/mt7925/mt7925-common.ko endef diff --git a/lede/package/kernel/mt76/patches-6.x/001-allow-vht-on-2g.patch b/lede/package/kernel/mt76/patches-6.x/001-allow-vht-on-2g.patch index aaa8dd5fab..7979bd198e 100644 --- a/lede/package/kernel/mt76/patches-6.x/001-allow-vht-on-2g.patch +++ b/lede/package/kernel/mt76/patches-6.x/001-allow-vht-on-2g.patch @@ -10,11 +10,9 @@ Signed-off-by: DENG Qingfang mac80211.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) -diff --git a/mac80211.c b/mac80211.c -index 766681a4..06aa4228 100644 --- a/mac80211.c +++ b/mac80211.c -@@ -282,7 +282,7 @@ static void mt76_init_stream_cap(struct mt76_phy *phy, +@@ -293,7 +293,7 @@ static void mt76_init_stream_cap(struct void mt76_set_stream_caps(struct mt76_phy *phy, bool vht) { if (phy->cap.has_2ghz) @@ -23,7 +21,7 @@ index 766681a4..06aa4228 100644 if (phy->cap.has_5ghz) mt76_init_stream_cap(phy, &phy->sband_5g.sband, vht); if (phy->cap.has_6ghz) -@@ -349,13 +349,13 @@ mt76_init_sband(struct mt76_phy *phy, struct mt76_sband *msband, +@@ -360,13 +360,13 @@ mt76_init_sband(struct mt76_phy *phy, st static int mt76_init_sband_2g(struct mt76_phy *phy, struct ieee80211_rate *rates, @@ -39,7 +37,7 @@ index 766681a4..06aa4228 100644 } static int -@@ -508,7 +508,7 @@ int mt76_register_phy(struct mt76_phy *phy, bool vht, +@@ -524,7 +524,7 @@ int mt76_register_phy(struct mt76_phy *p return ret; if (phy->cap.has_2ghz) { @@ -48,7 +46,7 @@ index 766681a4..06aa4228 100644 if (ret) return ret; } -@@ -691,7 +691,7 @@ int mt76_register_device(struct mt76_dev *dev, bool vht, +@@ -710,7 +710,7 @@ int mt76_register_device(struct mt76_dev return ret; if (phy->cap.has_2ghz) { diff --git a/lede/package/kernel/mt76/patches-6.x/100-api_update.patch b/lede/package/kernel/mt76/patches-6.x/100-api_update.patch index 50ca7851ad..ea8049d2dc 100644 --- a/lede/package/kernel/mt76/patches-6.x/100-api_update.patch +++ b/lede/package/kernel/mt76/patches-6.x/100-api_update.patch @@ -1,15 +1,6 @@ ---- a/Makefile -+++ b/Makefile -@@ -1,5 +1,5 @@ - # SPDX-License-Identifier: GPL-2.0-only --EXTRA_CFLAGS += -Werror -DCONFIG_MT76_LEDS -+EXTRA_CFLAGS += -Werror -Wno-unused-variable -DCONFIG_MT76_LEDS - obj-m := mt76.o - obj-$(CONFIG_MT76_USB) += mt76-usb.o - obj-$(CONFIG_MT76_SDIO) += mt76-sdio.o --- a/mac80211.c +++ b/mac80211.c -@@ -1660,8 +1660,8 @@ +@@ -1656,8 +1656,8 @@ EXPORT_SYMBOL_GPL(mt76_get_sar_power); static void __mt76_csa_finish(void *priv, u8 *mac, struct ieee80211_vif *vif) { @@ -20,7 +11,7 @@ } void mt76_csa_finish(struct mt76_dev *dev) -@@ -1685,7 +1685,7 @@ +@@ -1681,7 +1681,7 @@ __mt76_csa_check(void *priv, u8 *mac, st if (!vif->bss_conf.csa_active) return; @@ -29,9 +20,192 @@ } void mt76_csa_check(struct mt76_dev *dev) +--- a/mt7603/main.c ++++ b/mt7603/main.c +@@ -23,7 +23,7 @@ mt7603_start(struct ieee80211_hw *hw) + } + + static void +-mt7603_stop(struct ieee80211_hw *hw, bool suspend) ++mt7603_stop(struct ieee80211_hw *hw) + { + struct mt7603_dev *dev = hw->priv; + +@@ -694,10 +694,6 @@ static void mt7603_tx(struct ieee80211_h + } + + const struct ieee80211_ops mt7603_ops = { +- .add_chanctx = ieee80211_emulate_add_chanctx, +- .remove_chanctx = ieee80211_emulate_remove_chanctx, +- .change_chanctx = ieee80211_emulate_change_chanctx, +- .switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx, + .tx = mt7603_tx, + .start = mt7603_start, + .stop = mt7603_stop, +--- a/mt7615/main.c ++++ b/mt7615/main.c +@@ -91,7 +91,7 @@ out: + return ret; + } + +-static void mt7615_stop(struct ieee80211_hw *hw, bool suspend) ++static void mt7615_stop(struct ieee80211_hw *hw) + { + struct mt7615_dev *dev = mt7615_hw_dev(hw); + struct mt7615_phy *phy = mt7615_hw_phy(hw); +@@ -1313,10 +1313,6 @@ static void mt7615_set_rekey_data(struct + #endif /* CONFIG_PM */ + + const struct ieee80211_ops mt7615_ops = { +- .add_chanctx = ieee80211_emulate_add_chanctx, +- .remove_chanctx = ieee80211_emulate_remove_chanctx, +- .change_chanctx = ieee80211_emulate_change_chanctx, +- .switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx, + .tx = mt7615_tx, + .start = mt7615_start, + .stop = mt7615_stop, +--- a/mt7615/mcu.c ++++ b/mt7615/mcu.c +@@ -353,7 +353,7 @@ static void + mt7615_mcu_csa_finish(void *priv, u8 *mac, struct ieee80211_vif *vif) + { + if (vif->bss_conf.csa_active) +- ieee80211_csa_finish(vif, 0); ++ ieee80211_csa_finish(vif); + } + + static void +@@ -394,7 +394,7 @@ mt7615_mcu_rx_radar_detected(struct mt76 + if (mt76_phy_dfs_state(mphy) < MT_DFS_STATE_CAC) + return; + +- ieee80211_radar_detected(mphy->hw, NULL); ++ ieee80211_radar_detected(mphy->hw); + dev->hw_pattern++; + } + +--- a/mt7615/usb.c ++++ b/mt7615/usb.c +@@ -79,7 +79,7 @@ static void mt7663u_copy(struct mt76_dev + mutex_unlock(&usb->usb_ctrl_mtx); + } + +-static void mt7663u_stop(struct ieee80211_hw *hw, bool suspend) ++static void mt7663u_stop(struct ieee80211_hw *hw) + { + struct mt7615_phy *phy = mt7615_hw_phy(hw); + struct mt7615_dev *dev = hw->priv; +--- a/mt76x0/pci.c ++++ b/mt76x0/pci.c +@@ -44,7 +44,7 @@ static void mt76x0e_stop_hw(struct mt76x + mt76_clear(dev, MT_WPDMA_GLO_CFG, MT_WPDMA_GLO_CFG_RX_DMA_EN); + } + +-static void mt76x0e_stop(struct ieee80211_hw *hw, bool suspend) ++static void mt76x0e_stop(struct ieee80211_hw *hw) + { + struct mt76x02_dev *dev = hw->priv; + +@@ -59,10 +59,6 @@ mt76x0e_flush(struct ieee80211_hw *hw, s + } + + static const struct ieee80211_ops mt76x0e_ops = { +- .add_chanctx = ieee80211_emulate_add_chanctx, +- .remove_chanctx = ieee80211_emulate_remove_chanctx, +- .change_chanctx = ieee80211_emulate_change_chanctx, +- .switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx, + .tx = mt76x02_tx, + .start = mt76x0e_start, + .stop = mt76x0e_stop, +--- a/mt76x0/usb.c ++++ b/mt76x0/usb.c +@@ -77,7 +77,7 @@ static void mt76x0u_cleanup(struct mt76x + mt76u_queues_deinit(&dev->mt76); + } + +-static void mt76x0u_stop(struct ieee80211_hw *hw, bool suspend) ++static void mt76x0u_stop(struct ieee80211_hw *hw) + { + struct mt76x02_dev *dev = hw->priv; + +@@ -118,10 +118,6 @@ static int mt76x0u_start(struct ieee8021 + } + + static const struct ieee80211_ops mt76x0u_ops = { +- .add_chanctx = ieee80211_emulate_add_chanctx, +- .remove_chanctx = ieee80211_emulate_remove_chanctx, +- .change_chanctx = ieee80211_emulate_change_chanctx, +- .switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx, + .tx = mt76x02_tx, + .start = mt76x0u_start, + .stop = mt76x0u_stop, +--- a/mt76x02_dfs.c ++++ b/mt76x02_dfs.c +@@ -630,7 +630,7 @@ static void mt76x02_dfs_tasklet(struct t + radar_detected = mt76x02_dfs_check_detection(dev); + if (radar_detected) { + /* sw detector rx radar pattern */ +- ieee80211_radar_detected(dev->mt76.hw, NULL); ++ ieee80211_radar_detected(dev->mt76.hw); + mt76x02_dfs_detector_reset(dev); + + return; +@@ -658,7 +658,7 @@ static void mt76x02_dfs_tasklet(struct t + + /* hw detector rx radar pattern */ + dfs_pd->stats[i].hw_pattern++; +- ieee80211_radar_detected(dev->mt76.hw, NULL); ++ ieee80211_radar_detected(dev->mt76.hw); + mt76x02_dfs_detector_reset(dev); + + return; +--- a/mt76x2/pci_main.c ++++ b/mt76x2/pci_main.c +@@ -24,7 +24,7 @@ mt76x2_start(struct ieee80211_hw *hw) + } + + static void +-mt76x2_stop(struct ieee80211_hw *hw, bool suspend) ++mt76x2_stop(struct ieee80211_hw *hw) + { + struct mt76x02_dev *dev = hw->priv; + +@@ -121,10 +121,6 @@ static int mt76x2_set_antenna(struct iee + } + + const struct ieee80211_ops mt76x2_ops = { +- .add_chanctx = ieee80211_emulate_add_chanctx, +- .remove_chanctx = ieee80211_emulate_remove_chanctx, +- .change_chanctx = ieee80211_emulate_change_chanctx, +- .switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx, + .tx = mt76x02_tx, + .start = mt76x2_start, + .stop = mt76x2_stop, +--- a/mt76x2/usb_main.c ++++ b/mt76x2/usb_main.c +@@ -22,7 +22,7 @@ static int mt76x2u_start(struct ieee8021 + return 0; + } + +-static void mt76x2u_stop(struct ieee80211_hw *hw, bool suspend) ++static void mt76x2u_stop(struct ieee80211_hw *hw) + { + struct mt76x02_dev *dev = hw->priv; + +@@ -88,10 +88,6 @@ mt76x2u_config(struct ieee80211_hw *hw, + } + + const struct ieee80211_ops mt76x2u_ops = { +- .add_chanctx = ieee80211_emulate_add_chanctx, +- .remove_chanctx = ieee80211_emulate_remove_chanctx, +- .change_chanctx = ieee80211_emulate_change_chanctx, +- .switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx, + .tx = mt76x02_tx, + .start = mt76x2u_start, + .stop = mt76x2u_stop, --- a/mt7915/main.c +++ b/mt7915/main.c -@@ -108,7 +108,7 @@ +@@ -108,7 +108,7 @@ static int mt7915_start(struct ieee80211 return ret; } @@ -40,7 +214,7 @@ { struct mt7915_dev *dev = mt7915_hw_dev(hw); struct mt7915_phy *phy = mt7915_hw_phy(hw); -@@ -1697,10 +1697,6 @@ +@@ -1699,10 +1699,6 @@ mt7915_reconfig_complete(struct ieee8021 } const struct ieee80211_ops mt7915_ops = { @@ -53,7 +227,7 @@ .stop = mt7915_stop, --- a/mt7915/mcu.c +++ b/mt7915/mcu.c -@@ -232,7 +232,7 @@ +@@ -253,7 +253,7 @@ mt7915_mcu_csa_finish(void *priv, u8 *ma if (!vif->bss_conf.csa_active || vif->type == NL80211_IFTYPE_STATION) return; @@ -62,7 +236,16 @@ } static void -@@ -335,7 +335,7 @@ +@@ -318,7 +318,7 @@ mt7915_mcu_rx_radar_detected(struct mt79 + &dev->rdd2_chandef, + GFP_ATOMIC); + else +- ieee80211_radar_detected(mphy->hw, NULL); ++ ieee80211_radar_detected(mphy->hw); + dev->hw_pattern++; + } + +@@ -356,7 +356,7 @@ mt7915_mcu_cca_finish(void *priv, u8 *ma if (!vif->bss_conf.color_change_active || vif->type == NL80211_IFTYPE_STATION) return; @@ -71,7 +254,7 @@ } static void -@@ -467,10 +467,10 @@ +@@ -488,10 +488,10 @@ static bool mt7915_check_he_obss_narrow_ .tolerated = true, }; @@ -84,22 +267,9 @@ mt7915_check_he_obss_narrow_bw_ru_iter, &iter_data); ---- a/mt792x_core.c -+++ b/mt792x_core.c -@@ -733,10 +733,6 @@ - if (!(*fw_features & MT792x_FW_CAP_CNM)) { - ops->remain_on_channel = NULL; - ops->cancel_remain_on_channel = NULL; -- ops->add_chanctx = ieee80211_emulate_add_chanctx; -- ops->remove_chanctx = ieee80211_emulate_remove_chanctx; -- ops->change_chanctx = ieee80211_emulate_change_chanctx; -- ops->switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx; - ops->assign_vif_chanctx = NULL; - ops->unassign_vif_chanctx = NULL; - ops->mgd_prepare_tx = NULL; --- a/mt7921/main.c +++ b/mt7921/main.c -@@ -268,7 +268,7 @@ +@@ -268,7 +268,7 @@ static int mt7921_start(struct ieee80211 return err; } @@ -108,7 +278,7 @@ { struct mt792x_dev *dev = mt792x_hw_dev(hw); int err = 0; -@@ -281,7 +281,7 @@ +@@ -281,7 +281,7 @@ static void mt7921_stop(struct ieee80211 return; } @@ -117,51 +287,94 @@ } static int ---- a/mt7996/main.c -+++ b/mt7996/main.c -@@ -93,7 +93,7 @@ - return ret; - } +--- a/mt7925/main.c ++++ b/mt7925/main.c +@@ -995,7 +995,7 @@ mt7925_mac_select_links(struct mt76_dev + continue; --static void mt7996_stop(struct ieee80211_hw *hw, bool suspend) -+static void mt7996_stop(struct ieee80211_hw *hw) + data[n_data].link_id = link_id; +- data[n_data].band = link_conf->chanreq.oper.chan->band; ++ data[n_data].band = link_conf->chandef.chan->band; + n_data++; + } + rcu_read_unlock(); +@@ -1026,7 +1026,7 @@ mt7925_mac_set_links(struct mt76_dev *md + struct mt792x_vif *mvif = (struct mt792x_vif *)vif->drv_priv; + struct ieee80211_bss_conf *link_conf = + mt792x_vif_to_bss_conf(vif, mvif->deflink_id); +- struct cfg80211_chan_def *chandef = &link_conf->chanreq.oper; ++ struct cfg80211_chan_def *chandef = &link_conf->chandef; + enum nl80211_band band = chandef->chan->band, secondary_band; + + u16 sel_links = mt7925_mac_select_links(mdev, vif); +@@ -1036,7 +1036,7 @@ mt7925_mac_set_links(struct mt76_dev *md + return; + + link_conf = mt792x_vif_to_bss_conf(vif, secondary_link_id); +- secondary_band = link_conf->chanreq.oper.chan->band; ++ secondary_band = link_conf->chandef.chan->band; + + if (band == NL80211_BAND_2GHZ || + (band == NL80211_BAND_5GHZ && secondary_band == NL80211_BAND_6GHZ)) { +--- a/mt7925/mcu.c ++++ b/mt7925/mcu.c +@@ -1166,7 +1166,7 @@ int mt7925_mcu_set_mlo_roc(struct mt792x + if (WARN_ON_ONCE(!link_conf)) + return -EPERM; + +- links[i].chan = link_conf->chanreq.oper.chan; ++ links[i].chan = link_conf->chandef.chan; + if (WARN_ON_ONCE(!links[i].chan)) + return -EPERM; + +@@ -1597,7 +1597,7 @@ mt7925_mcu_sta_phy_tlv(struct sk_buff *s + link_conf = mt792x_vif_to_bss_conf(vif, link_sta->link_id); + mconf = mt792x_vif_to_link(mvif, link_sta->link_id); + chandef = mconf->mt76.ctx ? &mconf->mt76.ctx->def : +- &link_conf->chanreq.oper; ++ &link_conf->chandef; + + tlv = mt76_connac_mcu_add_tlv(skb, STA_REC_PHY, sizeof(*phy)); + phy = (struct sta_rec_phy *)tlv; +@@ -1675,7 +1675,7 @@ mt7925_mcu_sta_rate_ctrl_tlv(struct sk_b + link_conf = mt792x_vif_to_bss_conf(vif, link_sta->link_id); + mconf = mt792x_vif_to_link(mvif, link_sta->link_id); + chandef = mconf->mt76.ctx ? &mconf->mt76.ctx->def : +- &link_conf->chanreq.oper; ++ &link_conf->chandef; + band = chandef->chan->band; + + tlv = mt76_connac_mcu_add_tlv(skb, STA_REC_RA, sizeof(*ra_info)); +@@ -2169,7 +2169,7 @@ void mt7925_mcu_bss_rlm_tlv(struct sk_bu + struct ieee80211_chanctx_conf *ctx) { - struct mt7996_dev *dev = mt7996_hw_dev(hw); - struct mt7996_phy *phy = mt7996_hw_phy(hw); -@@ -1448,10 +1448,6 @@ - #endif - - const struct ieee80211_ops mt7996_ops = { -- .add_chanctx = ieee80211_emulate_add_chanctx, -- .remove_chanctx = ieee80211_emulate_remove_chanctx, -- .change_chanctx = ieee80211_emulate_change_chanctx, -- .switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx, - .tx = mt7996_tx, - .start = mt7996_start, - .stop = mt7996_stop, ---- a/mt7996/mcu.c -+++ b/mt7996/mcu.c -@@ -353,7 +353,7 @@ - if (!vif->bss_conf.csa_active || vif->type == NL80211_IFTYPE_STATION) - return; - -- ieee80211_csa_finish(vif, 0); -+ ieee80211_csa_finish(vif); - } - - static void -@@ -433,7 +433,7 @@ - if (!vif->bss_conf.color_change_active || vif->type == NL80211_IFTYPE_STATION) - return; - -- ieee80211_color_change_finish(vif, 0); -+ ieee80211_color_change_finish(vif); - } - - static void + struct cfg80211_chan_def *chandef = ctx ? &ctx->def : +- &link_conf->chanreq.oper; ++ &link_conf->chandef; + int freq1 = chandef->center_freq1, freq2 = chandef->center_freq2; + enum nl80211_band band = chandef->chan->band; + struct bss_rlm_tlv *req; +@@ -2309,7 +2309,7 @@ mt7925_mcu_bss_basic_tlv(struct sk_buff + struct ieee80211_vif *vif = link_conf->vif; + struct mt792x_bss_conf *mconf = mt792x_link_conf_to_mconf(link_conf); + struct cfg80211_chan_def *chandef = ctx ? &ctx->def : +- &link_conf->chanreq.oper; ++ &link_conf->chandef; + enum nl80211_band band = chandef->chan->band; + struct mt76_connac_bss_basic_tlv *basic_req; + struct mt792x_link_sta *mlink; +@@ -2436,7 +2436,7 @@ mt7925_mcu_bss_bmc_tlv(struct sk_buff *s + struct ieee80211_bss_conf *link_conf) + { + struct cfg80211_chan_def *chandef = ctx ? &ctx->def : +- &link_conf->chanreq.oper; ++ &link_conf->chandef; + struct mt792x_bss_conf *mconf = mt792x_link_conf_to_mconf(link_conf); + enum nl80211_band band = chandef->chan->band; + struct mt76_vif *mvif = &mconf->mt76; --- a/mt792x.h +++ b/mt792x.h -@@ -337,7 +337,7 @@ +@@ -337,7 +337,7 @@ static inline bool mt792x_dma_need_reini #define mt792x_mutex_release(dev) \ mt76_connac_mutex_release(&(dev)->mt76, &(dev)->pm) @@ -170,7 +383,7 @@ void mt792x_pm_wake_work(struct work_struct *work); void mt792x_pm_power_save_work(struct work_struct *work); void mt792x_reset(struct mt76_dev *mdev); -@@ -457,7 +457,7 @@ +@@ -457,7 +457,7 @@ void mt792xu_wr(struct mt76_dev *dev, u3 u32 mt792xu_rmw(struct mt76_dev *dev, u32 addr, u32 mask, u32 val); void mt792xu_copy(struct mt76_dev *dev, u32 offset, const void *data, int len); void mt792xu_disconnect(struct usb_interface *usb_intf); @@ -181,7 +394,7 @@ mt792x_skb_add_usb_sdio_hdr(struct mt792x_dev *dev, struct sk_buff *skb, --- a/mt792x_core.c +++ b/mt792x_core.c -@@ -117,7 +117,7 @@ +@@ -117,7 +117,7 @@ void mt792x_tx(struct ieee80211_hw *hw, } EXPORT_SYMBOL_GPL(mt792x_tx); @@ -190,9 +403,20 @@ { struct mt792x_dev *dev = mt792x_hw_dev(hw); struct mt792x_phy *phy = mt792x_hw_phy(hw); +@@ -733,10 +733,6 @@ mt792x_get_mac80211_ops(struct device *d + if (!(*fw_features & MT792x_FW_CAP_CNM)) { + ops->remain_on_channel = NULL; + ops->cancel_remain_on_channel = NULL; +- ops->add_chanctx = ieee80211_emulate_add_chanctx; +- ops->remove_chanctx = ieee80211_emulate_remove_chanctx; +- ops->change_chanctx = ieee80211_emulate_change_chanctx; +- ops->switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx; + ops->assign_vif_chanctx = NULL; + ops->unassign_vif_chanctx = NULL; + ops->mgd_prepare_tx = NULL; --- a/mt792x_usb.c +++ b/mt792x_usb.c -@@ -285,12 +285,12 @@ +@@ -285,12 +285,12 @@ int mt792xu_init_reset(struct mt792x_dev } EXPORT_SYMBOL_GPL(mt792xu_init_reset); @@ -207,242 +431,65 @@ } EXPORT_SYMBOL_GPL(mt792xu_stop); ---- a/mt7925/main.c -+++ b/mt7925/main.c -@@ -995,7 +995,7 @@ - continue; - - data[n_data].link_id = link_id; -- data[n_data].band = link_conf->chanreq.oper.chan->band; -+ data[n_data].band = link_conf->chandef.chan->band; - n_data++; - } - rcu_read_unlock(); -@@ -1026,7 +1026,7 @@ - struct mt792x_vif *mvif = (struct mt792x_vif *)vif->drv_priv; - struct ieee80211_bss_conf *link_conf = - mt792x_vif_to_bss_conf(vif, mvif->deflink_id); -- struct cfg80211_chan_def *chandef = &link_conf->chanreq.oper; -+ struct cfg80211_chan_def *chandef = &link_conf->chandef; - enum nl80211_band band = chandef->chan->band, secondary_band; - - u16 sel_links = mt7925_mac_select_links(mdev, vif); -@@ -1036,7 +1036,7 @@ - return; - - link_conf = mt792x_vif_to_bss_conf(vif, secondary_link_id); -- secondary_band = link_conf->chanreq.oper.chan->band; -+ secondary_band = link_conf->chandef.chan->band; - - if (band == NL80211_BAND_2GHZ || - (band == NL80211_BAND_5GHZ && secondary_band == NL80211_BAND_6GHZ)) { ---- a/mt7925/mcu.c -+++ b/mt7925/mcu.c -@@ -1166,7 +1166,7 @@ - if (WARN_ON_ONCE(!link_conf)) - return -EPERM; - -- links[i].chan = link_conf->chanreq.oper.chan; -+ links[i].chan = link_conf->chandef.chan; - if (WARN_ON_ONCE(!links[i].chan)) - return -EPERM; - -@@ -1597,7 +1597,7 @@ - link_conf = mt792x_vif_to_bss_conf(vif, link_sta->link_id); - mconf = mt792x_vif_to_link(mvif, link_sta->link_id); - chandef = mconf->mt76.ctx ? &mconf->mt76.ctx->def : -- &link_conf->chanreq.oper; -+ &link_conf->chandef; - - tlv = mt76_connac_mcu_add_tlv(skb, STA_REC_PHY, sizeof(*phy)); - phy = (struct sta_rec_phy *)tlv; -@@ -1675,7 +1675,7 @@ - link_conf = mt792x_vif_to_bss_conf(vif, link_sta->link_id); - mconf = mt792x_vif_to_link(mvif, link_sta->link_id); - chandef = mconf->mt76.ctx ? &mconf->mt76.ctx->def : -- &link_conf->chanreq.oper; -+ &link_conf->chandef; - band = chandef->chan->band; - - tlv = mt76_connac_mcu_add_tlv(skb, STA_REC_RA, sizeof(*ra_info)); -@@ -2169,7 +2169,7 @@ - struct ieee80211_chanctx_conf *ctx) - { - struct cfg80211_chan_def *chandef = ctx ? &ctx->def : -- &link_conf->chanreq.oper; -+ &link_conf->chandef; - int freq1 = chandef->center_freq1, freq2 = chandef->center_freq2; - enum nl80211_band band = chandef->chan->band; - struct bss_rlm_tlv *req; -@@ -2309,7 +2309,7 @@ - struct ieee80211_vif *vif = link_conf->vif; - struct mt792x_bss_conf *mconf = mt792x_link_conf_to_mconf(link_conf); - struct cfg80211_chan_def *chandef = ctx ? &ctx->def : -- &link_conf->chanreq.oper; -+ &link_conf->chandef; - enum nl80211_band band = chandef->chan->band; - struct mt76_connac_bss_basic_tlv *basic_req; - struct mt792x_link_sta *mlink; -@@ -2436,7 +2436,7 @@ - struct ieee80211_bss_conf *link_conf) - { - struct cfg80211_chan_def *chandef = ctx ? &ctx->def : -- &link_conf->chanreq.oper; -+ &link_conf->chandef; - struct mt792x_bss_conf *mconf = mt792x_link_conf_to_mconf(link_conf); - enum nl80211_band band = chandef->chan->band; - struct mt76_vif *mvif = &mconf->mt76; ---- a/mt76x0/pci.c -+++ b/mt76x0/pci.c -@@ -44,7 +44,7 @@ - mt76_clear(dev, MT_WPDMA_GLO_CFG, MT_WPDMA_GLO_CFG_RX_DMA_EN); - } - --static void mt76x0e_stop(struct ieee80211_hw *hw, bool suspend) -+static void mt76x0e_stop(struct ieee80211_hw *hw) - { - struct mt76x02_dev *dev = hw->priv; - -@@ -59,10 +59,6 @@ - } - - static const struct ieee80211_ops mt76x0e_ops = { -- .add_chanctx = ieee80211_emulate_add_chanctx, -- .remove_chanctx = ieee80211_emulate_remove_chanctx, -- .change_chanctx = ieee80211_emulate_change_chanctx, -- .switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx, - .tx = mt76x02_tx, - .start = mt76x0e_start, - .stop = mt76x0e_stop, ---- a/mt76x0/usb.c -+++ b/mt76x0/usb.c -@@ -77,7 +77,7 @@ - mt76u_queues_deinit(&dev->mt76); - } - --static void mt76x0u_stop(struct ieee80211_hw *hw, bool suspend) -+static void mt76x0u_stop(struct ieee80211_hw *hw) - { - struct mt76x02_dev *dev = hw->priv; - -@@ -118,10 +118,6 @@ - } - - static const struct ieee80211_ops mt76x0u_ops = { -- .add_chanctx = ieee80211_emulate_add_chanctx, -- .remove_chanctx = ieee80211_emulate_remove_chanctx, -- .change_chanctx = ieee80211_emulate_change_chanctx, -- .switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx, - .tx = mt76x02_tx, - .start = mt76x0u_start, - .stop = mt76x0u_stop, ---- a/mt76x2/pci_main.c -+++ b/mt76x2/pci_main.c -@@ -24,7 +24,7 @@ - } - - static void --mt76x2_stop(struct ieee80211_hw *hw, bool suspend) -+mt76x2_stop(struct ieee80211_hw *hw) - { - struct mt76x02_dev *dev = hw->priv; - -@@ -121,10 +121,6 @@ - } - - const struct ieee80211_ops mt76x2_ops = { -- .add_chanctx = ieee80211_emulate_add_chanctx, -- .remove_chanctx = ieee80211_emulate_remove_chanctx, -- .change_chanctx = ieee80211_emulate_change_chanctx, -- .switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx, - .tx = mt76x02_tx, - .start = mt76x2_start, - .stop = mt76x2_stop, ---- a/mt76x2/usb_main.c -+++ b/mt76x2/usb_main.c -@@ -22,7 +22,7 @@ - return 0; - } - --static void mt76x2u_stop(struct ieee80211_hw *hw, bool suspend) -+static void mt76x2u_stop(struct ieee80211_hw *hw) - { - struct mt76x02_dev *dev = hw->priv; - -@@ -88,10 +88,6 @@ - } - - const struct ieee80211_ops mt76x2u_ops = { -- .add_chanctx = ieee80211_emulate_add_chanctx, -- .remove_chanctx = ieee80211_emulate_remove_chanctx, -- .change_chanctx = ieee80211_emulate_change_chanctx, -- .switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx, - .tx = mt76x02_tx, - .start = mt76x2u_start, - .stop = mt76x2u_stop, ---- a/mt7603/main.c -+++ b/mt7603/main.c -@@ -23,7 +23,7 @@ - } - - static void --mt7603_stop(struct ieee80211_hw *hw, bool suspend) -+mt7603_stop(struct ieee80211_hw *hw) - { - struct mt7603_dev *dev = hw->priv; - -@@ -694,10 +694,6 @@ - } - - const struct ieee80211_ops mt7603_ops = { -- .add_chanctx = ieee80211_emulate_add_chanctx, -- .remove_chanctx = ieee80211_emulate_remove_chanctx, -- .change_chanctx = ieee80211_emulate_change_chanctx, -- .switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx, - .tx = mt7603_tx, - .start = mt7603_start, - .stop = mt7603_stop, ---- a/mt7615/main.c -+++ b/mt7615/main.c -@@ -91,7 +91,7 @@ +--- a/mt7996/main.c ++++ b/mt7996/main.c +@@ -93,7 +93,7 @@ static int mt7996_start(struct ieee80211 return ret; } --static void mt7615_stop(struct ieee80211_hw *hw, bool suspend) -+static void mt7615_stop(struct ieee80211_hw *hw) +-static void mt7996_stop(struct ieee80211_hw *hw, bool suspend) ++static void mt7996_stop(struct ieee80211_hw *hw) { - struct mt7615_dev *dev = mt7615_hw_dev(hw); - struct mt7615_phy *phy = mt7615_hw_phy(hw); -@@ -1313,10 +1313,6 @@ - #endif /* CONFIG_PM */ + struct mt7996_dev *dev = mt7996_hw_dev(hw); + struct mt7996_phy *phy = mt7996_hw_phy(hw); +@@ -1447,10 +1447,6 @@ mt7996_net_fill_forward_path(struct ieee + #endif - const struct ieee80211_ops mt7615_ops = { + const struct ieee80211_ops mt7996_ops = { - .add_chanctx = ieee80211_emulate_add_chanctx, - .remove_chanctx = ieee80211_emulate_remove_chanctx, - .change_chanctx = ieee80211_emulate_change_chanctx, - .switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx, - .tx = mt7615_tx, - .start = mt7615_start, - .stop = mt7615_stop, ---- a/mt7615/mcu.c -+++ b/mt7615/mcu.c -@@ -353,7 +353,7 @@ - mt7615_mcu_csa_finish(void *priv, u8 *mac, struct ieee80211_vif *vif) - { - if (vif->bss_conf.csa_active) -- ieee80211_csa_finish(vif, 0); -+ ieee80211_csa_finish(vif); + .tx = mt7996_tx, + .start = mt7996_start, + .stop = mt7996_stop, +--- a/mt7996/mcu.c ++++ b/mt7996/mcu.c +@@ -353,7 +353,7 @@ mt7996_mcu_csa_finish(void *priv, u8 *ma + if (!vif->bss_conf.csa_active || vif->type == NL80211_IFTYPE_STATION) + return; + +- ieee80211_csa_finish(vif, 0); ++ ieee80211_csa_finish(vif); } static void ---- a/mt7615/usb.c -+++ b/mt7615/usb.c -@@ -79,7 +79,7 @@ - mutex_unlock(&usb->usb_ctrl_mtx); +@@ -383,7 +383,7 @@ mt7996_mcu_rx_radar_detected(struct mt79 + &dev->rdd2_chandef, + GFP_ATOMIC); + else +- ieee80211_radar_detected(mphy->hw, NULL); ++ ieee80211_radar_detected(mphy->hw); + dev->hw_pattern++; } --static void mt7663u_stop(struct ieee80211_hw *hw, bool suspend) -+static void mt7663u_stop(struct ieee80211_hw *hw) - { - struct mt7615_phy *phy = mt7615_hw_phy(hw); - struct mt7615_dev *dev = hw->priv; +@@ -433,7 +433,7 @@ mt7996_mcu_cca_finish(void *priv, u8 *ma + if (!vif->bss_conf.color_change_active || vif->type == NL80211_IFTYPE_STATION) + return; + +- ieee80211_color_change_finish(vif, 0); ++ ieee80211_color_change_finish(vif); + } + + static void +--- a/tx.c ++++ b/tx.c +@@ -350,7 +350,7 @@ mt76_tx(struct mt76_phy *phy, struct iee + info->hw_queue |= FIELD_PREP(MT_TX_HW_QUEUE_PHY, phy->band_idx); + + if ((info->flags & IEEE80211_TX_CTL_TX_OFFCHAN) || +- (info->control.flags & IEEE80211_TX_CTRL_DONT_USE_RATE_MASK)) ++ (info->control.flags & IEEE80211_TX_CTRL_SCAN_TX)) + head = &wcid->tx_offchannel; + else + head = &wcid->tx_pending; diff --git a/lede/package/kernel/mt76/patches-6.x/200-fix-kernel-6.12-support.patch b/lede/package/kernel/mt76/patches-6.x/200-fix-kernel-6.12-support.patch index acb90ae5e0..59a7cc4123 100644 --- a/lede/package/kernel/mt76/patches-6.x/200-fix-kernel-6.12-support.patch +++ b/lede/package/kernel/mt76/patches-6.x/200-fix-kernel-6.12-support.patch @@ -1,3 +1,12 @@ +--- a/Makefile ++++ b/Makefile +@@ -1,5 +1,5 @@ + # SPDX-License-Identifier: GPL-2.0-only +-EXTRA_CFLAGS += -Werror -DCONFIG_MT76_LEDS ++EXTRA_CFLAGS += -Werror -Wno-unused-variable -DCONFIG_MT76_LEDS + obj-m := mt76.o + obj-$(CONFIG_MT76_USB) += mt76-usb.o + obj-$(CONFIG_MT76_SDIO) += mt76-sdio.o --- a/mac80211.c +++ b/mac80211.c @@ -582,7 +582,11 @@ int mt76_create_page_pool(struct mt76_de diff --git a/lede/package/kernel/mt76/patches-6.x/500-add-tx-power-check-for-be14.patch b/lede/package/kernel/mt76/patches-6.x/500-add-tx-power-check-for-be14.patch index fd84d4eeeb..eccc6de93c 100644 --- a/lede/package/kernel/mt76/patches-6.x/500-add-tx-power-check-for-be14.patch +++ b/lede/package/kernel/mt76/patches-6.x/500-add-tx-power-check-for-be14.patch @@ -7,11 +7,9 @@ Subject: [PATCH] add tx_power check during eeprom loading for BE14 mt7996/eeprom.c | 7 +++++++ 1 file changed, 7 insertions(+) -diff --git a/mt7996/eeprom.c b/mt7996/eeprom.c -index 53dfac02f..a699668ca 100644 --- a/mt7996/eeprom.c +++ b/mt7996/eeprom.c -@@ -206,6 +206,13 @@ static int mt7996_eeprom_load(struct mt7996_dev *dev) +@@ -206,6 +206,13 @@ static int mt7996_eeprom_load(struct mt7 goto out; } } diff --git a/openwrt-packages/adguardhome/Makefile b/openwrt-packages/adguardhome/Makefile index 1c00a8c17c..8c667a90ae 100644 --- a/openwrt-packages/adguardhome/Makefile +++ b/openwrt-packages/adguardhome/Makefile @@ -6,12 +6,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=adguardhome -PKG_VERSION:=0.107.71 +PKG_VERSION:=0.107.72 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/AdguardTeam/AdGuardHome/tar.gz/v$(PKG_VERSION)? -PKG_HASH:=f3dde5da6ba48270ac25bd2f501c4ce1af54ddeef93fcd84ef3a8270cec9539f +PKG_HASH:=8f6d1cba4a7b7e986840f2a7dbaeb0dd9af51b60a49fa709cf30b9beba841c76 PKG_BUILD_DIR:=$(BUILD_DIR)/AdGuardHome-$(PKG_VERSION) PKG_LICENSE:=GPL-3.0-only @@ -58,7 +58,7 @@ define Download/adguardhome-frontend URL:=https://github.com/AdguardTeam/AdGuardHome/releases/download/v$(PKG_VERSION)/ URL_FILE:=AdGuardHome_frontend.tar.gz FILE:=$(FRONTEND_FILE) - HASH:=51b229a5dff010c17bd8894bbf4291907e93708c366801e32181be7f37dd4488 + HASH:=bfdedb78b10269d2b263fcea658b24ee7597770be1ca635d56f6419f825dfecc endef define Build/Prepare diff --git a/sing-box/.github/CRONET_GO_VERSION b/sing-box/.github/CRONET_GO_VERSION index b544b75f3b..310a851056 100644 --- a/sing-box/.github/CRONET_GO_VERSION +++ b/sing-box/.github/CRONET_GO_VERSION @@ -1 +1 @@ -71a7ecb25823f2f28620f2f94dc9dd3a5c62c717 +1a14d2a2f8327c82a9b24f4fdaabae35e1619e94 diff --git a/sing-box/go.mod b/sing-box/go.mod index a70c0352f6..e8f075425f 100644 --- a/sing-box/go.mod +++ b/sing-box/go.mod @@ -27,8 +27,8 @@ require ( github.com/sagernet/asc-go v0.0.0-20241217030726-d563060fe4e1 github.com/sagernet/bbolt v0.0.0-20231014093535-ea5cb2fe9f0a github.com/sagernet/cors v1.2.1 - github.com/sagernet/cronet-go v0.0.0-20260217163133-71a7ecb25823 - github.com/sagernet/cronet-go/all v0.0.0-20260217163133-71a7ecb25823 + github.com/sagernet/cronet-go v0.0.0-20260218135011-341ab5a7e12b + github.com/sagernet/cronet-go/all v0.0.0-20260218135011-341ab5a7e12b github.com/sagernet/fswatch v0.1.1 github.com/sagernet/gomobile v0.1.11 github.com/sagernet/gvisor v0.0.0-20250811.0-sing-box-mod.1 @@ -105,28 +105,28 @@ require ( github.com/prometheus-community/pro-bing v0.4.0 // indirect github.com/quic-go/qpack v0.6.0 // indirect github.com/safchain/ethtool v0.3.0 // indirect - github.com/sagernet/cronet-go/lib/android_386 v0.0.0-20260217162658-2bfd08238a86 // indirect - github.com/sagernet/cronet-go/lib/android_amd64 v0.0.0-20260217162658-2bfd08238a86 // indirect - github.com/sagernet/cronet-go/lib/android_arm v0.0.0-20260217162658-2bfd08238a86 // indirect - github.com/sagernet/cronet-go/lib/android_arm64 v0.0.0-20260217162658-2bfd08238a86 // indirect - github.com/sagernet/cronet-go/lib/darwin_amd64 v0.0.0-20260217162658-2bfd08238a86 // indirect - github.com/sagernet/cronet-go/lib/darwin_arm64 v0.0.0-20260217162658-2bfd08238a86 // indirect - github.com/sagernet/cronet-go/lib/ios_amd64_simulator v0.0.0-20260217162658-2bfd08238a86 // indirect - github.com/sagernet/cronet-go/lib/ios_arm64 v0.0.0-20260217162658-2bfd08238a86 // indirect - github.com/sagernet/cronet-go/lib/ios_arm64_simulator v0.0.0-20260217162658-2bfd08238a86 // indirect - github.com/sagernet/cronet-go/lib/linux_386 v0.0.0-20260217162658-2bfd08238a86 // indirect - github.com/sagernet/cronet-go/lib/linux_386_musl v0.0.0-20260217162658-2bfd08238a86 // indirect - github.com/sagernet/cronet-go/lib/linux_amd64 v0.0.0-20260217162658-2bfd08238a86 // indirect - github.com/sagernet/cronet-go/lib/linux_amd64_musl v0.0.0-20260217162658-2bfd08238a86 // indirect - github.com/sagernet/cronet-go/lib/linux_arm v0.0.0-20260217162658-2bfd08238a86 // indirect - github.com/sagernet/cronet-go/lib/linux_arm64 v0.0.0-20260217162658-2bfd08238a86 // indirect - github.com/sagernet/cronet-go/lib/linux_arm64_musl v0.0.0-20260217162658-2bfd08238a86 // indirect - github.com/sagernet/cronet-go/lib/linux_arm_musl v0.0.0-20260217162658-2bfd08238a86 // indirect - github.com/sagernet/cronet-go/lib/tvos_amd64_simulator v0.0.0-20260217162658-2bfd08238a86 // indirect - github.com/sagernet/cronet-go/lib/tvos_arm64 v0.0.0-20260217162658-2bfd08238a86 // indirect - github.com/sagernet/cronet-go/lib/tvos_arm64_simulator v0.0.0-20260217162658-2bfd08238a86 // indirect - github.com/sagernet/cronet-go/lib/windows_amd64 v0.0.0-20260217162658-2bfd08238a86 // indirect - github.com/sagernet/cronet-go/lib/windows_arm64 v0.0.0-20260217162658-2bfd08238a86 // indirect + github.com/sagernet/cronet-go/lib/android_386 v0.0.0-20260218134507-0233d9d13e55 // indirect + github.com/sagernet/cronet-go/lib/android_amd64 v0.0.0-20260218134507-0233d9d13e55 // indirect + github.com/sagernet/cronet-go/lib/android_arm v0.0.0-20260218134507-0233d9d13e55 // indirect + github.com/sagernet/cronet-go/lib/android_arm64 v0.0.0-20260218134507-0233d9d13e55 // indirect + github.com/sagernet/cronet-go/lib/darwin_amd64 v0.0.0-20260218134507-0233d9d13e55 // indirect + github.com/sagernet/cronet-go/lib/darwin_arm64 v0.0.0-20260218134507-0233d9d13e55 // indirect + github.com/sagernet/cronet-go/lib/ios_amd64_simulator v0.0.0-20260218134507-0233d9d13e55 // indirect + github.com/sagernet/cronet-go/lib/ios_arm64 v0.0.0-20260218134507-0233d9d13e55 // indirect + github.com/sagernet/cronet-go/lib/ios_arm64_simulator v0.0.0-20260218134507-0233d9d13e55 // indirect + github.com/sagernet/cronet-go/lib/linux_386 v0.0.0-20260218134507-0233d9d13e55 // indirect + github.com/sagernet/cronet-go/lib/linux_386_musl v0.0.0-20260218134507-0233d9d13e55 // indirect + github.com/sagernet/cronet-go/lib/linux_amd64 v0.0.0-20260218134507-0233d9d13e55 // indirect + github.com/sagernet/cronet-go/lib/linux_amd64_musl v0.0.0-20260218134507-0233d9d13e55 // indirect + github.com/sagernet/cronet-go/lib/linux_arm v0.0.0-20260218134507-0233d9d13e55 // indirect + github.com/sagernet/cronet-go/lib/linux_arm64 v0.0.0-20260218134507-0233d9d13e55 // indirect + github.com/sagernet/cronet-go/lib/linux_arm64_musl v0.0.0-20260218134507-0233d9d13e55 // indirect + github.com/sagernet/cronet-go/lib/linux_arm_musl v0.0.0-20260218134507-0233d9d13e55 // indirect + github.com/sagernet/cronet-go/lib/tvos_amd64_simulator v0.0.0-20260218134507-0233d9d13e55 // indirect + github.com/sagernet/cronet-go/lib/tvos_arm64 v0.0.0-20260218134507-0233d9d13e55 // indirect + github.com/sagernet/cronet-go/lib/tvos_arm64_simulator v0.0.0-20260218134507-0233d9d13e55 // indirect + github.com/sagernet/cronet-go/lib/windows_amd64 v0.0.0-20260218134507-0233d9d13e55 // indirect + github.com/sagernet/cronet-go/lib/windows_arm64 v0.0.0-20260218134507-0233d9d13e55 // indirect github.com/sagernet/netlink v0.0.0-20240612041022-b9a21c07ac6a // indirect github.com/sagernet/nftables v0.3.0-beta.4 // indirect github.com/spf13/pflag v1.0.9 // indirect diff --git a/sing-box/go.sum b/sing-box/go.sum index 699e0a4ea4..97269c88c9 100644 --- a/sing-box/go.sum +++ b/sing-box/go.sum @@ -150,54 +150,54 @@ github.com/sagernet/bbolt v0.0.0-20231014093535-ea5cb2fe9f0a h1:+NkI2670SQpQWvkk github.com/sagernet/bbolt v0.0.0-20231014093535-ea5cb2fe9f0a/go.mod h1:63s7jpZqcDAIpj8oI/1v4Izok+npJOHACFCU6+huCkM= github.com/sagernet/cors v1.2.1 h1:Cv5Z8y9YSD6Gm+qSpNrL3LO4lD3eQVvbFYJSG7JCMHQ= github.com/sagernet/cors v1.2.1/go.mod h1:O64VyOjjhrkLmQIjF4KGRrJO/5dVXFdpEmCW/eISRAI= -github.com/sagernet/cronet-go v0.0.0-20260217163133-71a7ecb25823 h1:9XbfvBCk5ELnJ3eCLwXpJM0CDBba0ZHJOfmFyhNFCow= -github.com/sagernet/cronet-go v0.0.0-20260217163133-71a7ecb25823/go.mod h1:hwFHBEjjthyEquDULbr4c4ucMedp8Drb6Jvm2kt/0Bw= -github.com/sagernet/cronet-go/all v0.0.0-20260217163133-71a7ecb25823 h1:WxH8uD7xRmmvGb4lRrr2E7NMCXtti2+pQTnUt61BcmY= -github.com/sagernet/cronet-go/all v0.0.0-20260217163133-71a7ecb25823/go.mod h1:eQ7M+vx5EvWIxwhpOowy2uUIKeJrKKgX0rgsV9RK+ug= -github.com/sagernet/cronet-go/lib/android_386 v0.0.0-20260217162658-2bfd08238a86 h1:jkUKjlIJjUGpYbwhZgjEnAe/IJAtnszMH1T08g+DuaM= -github.com/sagernet/cronet-go/lib/android_386 v0.0.0-20260217162658-2bfd08238a86/go.mod h1:XXDwdjX/T8xftoeJxQmbBoYXZp8MAPFR2CwbFuTpEtw= -github.com/sagernet/cronet-go/lib/android_amd64 v0.0.0-20260217162658-2bfd08238a86 h1:ypY9a/AfaGhPGVYdoJ/uQOq0oK8BEI5GPrVfwqvyHrg= -github.com/sagernet/cronet-go/lib/android_amd64 v0.0.0-20260217162658-2bfd08238a86/go.mod h1:iNiUGoLtnr8/JTuVNj7XJbmpOAp2C6+B81KDrPxwaZM= -github.com/sagernet/cronet-go/lib/android_arm v0.0.0-20260217162658-2bfd08238a86 h1:xue0tra/qcrCtxcSng4WYS4q01Dnsww9u6XSoVJA4sg= -github.com/sagernet/cronet-go/lib/android_arm v0.0.0-20260217162658-2bfd08238a86/go.mod h1:19ILNUOGIzRdOqa2mq+iY0JoHxuieB7/lnjYeaA2vEc= -github.com/sagernet/cronet-go/lib/android_arm64 v0.0.0-20260217162658-2bfd08238a86 h1:1RwX26i/6tPMG5/xty16eD7W6gBL1vcOTeZ6hEN6bY4= -github.com/sagernet/cronet-go/lib/android_arm64 v0.0.0-20260217162658-2bfd08238a86/go.mod h1:JxzGyQf94Cr6sBShKqODGDyRUlESfJK/Njcz9Lz6qMQ= -github.com/sagernet/cronet-go/lib/darwin_amd64 v0.0.0-20260217162658-2bfd08238a86 h1:51GT1OcjjWGlTQZJC5GASpOxGHbr8PVs+wJo7znMqjQ= -github.com/sagernet/cronet-go/lib/darwin_amd64 v0.0.0-20260217162658-2bfd08238a86/go.mod h1:KN+9T9TBycGOLzmKU4QdcHAJEj6Nlx48ifnlTvvHMvs= -github.com/sagernet/cronet-go/lib/darwin_arm64 v0.0.0-20260217162658-2bfd08238a86 h1:abnUJ2RSsvhfqL2rAwGL9wt9obNQttOOKVRa+d/lzX0= -github.com/sagernet/cronet-go/lib/darwin_arm64 v0.0.0-20260217162658-2bfd08238a86/go.mod h1:kojvtUc29KKnk8hs2QIANynVR59921SnGWA9kXohHc0= -github.com/sagernet/cronet-go/lib/ios_amd64_simulator v0.0.0-20260217162658-2bfd08238a86 h1:qhrdVZgYGaRuwUXKxYWyXxiM3+upyX0vXbVwvfqsPl4= -github.com/sagernet/cronet-go/lib/ios_amd64_simulator v0.0.0-20260217162658-2bfd08238a86/go.mod h1:hkQzRE5GDbaH1/ioqYh0Taho4L6i0yLRCVEZ5xHz5M0= -github.com/sagernet/cronet-go/lib/ios_arm64 v0.0.0-20260217162658-2bfd08238a86 h1:SemvxwP5Sqxg2V9kcM/ERlXv7qbiNDJXb7gOBmlJ1o0= -github.com/sagernet/cronet-go/lib/ios_arm64 v0.0.0-20260217162658-2bfd08238a86/go.mod h1:tzVJFTOm66UxLxy6K0ZN5Ic2PC79e+sKKnt+V9puEa4= -github.com/sagernet/cronet-go/lib/ios_arm64_simulator v0.0.0-20260217162658-2bfd08238a86 h1:v88k4gE/Nr53Cmx/F3fz+k7izllcnZIg2Y4f7dSkoRE= -github.com/sagernet/cronet-go/lib/ios_arm64_simulator v0.0.0-20260217162658-2bfd08238a86/go.mod h1:M/pN6m3j0HFU6/y83n0HU6GLYys3tYdr/xTE8hVEGMo= -github.com/sagernet/cronet-go/lib/linux_386 v0.0.0-20260217162658-2bfd08238a86 h1:HpAanCJjJwoVandt54XjU6LhH1sVgO51H9aVh4RAt3c= -github.com/sagernet/cronet-go/lib/linux_386 v0.0.0-20260217162658-2bfd08238a86/go.mod h1:cGh5hO6eljCo6KMQ/Cel8Xgq4+etL0awZLRBDVG1EZQ= -github.com/sagernet/cronet-go/lib/linux_386_musl v0.0.0-20260217162658-2bfd08238a86 h1:5LZxdx4X+wG5t8ESxjV41UcxoUM2rS48aprnkY+nTdY= -github.com/sagernet/cronet-go/lib/linux_386_musl v0.0.0-20260217162658-2bfd08238a86/go.mod h1:JFE0/cxaKkx0wqPMZU7MgaplQlU0zudv82dROJjClKU= -github.com/sagernet/cronet-go/lib/linux_amd64 v0.0.0-20260217162658-2bfd08238a86 h1:Pj/ik7Ux5jWEhUiiavILNwO2k4A4KmijJ2yqDEnxJuY= -github.com/sagernet/cronet-go/lib/linux_amd64 v0.0.0-20260217162658-2bfd08238a86/go.mod h1:vU8VftFeSt7fURCa3JXD6+k6ss1YAX+idQjPvHmJ2tI= -github.com/sagernet/cronet-go/lib/linux_amd64_musl v0.0.0-20260217162658-2bfd08238a86 h1:gDlkdfFVjpWmUfVDXLmRkvfOt7UM9M9CNKJLJWfH4oI= -github.com/sagernet/cronet-go/lib/linux_amd64_musl v0.0.0-20260217162658-2bfd08238a86/go.mod h1:vCe4OUuL+XOUge9v3MyTD45BnuAXiH+DkjN9quDXJzQ= -github.com/sagernet/cronet-go/lib/linux_arm v0.0.0-20260217162658-2bfd08238a86 h1:5cgey8hMXnc7oSD6h4qJtGfBSPxCXMoq3vsiuD3lgsE= -github.com/sagernet/cronet-go/lib/linux_arm v0.0.0-20260217162658-2bfd08238a86/go.mod h1:w9amBWrvjtohQzBGCKJ7LCh22LhTIJs4sE7cYaKQzM0= -github.com/sagernet/cronet-go/lib/linux_arm64 v0.0.0-20260217162658-2bfd08238a86 h1:qxl5A0k37PBhCZPkswKFN/Ig2PMYCm/9sCFT6e/gRjc= -github.com/sagernet/cronet-go/lib/linux_arm64 v0.0.0-20260217162658-2bfd08238a86/go.mod h1:TqlsFtcYS/etTeck46kHBeT8Le0Igw1Q/AV88UnMS3s= -github.com/sagernet/cronet-go/lib/linux_arm64_musl v0.0.0-20260217162658-2bfd08238a86 h1:5tKDHiM9rHIpnTm4tIqOrcjWZ9SrU9RTgPLCVy9C1Io= -github.com/sagernet/cronet-go/lib/linux_arm64_musl v0.0.0-20260217162658-2bfd08238a86/go.mod h1:B6Qd0vys8sv9OKVRN6J9RqDzYRGE938Fb2zrYdBDyTQ= -github.com/sagernet/cronet-go/lib/linux_arm_musl v0.0.0-20260217162658-2bfd08238a86 h1:o5hG0iP/xkGx+MkOJwUQp4nkg2Qhz8KIZuON2VcdF4Y= -github.com/sagernet/cronet-go/lib/linux_arm_musl v0.0.0-20260217162658-2bfd08238a86/go.mod h1:3tXMMFY7AHugOVBZ5Al7cL7JKsnFOe5bMVr0hZPk3ow= -github.com/sagernet/cronet-go/lib/tvos_amd64_simulator v0.0.0-20260217162658-2bfd08238a86 h1:ONOmm7KXwv9ArBdw2ozHPcqiiQH5Z2dhE78204iLB5g= -github.com/sagernet/cronet-go/lib/tvos_amd64_simulator v0.0.0-20260217162658-2bfd08238a86/go.mod h1:aaX0YGl8nhGmfRWI8bc3BtDjY8Vzx6O0cS/e1uqxDq4= -github.com/sagernet/cronet-go/lib/tvos_arm64 v0.0.0-20260217162658-2bfd08238a86 h1:9kPYonCM0Jly0vDGWeCM5+rwtujgXjkhimTqDGKhVpo= -github.com/sagernet/cronet-go/lib/tvos_arm64 v0.0.0-20260217162658-2bfd08238a86/go.mod h1:EdzMKA96xITc42QEI+ct4SwqX8Dn3ltKK8wzdkLWpSc= -github.com/sagernet/cronet-go/lib/tvos_arm64_simulator v0.0.0-20260217162658-2bfd08238a86 h1:7j3jZ260pELBZ9F/3pKPiuVlQhJdCqjA3lRWGtaeT14= -github.com/sagernet/cronet-go/lib/tvos_arm64_simulator v0.0.0-20260217162658-2bfd08238a86/go.mod h1:qix4kv1TTAJ5tY4lJ9vjhe9EY4mM+B7H5giOhbxDVcc= -github.com/sagernet/cronet-go/lib/windows_amd64 v0.0.0-20260217162658-2bfd08238a86 h1:/2Ks+eLOFXurh5bF3xPbdhQ+rHYkG27RhGORNSDDHjU= -github.com/sagernet/cronet-go/lib/windows_amd64 v0.0.0-20260217162658-2bfd08238a86/go.mod h1:lm9w/oCCRyBiUa3G8lDQTT8x/ONUvgVR2iV9fVzUZB8= -github.com/sagernet/cronet-go/lib/windows_arm64 v0.0.0-20260217162658-2bfd08238a86 h1:6YzyCGxKTFBOU9PXW2kYLjfxFTwbv0vwYVDTRcNTe3M= -github.com/sagernet/cronet-go/lib/windows_arm64 v0.0.0-20260217162658-2bfd08238a86/go.mod h1:n34YyLgapgjWdKa0IoeczjAFCwD3/dxbsH5sucKw0bw= +github.com/sagernet/cronet-go v0.0.0-20260218135011-341ab5a7e12b h1:C+VmtHpvMdH+lItwBvJmIqrBr3+xxNRiCs+pIRYR4iU= +github.com/sagernet/cronet-go v0.0.0-20260218135011-341ab5a7e12b/go.mod h1:hwFHBEjjthyEquDULbr4c4ucMedp8Drb6Jvm2kt/0Bw= +github.com/sagernet/cronet-go/all v0.0.0-20260218135011-341ab5a7e12b h1:ZV95cJT0nnrxfldjJ377hKpqHYMtPAsq4r/UIgp7/Ws= +github.com/sagernet/cronet-go/all v0.0.0-20260218135011-341ab5a7e12b/go.mod h1:O9ntqK/rqU71lkDTyIw3I3lShG85/Vxd3Q+eiQkbJtc= +github.com/sagernet/cronet-go/lib/android_386 v0.0.0-20260218134507-0233d9d13e55 h1:RPlT6blVhQQ+AUztnAx/JCOGCdR1H1UsAJ2Eg9t7vHs= +github.com/sagernet/cronet-go/lib/android_386 v0.0.0-20260218134507-0233d9d13e55/go.mod h1:XXDwdjX/T8xftoeJxQmbBoYXZp8MAPFR2CwbFuTpEtw= +github.com/sagernet/cronet-go/lib/android_amd64 v0.0.0-20260218134507-0233d9d13e55 h1:F6r8Nnzm6J8IZ+goPGr8yhQ0yPQFSUwQ/WVZyT78NZ8= +github.com/sagernet/cronet-go/lib/android_amd64 v0.0.0-20260218134507-0233d9d13e55/go.mod h1:iNiUGoLtnr8/JTuVNj7XJbmpOAp2C6+B81KDrPxwaZM= +github.com/sagernet/cronet-go/lib/android_arm v0.0.0-20260218134507-0233d9d13e55 h1:qVhvEmTmaaVriSklO0WSOa5k41nxItuZvxhdz3y+4LY= +github.com/sagernet/cronet-go/lib/android_arm v0.0.0-20260218134507-0233d9d13e55/go.mod h1:19ILNUOGIzRdOqa2mq+iY0JoHxuieB7/lnjYeaA2vEc= +github.com/sagernet/cronet-go/lib/android_arm64 v0.0.0-20260218134507-0233d9d13e55 h1:G4qICXcO/B8VeTTV+KlNo007zEkEjLDZfSTb1yDgHVY= +github.com/sagernet/cronet-go/lib/android_arm64 v0.0.0-20260218134507-0233d9d13e55/go.mod h1:JxzGyQf94Cr6sBShKqODGDyRUlESfJK/Njcz9Lz6qMQ= +github.com/sagernet/cronet-go/lib/darwin_amd64 v0.0.0-20260218134507-0233d9d13e55 h1:O63Cn7qxNqfIvmgIFy9ZvKqusc9QP/XZXOadj21N5Eo= +github.com/sagernet/cronet-go/lib/darwin_amd64 v0.0.0-20260218134507-0233d9d13e55/go.mod h1:KN+9T9TBycGOLzmKU4QdcHAJEj6Nlx48ifnlTvvHMvs= +github.com/sagernet/cronet-go/lib/darwin_arm64 v0.0.0-20260218134507-0233d9d13e55 h1:IlqW6FBpDlYxRHVGke4/A9/b4oEGTvPqyM6buqAu9RU= +github.com/sagernet/cronet-go/lib/darwin_arm64 v0.0.0-20260218134507-0233d9d13e55/go.mod h1:kojvtUc29KKnk8hs2QIANynVR59921SnGWA9kXohHc0= +github.com/sagernet/cronet-go/lib/ios_amd64_simulator v0.0.0-20260218134507-0233d9d13e55 h1:4viN3DO5LHz/24kbIfx1sTMQplkZg0FBBpwxmc9QiUY= +github.com/sagernet/cronet-go/lib/ios_amd64_simulator v0.0.0-20260218134507-0233d9d13e55/go.mod h1:hkQzRE5GDbaH1/ioqYh0Taho4L6i0yLRCVEZ5xHz5M0= +github.com/sagernet/cronet-go/lib/ios_arm64 v0.0.0-20260218134507-0233d9d13e55 h1:6wcoqtMnDbfMCnmhld+HeEuz7LcDLQo4YTYEAkJCKCU= +github.com/sagernet/cronet-go/lib/ios_arm64 v0.0.0-20260218134507-0233d9d13e55/go.mod h1:tzVJFTOm66UxLxy6K0ZN5Ic2PC79e+sKKnt+V9puEa4= +github.com/sagernet/cronet-go/lib/ios_arm64_simulator v0.0.0-20260218134507-0233d9d13e55 h1:CUM2txeTIsBucTNXaKNpCapXp/BnYIQVnJRiYKtyZRw= +github.com/sagernet/cronet-go/lib/ios_arm64_simulator v0.0.0-20260218134507-0233d9d13e55/go.mod h1:M/pN6m3j0HFU6/y83n0HU6GLYys3tYdr/xTE8hVEGMo= +github.com/sagernet/cronet-go/lib/linux_386 v0.0.0-20260218134507-0233d9d13e55 h1:RDDuVWP8Jm/9u/EH7af5GvCQRQuT5vA0mxNvnoWTe4E= +github.com/sagernet/cronet-go/lib/linux_386 v0.0.0-20260218134507-0233d9d13e55/go.mod h1:cGh5hO6eljCo6KMQ/Cel8Xgq4+etL0awZLRBDVG1EZQ= +github.com/sagernet/cronet-go/lib/linux_386_musl v0.0.0-20260218134507-0233d9d13e55 h1:hJZ3MMglbom0vg/5kNHawipJfWyZIV1lvATpVAVwwQ0= +github.com/sagernet/cronet-go/lib/linux_386_musl v0.0.0-20260218134507-0233d9d13e55/go.mod h1:JFE0/cxaKkx0wqPMZU7MgaplQlU0zudv82dROJjClKU= +github.com/sagernet/cronet-go/lib/linux_amd64 v0.0.0-20260218134507-0233d9d13e55 h1:wST2ZH1xSXYjI/0HySDVjn/eo55BkFH9OSqwzSZ+WkQ= +github.com/sagernet/cronet-go/lib/linux_amd64 v0.0.0-20260218134507-0233d9d13e55/go.mod h1:vU8VftFeSt7fURCa3JXD6+k6ss1YAX+idQjPvHmJ2tI= +github.com/sagernet/cronet-go/lib/linux_amd64_musl v0.0.0-20260218134507-0233d9d13e55 h1:BIm7F6FmsqsViVFFNmW89UYZEWi1pYcDO7l9odfDwzw= +github.com/sagernet/cronet-go/lib/linux_amd64_musl v0.0.0-20260218134507-0233d9d13e55/go.mod h1:vCe4OUuL+XOUge9v3MyTD45BnuAXiH+DkjN9quDXJzQ= +github.com/sagernet/cronet-go/lib/linux_arm v0.0.0-20260218134507-0233d9d13e55 h1:Iv3xWMuhpZjKoHDTMGfkK+W4cjizkROgp9o72/yoGgg= +github.com/sagernet/cronet-go/lib/linux_arm v0.0.0-20260218134507-0233d9d13e55/go.mod h1:w9amBWrvjtohQzBGCKJ7LCh22LhTIJs4sE7cYaKQzM0= +github.com/sagernet/cronet-go/lib/linux_arm64 v0.0.0-20260218134507-0233d9d13e55 h1:safWOBgqIOgQhqFwdwaqs5jfDoCyas0WefbZT9EAXkE= +github.com/sagernet/cronet-go/lib/linux_arm64 v0.0.0-20260218134507-0233d9d13e55/go.mod h1:TqlsFtcYS/etTeck46kHBeT8Le0Igw1Q/AV88UnMS3s= +github.com/sagernet/cronet-go/lib/linux_arm64_musl v0.0.0-20260218134507-0233d9d13e55 h1:wt0ppRaCchFk4mvqG0ssxO9ghzMWERubZv4aFWW8olI= +github.com/sagernet/cronet-go/lib/linux_arm64_musl v0.0.0-20260218134507-0233d9d13e55/go.mod h1:B6Qd0vys8sv9OKVRN6J9RqDzYRGE938Fb2zrYdBDyTQ= +github.com/sagernet/cronet-go/lib/linux_arm_musl v0.0.0-20260218134507-0233d9d13e55 h1:TOs3sFXM+xBqbfVtrPuGUwZX6wogvr/4pSQJdJ/VtP0= +github.com/sagernet/cronet-go/lib/linux_arm_musl v0.0.0-20260218134507-0233d9d13e55/go.mod h1:3tXMMFY7AHugOVBZ5Al7cL7JKsnFOe5bMVr0hZPk3ow= +github.com/sagernet/cronet-go/lib/tvos_amd64_simulator v0.0.0-20260218134507-0233d9d13e55 h1:hP78IIYoRag8taThZC0GuBIR13MKa+/LI+zf1xt1UUQ= +github.com/sagernet/cronet-go/lib/tvos_amd64_simulator v0.0.0-20260218134507-0233d9d13e55/go.mod h1:aaX0YGl8nhGmfRWI8bc3BtDjY8Vzx6O0cS/e1uqxDq4= +github.com/sagernet/cronet-go/lib/tvos_arm64 v0.0.0-20260218134507-0233d9d13e55 h1:A+NgQiSyPOeTaWU5J3OH1kij7TbMi+jnsIT9ulD0uwA= +github.com/sagernet/cronet-go/lib/tvos_arm64 v0.0.0-20260218134507-0233d9d13e55/go.mod h1:EdzMKA96xITc42QEI+ct4SwqX8Dn3ltKK8wzdkLWpSc= +github.com/sagernet/cronet-go/lib/tvos_arm64_simulator v0.0.0-20260218134507-0233d9d13e55 h1:uVVX7cfmwTIdqX7lePivz0jNhiU1FXp+WTNOXG77US4= +github.com/sagernet/cronet-go/lib/tvos_arm64_simulator v0.0.0-20260218134507-0233d9d13e55/go.mod h1:qix4kv1TTAJ5tY4lJ9vjhe9EY4mM+B7H5giOhbxDVcc= +github.com/sagernet/cronet-go/lib/windows_amd64 v0.0.0-20260218134507-0233d9d13e55 h1:snnlt/MQ0lCurzVyU7Dkk9wggYXfKX5r+L4tdZl6F2M= +github.com/sagernet/cronet-go/lib/windows_amd64 v0.0.0-20260218134507-0233d9d13e55/go.mod h1:lm9w/oCCRyBiUa3G8lDQTT8x/ONUvgVR2iV9fVzUZB8= +github.com/sagernet/cronet-go/lib/windows_arm64 v0.0.0-20260218134507-0233d9d13e55 h1:cXGxX2EbTB9Ovfl5cr/0ZBhaXnLNkKdWAhkfACbrxnU= +github.com/sagernet/cronet-go/lib/windows_arm64 v0.0.0-20260218134507-0233d9d13e55/go.mod h1:n34YyLgapgjWdKa0IoeczjAFCwD3/dxbsH5sucKw0bw= github.com/sagernet/fswatch v0.1.1 h1:YqID+93B7VRfqIH3PArW/XpJv5H4OLEVWDfProGoRQs= github.com/sagernet/fswatch v0.1.1/go.mod h1:nz85laH0mkQqJfaOrqPpkwtU1znMFNVTpT/5oRsVz/o= github.com/sagernet/gomobile v0.1.11 h1:niMQAspvuThup5eRZQpsGcbM76zAvnsGr7RUIpnQMDQ= diff --git a/small/v2ray-geodata/Makefile b/small/v2ray-geodata/Makefile index c4d2e92b21..7a9665c614 100644 --- a/small/v2ray-geodata/Makefile +++ b/small/v2ray-geodata/Makefile @@ -21,13 +21,13 @@ define Download/geoip HASH:=838ab094bc01b9bafc849ce70c6f439dcb158d0c0dd41441ddb3c38d4d9ef563 endef -GEOSITE_VER:=20260217131649 +GEOSITE_VER:=20260219092429 GEOSITE_FILE:=dlc.dat.$(GEOSITE_VER) define Download/geosite URL:=https://github.com/v2fly/domain-list-community/releases/download/$(GEOSITE_VER)/ URL_FILE:=dlc.dat FILE:=$(GEOSITE_FILE) - HASH:=0ad1ae4f118efdcabf2d8127014914f02562408f74c6bb3b035e8c2fc21c8542 + HASH:=46dd30312e887a81c2da258cd027664e1bc447612aeaf5f8f62f737cd37f74fd endef GEOSITE_IRAN_VER:=202602160057 diff --git a/small/v2ray-plugin/Makefile b/small/v2ray-plugin/Makefile index fc9d406c22..4a27dc6170 100644 --- a/small/v2ray-plugin/Makefile +++ b/small/v2ray-plugin/Makefile @@ -6,12 +6,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=v2ray-plugin -PKG_VERSION:=5.44.1 +PKG_VERSION:=5.45.1 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/teddysun/v2ray-plugin/tar.gz/v$(PKG_VERSION)? -PKG_HASH:=b8b00f576744716b1ab0c461a45b2b5d4195b763a49d296fd2ddfcf23db87fe5 +PKG_HASH:=d1ae7cb412b4b58ea74c2e0126df068cc9281e46248540acc5a7ff42a44eea04 PKG_LICENSE:=MIT PKG_LICENSE_FILES:=LICENSE diff --git a/yt-dlp/README.md b/yt-dlp/README.md index cbb118ee0a..34cb6bb66f 100644 --- a/yt-dlp/README.md +++ b/yt-dlp/README.md @@ -1864,13 +1864,13 @@ The following extractors use this feature: * `player_skip`: Skip some network requests that are generally needed for robust extraction. One or more of `configs` (skip client configs), `webpage` (skip initial webpage), `js` (skip js player), `initial_data` (skip initial data/next ep request). While these options can help reduce the number of requests needed or avoid some rate-limiting, they could cause issues such as missing formats or metadata. See [#860](https://github.com/yt-dlp/yt-dlp/pull/860) and [#12826](https://github.com/yt-dlp/yt-dlp/issues/12826) for more details * `webpage_skip`: Skip extraction of embedded webpage data. One or both of `player_response`, `initial_data`. These options are for testing purposes and don't skip any network requests * `player_params`: YouTube player parameters to use for player requests. Will overwrite any default ones set by yt-dlp. -* `player_js_variant`: The player javascript variant to use for n/sig deciphering. The known variants are: `main`, `tcc`, `tce`, `es5`, `es6`, `tv`, `tv_es6`, `phone`. The default is `tv`, and the others are for debugging purposes. You can use `actual` to go with what is prescribed by the site +* `player_js_variant`: The player javascript variant to use for n/sig deciphering. The known variants are: `main`, `tcc`, `tce`, `es5`, `es6`, `es6_tcc`, `es6_tce`, `tv`, `tv_es6`, `phone`, `house`. The default is `tv`, and the others are for debugging purposes. You can use `actual` to go with what is prescribed by the site * `player_js_version`: The player javascript version to use for n/sig deciphering, in the format of `signature_timestamp@hash` (e.g. `20348@0004de42`). The default is to use what is prescribed by the site, and can be selected with `actual` * `comment_sort`: `top` or `new` (default) - choose comment sorting mode (on YouTube's side) * `max_comments`: Limit the amount of comments to gather. Comma-separated list of integers representing `max-comments,max-parents,max-replies,max-replies-per-thread,max-depth`. Default is `all,all,all,all,all` * A `max-depth` value of `1` will discard all replies, regardless of the `max-replies` or `max-replies-per-thread` values given * E.g. `all,all,1000,10,2` will get a maximum of 1000 replies total, with up to 10 replies per thread, and only 2 levels of depth (i.e. top-level comments plus their immediate replies). `1000,all,100` will get a maximum of 1000 comments, with a maximum of 100 replies total -* `formats`: Change the types of formats to return. `dashy` (convert HTTP to DASH), `duplicate` (identical content but different URLs or protocol; includes `dashy`), `incomplete` (cannot be downloaded completely - live dash and post-live m3u8), `missing_pot` (include formats that require a PO Token but are missing one) +* `formats`: Change the types of formats to return. `dashy` (convert HTTP to DASH), `duplicate` (identical content but different URLs or protocol; includes `dashy`), `incomplete` (cannot be downloaded completely - live dash, live adaptive https, and post-live m3u8), `missing_pot` (include formats that require a PO Token but are missing one) * `innertube_host`: Innertube API host to use for all API requests; e.g. `studio.youtube.com`, `youtubei.googleapis.com`. Note that cookies exported from one subdomain will not work on others * `innertube_key`: Innertube API key to use for all API requests. By default, no API key is used * `raise_incomplete_data`: `Incomplete Data Received` raises an error instead of reporting a warning diff --git a/yt-dlp/test/test_jsc/test_ejs_integration.py b/yt-dlp/test/test_jsc/test_ejs_integration.py index 665763ae9f..07c1a9b242 100644 --- a/yt-dlp/test/test_jsc/test_ejs_integration.py +++ b/yt-dlp/test/test_jsc/test_ejs_integration.py @@ -33,9 +33,12 @@ class Variant(enum.Enum): tce = 'player_ias_tce.vflset/en_US/base.js' es5 = 'player_es5.vflset/en_US/base.js' es6 = 'player_es6.vflset/en_US/base.js' + es6_tcc = 'player_es6_tcc.vflset/en_US/base.js' + es6_tce = 'player_es6_tce.vflset/en_US/base.js' tv = 'tv-player-ias.vflset/tv-player-ias.js' tv_es6 = 'tv-player-es6.vflset/tv-player-es6.js' phone = 'player-plasma-ias-phone-en_US.vflset/base.js' + house = 'house_brand_player.vflset/en_US/base.js' @dataclasses.dataclass diff --git a/yt-dlp/yt_dlp/extractor/dailymotion.py b/yt-dlp/yt_dlp/extractor/dailymotion.py index 8bc4b8cb98..e8c8ab8b28 100644 --- a/yt-dlp/yt_dlp/extractor/dailymotion.py +++ b/yt-dlp/yt_dlp/extractor/dailymotion.py @@ -384,8 +384,7 @@ class DailymotionIE(DailymotionBaseInfoExtractor): last_error = None for note, kwargs in ( - ('Downloading m3u8 information', {}), - ('Retrying m3u8 download with randomized headers', { + ('Downloading m3u8 information with randomized headers', { 'headers': self._generate_blockbuster_headers(), }), ('Retrying m3u8 download with Chrome impersonation', { diff --git a/yt-dlp/yt_dlp/extractor/odnoklassniki.py b/yt-dlp/yt_dlp/extractor/odnoklassniki.py index c9bee9060e..8d3700faa3 100644 --- a/yt-dlp/yt_dlp/extractor/odnoklassniki.py +++ b/yt-dlp/yt_dlp/extractor/odnoklassniki.py @@ -9,13 +9,13 @@ from ..utils import ( int_or_none, qualities, smuggle_url, - traverse_obj, unescapeHTML, unified_strdate, unsmuggle_url, url_or_none, urlencode_postdata, ) +from ..utils.traversal import find_element, traverse_obj class OdnoklassnikiIE(InfoExtractor): @@ -264,9 +264,7 @@ class OdnoklassnikiIE(InfoExtractor): note='Downloading desktop webpage', headers={'Referer': smuggled['referrer']} if smuggled.get('referrer') else {}) - error = self._search_regex( - r'[^>]+class="vp_video_stub_txt"[^>]*>([^<]+)<', - webpage, 'error', default=None) + error = traverse_obj(webpage, {find_element(cls='vp_video_stub_txt')}) # Direct link from boosty if (error == 'The author of this video has not been found or is blocked' and not smuggled.get('referrer') and mode == 'videoembed'): diff --git a/yt-dlp/yt_dlp/extractor/twitter.py b/yt-dlp/yt_dlp/extractor/twitter.py index 063b8371db..c75c5f1012 100644 --- a/yt-dlp/yt_dlp/extractor/twitter.py +++ b/yt-dlp/yt_dlp/extractor/twitter.py @@ -131,11 +131,15 @@ class TwitterBaseIE(InfoExtractor): video_id, headers=headers, query=query, expected_status=allowed_status, note=f'Downloading {"GraphQL" if graphql else "legacy API"} JSON') - if result.get('errors'): - errors = ', '.join(set(traverse_obj(result, ('errors', ..., 'message', {str})))) - if errors and 'not authorized' in errors: - self.raise_login_required(remove_end(errors, '.')) - raise ExtractorError(f'Error(s) while querying API: {errors or "Unknown error"}') + if error_msg := ', '.join(set(traverse_obj(result, ('errors', ..., 'message', {str})))): + # Errors with the message 'Dependency: Unspecified' are a false positive + # See https://github.com/yt-dlp/yt-dlp/issues/15963 + if error_msg.lower() == 'dependency: unspecified': + self.write_debug(f'Ignoring Twitter API error: "{error_msg}"') + elif 'not authorized' in error_msg.lower(): + self.raise_login_required(remove_end(error_msg, '.')) + else: + raise ExtractorError(f'Error(s) while querying API: {error_msg or "Unknown error"}') return result @@ -1078,7 +1082,7 @@ class TwitterIE(TwitterBaseIE): raise ExtractorError(f'Twitter API says: {cause or "Unknown error"}', expected=True) elif typename == 'TweetUnavailable': reason = result.get('reason') - if reason == 'NsfwLoggedOut': + if reason in ('NsfwLoggedOut', 'NsfwViewerHasNoStatedAge'): self.raise_login_required('NSFW tweet requires authentication') elif reason == 'Protected': self.raise_login_required('You are not authorized to view this protected tweet') diff --git a/yt-dlp/yt_dlp/extractor/vk.py b/yt-dlp/yt_dlp/extractor/vk.py index 52749f66e2..5d4f480a5a 100644 --- a/yt-dlp/yt_dlp/extractor/vk.py +++ b/yt-dlp/yt_dlp/extractor/vk.py @@ -1,6 +1,7 @@ import collections import hashlib import re +import urllib.parse from .common import InfoExtractor from .dailymotion import DailymotionIE @@ -8,6 +9,7 @@ from .odnoklassniki import OdnoklassnikiIE from .sibnet import SibnetEmbedIE from .vimeo import VimeoIE from .youtube import YoutubeIE +from ..jsinterp import JSInterpreter from ..utils import ( ExtractorError, UserNotLive, @@ -36,16 +38,38 @@ class VKBaseIE(InfoExtractor): def _download_webpage_handle(self, url_or_request, video_id, *args, fatal=True, **kwargs): response = super()._download_webpage_handle(url_or_request, video_id, *args, fatal=fatal, **kwargs) - challenge_url, cookie = response[1].url if response else '', None - if challenge_url.startswith('https://vk.com/429.html?'): - cookie = self._get_cookies(challenge_url).get('hash429') - if not cookie: + if response is False: return response - hash429 = hashlib.md5(cookie.value.encode('ascii')).hexdigest() + webpage, urlh = response + challenge_url = urlh.url + if urllib.parse.urlparse(challenge_url).path != '/challenge.html': + return response + + self.to_screen(join_nonempty( + video_id and f'[{video_id}]', + 'Received a JS challenge response', + delim=' ')) + + challenge_hash = traverse_obj(challenge_url, ( + {parse_qs}, 'hash429', -1, {require('challenge hash')})) + + func_code = self._search_regex( + r'(?s)var\s+salt\s*=\s*\(\s*function\s*\(\)\s*(\{.+?\})\s*\)\(\);\s*var\s+hash', + webpage, 'JS challenge salt function') + + jsi = JSInterpreter(f'function salt() {func_code}') + salt = jsi.extract_function('salt')([]) + self.write_debug(f'Generated salt with native JS interpreter: {salt}') + + key_hash = hashlib.md5(f'{challenge_hash}:{salt}'.encode()).hexdigest() + self.write_debug(f'JS challenge key hash: {key_hash}') + + # Request with the challenge key and the response should set a 'solution429' cookie self._request_webpage( - update_url_query(challenge_url, {'key': hash429}), video_id, fatal=fatal, - note='Resolving WAF challenge', errnote='Failed to bypass WAF challenge') + update_url_query(challenge_url, {'key': key_hash}), video_id, + 'Submitting JS challenge solution', 'Unable to solve JS challenge', fatal=True) + return super()._download_webpage_handle(url_or_request, video_id, *args, fatal=True, **kwargs) def _perform_login(self, username, password): diff --git a/yt-dlp/yt_dlp/extractor/youtube/_video.py b/yt-dlp/yt_dlp/extractor/youtube/_video.py index e69e8bc4bf..bc9b762709 100644 --- a/yt-dlp/yt_dlp/extractor/youtube/_video.py +++ b/yt-dlp/yt_dlp/extractor/youtube/_video.py @@ -139,11 +139,6 @@ class YoutubeIE(YoutubeBaseInfoExtractor): ] _RETURN_TYPE = 'video' # XXX: How to handle multifeed? - _PLAYER_INFO_RE = ( - r'/s/player/(?P[a-zA-Z0-9_-]{8,})/(?:tv-)?player', - r'/(?P[a-zA-Z0-9_-]{8,})/player(?:_ias\.vflset(?:/[a-zA-Z]{2,3}_[a-zA-Z]{2,3})?|-plasma-ias-(?:phone|tablet)-[a-z]{2}_[A-Z]{2}\.vflset)/base\.js$', - r'\b(?Pvfl[a-zA-Z0-9_-]+)\b.*?\.js$', - ) _SUBTITLE_FORMATS = ('json3', 'srv1', 'srv2', 'srv3', 'ttml', 'srt', 'vtt') _DEFAULT_CLIENTS = ('android_vr', 'web', 'web_safari') _DEFAULT_JSLESS_CLIENTS = ('android_vr',) @@ -1886,10 +1881,12 @@ class YoutubeIE(YoutubeBaseInfoExtractor): 'tce': 'player_ias_tce.vflset/en_US/base.js', 'es5': 'player_es5.vflset/en_US/base.js', 'es6': 'player_es6.vflset/en_US/base.js', + 'es6_tcc': 'player_es6_tcc.vflset/en_US/base.js', + 'es6_tce': 'player_es6_tce.vflset/en_US/base.js', 'tv': 'tv-player-ias.vflset/tv-player-ias.js', 'tv_es6': 'tv-player-es6.vflset/tv-player-es6.js', 'phone': 'player-plasma-ias-phone-en_US.vflset/base.js', - 'tablet': 'player-plasma-ias-tablet-en_US.vflset/base.js', # Dead since 19712d96 (2025.11.06) + 'house': 'house_brand_player.vflset/en_US/base.js', # Used by Google Drive } _INVERSE_PLAYER_JS_VARIANT_MAP = {v: k for k, v in _PLAYER_JS_VARIANT_MAP.items()} @@ -2179,13 +2176,9 @@ class YoutubeIE(YoutubeBaseInfoExtractor): @classmethod def _extract_player_info(cls, player_url): - for player_re in cls._PLAYER_INFO_RE: - id_m = re.search(player_re, player_url) - if id_m: - break - else: - raise ExtractorError(f'Cannot identify player {player_url!r}') - return id_m.group('id') + if m := re.search(r'/s/player/(?P[a-fA-F0-9]{8,})/', player_url): + return m.group('id') + raise ExtractorError(f'Cannot identify player {player_url!r}') def _load_player(self, video_id, player_url, fatal=True): player_js_key = self._player_js_cache_key(player_url) @@ -3219,6 +3212,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor): ]) skip_player_js = 'js' in self._configuration_arg('player_skip') format_types = self._configuration_arg('formats') + skip_bad_formats = 'incomplete' not in format_types all_formats = 'duplicate' in format_types if self._configuration_arg('include_duplicate_formats'): all_formats = True @@ -3464,7 +3458,8 @@ class YoutubeIE(YoutubeBaseInfoExtractor): https_fmts = [] for fmt_stream in streaming_formats: - if fmt_stream.get('targetDurationSec'): + # Live adaptive https formats are not supported: skip unless extractor-arg given + if fmt_stream.get('targetDurationSec') and skip_bad_formats: continue # FORMAT_STREAM_TYPE_OTF(otf=1) requires downloading the init fragment @@ -3576,7 +3571,6 @@ class YoutubeIE(YoutubeBaseInfoExtractor): yield from process_https_formats() needs_live_processing = self._needs_live_processing(live_status, duration) - skip_bad_formats = 'incomplete' not in format_types skip_manifests = set(self._configuration_arg('skip')) if (needs_live_processing == 'is_live' # These will be filtered out by YoutubeDL anyway @@ -4086,16 +4080,33 @@ class YoutubeIE(YoutubeBaseInfoExtractor): needs_live_processing = self._needs_live_processing(live_status, duration) - def is_bad_format(fmt): - if needs_live_processing and not fmt.get('is_from_start'): - return True - elif (live_status == 'is_live' and needs_live_processing != 'is_live' - and fmt.get('protocol') == 'http_dash_segments'): - return True + def adjust_incomplete_format(fmt, note_suffix='(Last 2 hours)', pref_adjustment=-10): + fmt['preference'] = (fmt.get('preference') or -1) + pref_adjustment + fmt['format_note'] = join_nonempty(fmt.get('format_note'), note_suffix, delim=' ') - for fmt in filter(is_bad_format, formats): - fmt['preference'] = (fmt.get('preference') or -1) - 10 - fmt['format_note'] = join_nonempty(fmt.get('format_note'), '(Last 2 hours)', delim=' ') + # Adjust preference and format note for incomplete live/post-live formats + if live_status in ('is_live', 'post_live'): + for fmt in formats: + protocol = fmt.get('protocol') + # Currently, protocol isn't set for adaptive https formats, but this could change + is_adaptive = protocol in (None, 'http', 'https') + if live_status == 'post_live' and is_adaptive: + # Post-live adaptive formats cause HttpFD to raise "Did not get any data blocks" + # These formats are *only* useful to external applications, so we can hide them + # Set their preference <= -1000 so that FormatSorter flags them as 'hidden' + adjust_incomplete_format(fmt, note_suffix='(ended)', pref_adjustment=-5000) + # Is it live with --live-from-start? Or is it post-live and its duration is >2hrs? + elif needs_live_processing: + if not fmt.get('is_from_start'): + # Post-live m3u8 formats for >2hr streams + adjust_incomplete_format(fmt) + elif live_status == 'is_live': + if protocol == 'http_dash_segments': + # Live DASH formats without --live-from-start + adjust_incomplete_format(fmt) + elif is_adaptive: + # Incomplete live adaptive https formats + adjust_incomplete_format(fmt, note_suffix='(incomplete)', pref_adjustment=-20) if needs_live_processing: self._prepare_live_from_start_formats(