Update On Wed Dec 4 19:40:20 CET 2024

This commit is contained in:
github-action[bot]
2024-12-04 19:40:20 +01:00
parent c705e7d276
commit 5ae3de73b0
59 changed files with 852 additions and 539 deletions

1
.github/update.log vendored
View File

@@ -844,3 +844,4 @@ Update On Sat Nov 30 19:35:41 CET 2024
Update On Sun Dec 1 19:36:04 CET 2024
Update On Mon Dec 2 19:39:13 CET 2024
Update On Tue Dec 3 19:35:29 CET 2024
Update On Wed Dec 4 19:40:09 CET 2024

View File

@@ -127,10 +127,10 @@ func router(isDebug bool, secret string, dohServer string, cors Cors) *chi.Mux {
r.Mount("/providers/rules", ruleProviderRouter())
r.Mount("/cache", cacheRouter())
r.Mount("/dns", dnsRouter())
if !embedMode { // disallow restart and upgrade in embed mode
if !embedMode { // disallow restart in embed mode
r.Mount("/restart", restartRouter())
r.Mount("/upgrade", upgradeRouter())
}
r.Mount("/upgrade", upgradeRouter())
addExternalRouters(r)
})

View File

@@ -14,9 +14,11 @@ import (
func upgradeRouter() http.Handler {
r := chi.NewRouter()
r.Post("/", upgradeCore)
r.Post("/ui", updateUI)
if !embedMode { // disallow upgrade core/geo in embed mode
r.Post("/", upgradeCore)
r.Post("/geo", updateGeoDatabases)
}
return r
}

View File

@@ -313,9 +313,9 @@ dependencies = [
[[package]]
name = "anyhow"
version = "1.0.93"
version = "1.0.94"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775"
checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7"
[[package]]
name = "arbitrary"
@@ -683,7 +683,7 @@ version = "0.5.0"
source = "git+https://github.com/libnyanpasu/auto-launch.git#729d5429dd689067047489af4a0a32f7013854c8"
dependencies = [
"dirs 5.0.1",
"thiserror 2.0.3",
"thiserror 2.0.4",
"windows-registry 0.3.0",
"windows-result 0.2.0",
]
@@ -1433,9 +1433,9 @@ dependencies = [
[[package]]
name = "clap"
version = "4.5.21"
version = "4.5.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f"
checksum = "69371e34337c4c984bbe322360c2547210bf632eb2814bbe78a6e87a2935bd2b"
dependencies = [
"clap_builder",
"clap_derive",
@@ -1443,9 +1443,9 @@ dependencies = [
[[package]]
name = "clap_builder"
version = "4.5.21"
version = "4.5.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec"
checksum = "6e24c1b4099818523236a8ca881d2b45db98dadfb4625cf6608c12069fcbbde1"
dependencies = [
"anstream",
"anstyle",
@@ -1573,7 +1573,7 @@ dependencies = [
"tauri-plugin-updater",
"tempfile",
"test-log",
"thiserror 2.0.3",
"thiserror 2.0.4",
"timeago",
"tokio",
"tracing",
@@ -4707,7 +4707,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4"
dependencies = [
"cfg-if",
"windows-targets 0.52.6",
"windows-targets 0.48.5",
]
[[package]]
@@ -6694,7 +6694,7 @@ dependencies = [
"rustc-hash 2.1.0",
"rustls",
"socket2",
"thiserror 2.0.3",
"thiserror 2.0.4",
"tokio",
"tracing",
]
@@ -6713,7 +6713,7 @@ dependencies = [
"rustls",
"rustls-pki-types",
"slab",
"thiserror 2.0.3",
"thiserror 2.0.4",
"tinyvec",
"tracing",
"web-time",
@@ -6730,7 +6730,7 @@ dependencies = [
"once_cell",
"socket2",
"tracing",
"windows-sys 0.59.0",
"windows-sys 0.52.0",
]
[[package]]
@@ -8411,7 +8411,7 @@ dependencies = [
"tauri-runtime",
"tauri-runtime-wry",
"tauri-utils",
"thiserror 2.0.3",
"thiserror 2.0.4",
"tokio",
"tray-icon",
"url",
@@ -8464,7 +8464,7 @@ dependencies = [
"sha2 0.10.8",
"syn 2.0.90",
"tauri-utils",
"thiserror 2.0.3",
"thiserror 2.0.4",
"time",
"url",
"uuid",
@@ -8546,7 +8546,7 @@ dependencies = [
"tauri",
"tauri-plugin",
"tauri-plugin-fs",
"thiserror 2.0.3",
"thiserror 2.0.4",
"url",
]
@@ -8567,7 +8567,7 @@ dependencies = [
"tauri",
"tauri-plugin",
"tauri-utils",
"thiserror 2.0.3",
"thiserror 2.0.4",
"toml 0.8.19",
"url",
"uuid",
@@ -8700,7 +8700,7 @@ dependencies = [
"serde",
"serde_json",
"tauri-utils",
"thiserror 2.0.3",
"thiserror 2.0.4",
"url",
"windows 0.58.0",
]
@@ -8760,7 +8760,7 @@ dependencies = [
"serde_json",
"serde_with",
"swift-rs",
"thiserror 2.0.3",
"thiserror 2.0.4",
"toml 0.8.19",
"url",
"urlpattern",
@@ -8799,7 +8799,7 @@ dependencies = [
"fastrand 2.2.0",
"once_cell",
"rustix",
"windows-sys 0.59.0",
"windows-sys 0.52.0",
]
[[package]]
@@ -8932,11 +8932,11 @@ dependencies = [
[[package]]
name = "thiserror"
version = "2.0.3"
version = "2.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa"
checksum = "2f49a1853cf82743e3b7950f77e0f4d622ca36cf4317cba00c767838bac8d490"
dependencies = [
"thiserror-impl 2.0.3",
"thiserror-impl 2.0.4",
]
[[package]]
@@ -8952,9 +8952,9 @@ dependencies = [
[[package]]
name = "thiserror-impl"
version = "2.0.3"
version = "2.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568"
checksum = "8381894bb3efe0c4acac3ded651301ceee58a15d47c2e34885ed1908ad667061"
dependencies = [
"proc-macro2",
"quote",
@@ -10430,7 +10430,7 @@ version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
dependencies = [
"windows-sys 0.59.0",
"windows-sys 0.48.0",
]
[[package]]
@@ -11393,7 +11393,7 @@ dependencies = [
"pbkdf2",
"rand 0.8.5",
"sha1",
"thiserror 2.0.3",
"thiserror 2.0.4",
"time",
"zeroize",
"zopfli",

View File

@@ -16,9 +16,9 @@
"@emotion/styled": "11.13.5",
"@juggle/resize-observer": "3.4.0",
"@material/material-color-utilities": "0.3.0",
"@mui/icons-material": "6.1.9",
"@mui/lab": "6.0.0-beta.17",
"@mui/material": "6.1.9",
"@mui/icons-material": "6.1.10",
"@mui/lab": "6.0.0-beta.18",
"@mui/material": "6.1.10",
"@nyanpasu/interface": "workspace:^",
"@nyanpasu/ui": "workspace:^",
"@tanstack/router-zod-adapter": "1.81.5",
@@ -29,7 +29,7 @@
"country-code-emoji": "2.3.0",
"dayjs": "1.11.13",
"framer-motion": "12.0.0-alpha.2",
"i18next": "24.0.2",
"i18next": "24.0.5",
"jotai": "2.10.3",
"json-schema": "0.4.0",
"material-react-table": "3.0.1",
@@ -54,8 +54,8 @@
"@emotion/react": "11.13.5",
"@iconify/json": "2.2.279",
"@monaco-editor/react": "4.6.0",
"@tanstack/react-router": "1.85.4",
"@tanstack/router-devtools": "1.85.4",
"@tanstack/react-router": "1.85.5",
"@tanstack/router-devtools": "1.85.5",
"@tanstack/router-plugin": "1.85.3",
"@tauri-apps/plugin-clipboard-manager": "2.0.1",
"@tauri-apps/plugin-dialog": "2.0.1",

View File

@@ -17,9 +17,9 @@
},
"dependencies": {
"@material/material-color-utilities": "0.3.0",
"@mui/icons-material": "6.1.9",
"@mui/lab": "6.0.0-beta.17",
"@mui/material": "6.1.9",
"@mui/icons-material": "6.1.10",
"@mui/lab": "6.0.0-beta.18",
"@mui/material": "6.1.10",
"@radix-ui/react-portal": "1.1.2",
"@radix-ui/react-scroll-area": "1.2.1",
"@tauri-apps/api": "2.1.1",

View File

@@ -3,9 +3,9 @@
"latest": {
"mihomo": "v1.18.10",
"mihomo_alpha": "alpha-5a24efd",
"clash_rs": "v0.7.2",
"clash_rs": "v0.7.3",
"clash_premium": "2023-09-05-gdcc8d87",
"clash_rs_alpha": "0.7.2-alpha+sha.866f844"
"clash_rs_alpha": "0.7.3-alpha+sha.e711fd9"
},
"arch_template": {
"mihomo": {
@@ -69,5 +69,5 @@
"linux-armv7hf": "clash-armv7-unknown-linux-gnueabihf"
}
},
"updated_at": "2024-12-02T22:21:14.102Z"
"updated_at": "2024-12-03T22:20:58.004Z"
}

View File

@@ -100,7 +100,7 @@
"stylelint-declaration-block-no-ignored-properties": "2.8.0",
"stylelint-order": "6.0.4",
"stylelint-scss": "6.10.0",
"tailwindcss": "3.4.15",
"tailwindcss": "3.4.16",
"tsx": "4.19.2",
"typescript": "5.7.2"
},

View File

@@ -150,8 +150,8 @@ importers:
specifier: 6.10.0
version: 6.10.0(stylelint@16.11.0(typescript@5.7.2))
tailwindcss:
specifier: 3.4.15
version: 3.4.15
specifier: 3.4.16
version: 3.4.16
tsx:
specifier: 4.19.2
version: 4.19.2
@@ -202,14 +202,14 @@ importers:
specifier: 0.3.0
version: 0.3.0
'@mui/icons-material':
specifier: 6.1.9
version: 6.1.9(@mui/material@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
specifier: 6.1.10
version: 6.1.10(@mui/material@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/lab':
specifier: 6.0.0-beta.17
version: 6.0.0-beta.17(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
specifier: 6.0.0-beta.18
version: 6.0.0-beta.18(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/material':
specifier: 6.1.9
version: 6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
specifier: 6.1.10
version: 6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@nyanpasu/interface':
specifier: workspace:^
version: link:../interface
@@ -218,7 +218,7 @@ importers:
version: link:../ui
'@tanstack/router-zod-adapter':
specifier: 1.81.5
version: 1.81.5(@tanstack/react-router@1.85.4(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))(zod@3.23.8)
version: 1.81.5(@tanstack/react-router@1.85.5(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))(zod@3.23.8)
'@tauri-apps/api':
specifier: 2.1.1
version: 2.1.1
@@ -241,8 +241,8 @@ importers:
specifier: 12.0.0-alpha.2
version: 12.0.0-alpha.2(@emotion/is-prop-valid@1.3.0)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
i18next:
specifier: 24.0.2
version: 24.0.2(typescript@5.7.2)
specifier: 24.0.5
version: 24.0.5(typescript@5.7.2)
jotai:
specifier: 2.10.3
version: 2.10.3(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
@@ -251,13 +251,13 @@ importers:
version: 0.4.0
material-react-table:
specifier: 3.0.1
version: 3.0.1(6jmykk7zxkzevdzoaapf5k5sq4)
version: 3.0.1(deedw3wfuk6nv6e6dqhqulobfi)
monaco-editor:
specifier: 0.52.0
version: 0.52.0
mui-color-input:
specifier: 5.0.1
version: 5.0.1(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
version: 5.0.1(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
react:
specifier: rc
version: 19.0.0-rc.1
@@ -272,10 +272,10 @@ importers:
version: 1.6.5(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
react-hook-form-mui:
specifier: 7.4.0
version: 7.4.0(l2o4yer4mnv5n4s7ohpbf3i6j4)
version: 7.4.0(sivtflucb74mxg45qzhfuk7yha)
react-i18next:
specifier: 15.1.3
version: 15.1.3(i18next@24.0.2(typescript@5.7.2))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
version: 15.1.3(i18next@24.0.5(typescript@5.7.2))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
react-markdown:
specifier: 9.0.1
version: 9.0.1(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
@@ -311,11 +311,11 @@ importers:
specifier: 4.6.0
version: 4.6.0(monaco-editor@0.52.0)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
'@tanstack/react-router':
specifier: 1.85.4
version: 1.85.4(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
specifier: 1.85.5
version: 1.85.5(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
'@tanstack/router-devtools':
specifier: 1.85.4
version: 1.85.4(@tanstack/react-router@1.85.4(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))(csstype@3.1.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
specifier: 1.85.5
version: 1.85.5(@tanstack/react-router@1.85.5(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))(csstype@3.1.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
'@tanstack/router-plugin':
specifier: 1.85.3
version: 1.85.3(vite@6.0.2(@types/node@22.10.1)(jiti@2.4.0)(less@4.2.0)(sass-embedded@1.78.0)(sass@1.81.1)(stylus@0.62.0)(terser@5.36.0)(tsx@4.19.2)(yaml@2.5.1))
@@ -422,14 +422,14 @@ importers:
specifier: 0.3.0
version: 0.3.0
'@mui/icons-material':
specifier: 6.1.9
version: 6.1.9(@mui/material@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
specifier: 6.1.10
version: 6.1.10(@mui/material@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/lab':
specifier: 6.0.0-beta.17
version: 6.0.0-beta.17(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
specifier: 6.0.0-beta.18
version: 6.0.0-beta.18(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/material':
specifier: 6.1.9
version: 6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
specifier: 6.1.10
version: 6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@radix-ui/react-portal':
specifier: 1.1.2
version: 1.1.2(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
@@ -468,7 +468,7 @@ importers:
version: 4.1.2(react@19.0.0-rc.1)
react-i18next:
specifier: 15.1.3
version: 15.1.3(i18next@24.0.2(typescript@5.7.2))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
version: 15.1.3(i18next@24.0.5(typescript@5.7.2))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
react-use:
specifier: 17.5.1
version: 17.5.1(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
@@ -1779,28 +1779,39 @@ packages:
'@types/react':
optional: true
'@mui/core-downloads-tracker@6.1.9':
resolution: {integrity: sha512-TWqj7b1w5cmSz4H/uf+y2AHxAH4ldPR7D2bz0XVyn60GCAo/zRbRPx7cF8gTs/i7CiYeHzV6dtat0VpMwOtolw==}
'@mui/icons-material@6.1.9':
resolution: {integrity: sha512-AzlhIT51rdjkZ/EcUV2dbhNkNSUHIqCnNoUxodpiTw8buyAUBd+qnxg5OBSuPpun/ZEdSSB8Q7Uyh6zqjiMsEQ==}
'@mui/base@5.0.0-beta.64':
resolution: {integrity: sha512-nu663PoZs/Pee0fkPYkjUADfT+AAi2QWvvHghDhLeSx8sa3i+GGaOoUsFmB4CPlyYqWfq9hRGA7H1T3d6VrGgw==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@mui/material': ^6.1.9
'@types/react': npm:types-react@rc
react: ^17.0.0 || ^18.0.0
react-dom: ^17.0.0 || ^18.0.0
peerDependenciesMeta:
'@types/react':
optional: true
'@mui/core-downloads-tracker@6.1.10':
resolution: {integrity: sha512-LY5wdiLCBDY7u+Od8UmFINZFGN/5ZU90fhAslf/ZtfP+5RhuY45f679pqYIxe0y54l6Gkv9PFOc8Cs10LDTBYg==}
'@mui/icons-material@6.1.10':
resolution: {integrity: sha512-G6P1BCSt6EQDcKca47KwvKjlqgOXFbp2I3oWiOlFgKYTANBH89yk7ttMQ5ysqNxSYAB+4TdM37MlPYp4+FkVrQ==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@mui/material': ^6.1.10
'@types/react': npm:types-react@rc
react: ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
'@types/react':
optional: true
'@mui/lab@6.0.0-beta.17':
resolution: {integrity: sha512-Ls1pIuYi5D9wq9mUwncky6CWokd6CCqQDCxXbm0TP0e7ksU5DcCPUZXBmTWQgbkldLu14aUXbJHyts63L0rycQ==}
'@mui/lab@6.0.0-beta.18':
resolution: {integrity: sha512-O7jNn36Jb0530NOZeFLj33RGB57x3kfyiYOaj5sL/j/Pmq9T0tonKMkoW/AUCucmBa7RuEzEYMyqBpfqminebA==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@emotion/react': ^11.5.0
'@emotion/styled': ^11.3.0
'@mui/material': ^6.1.9
'@mui/material-pigment-css': ^6.1.9
'@mui/material': ^6.1.10
'@mui/material-pigment-css': ^6.1.10
'@types/react': npm:types-react@rc
react: ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -1814,13 +1825,13 @@ packages:
'@types/react':
optional: true
'@mui/material@6.1.9':
resolution: {integrity: sha512-NwqIN0bdsgzSbZd5JFcC+2ez0XW/XNs8uiV2PDHrqQ4qf/FEasFJG1z6g8JbCN0YlTrHZekVb17X0Fv0qcYJfQ==}
'@mui/material@6.1.10':
resolution: {integrity: sha512-txnwYObY4N9ugv5T2n5h1KcbISegZ6l65w1/7tpSU5OB6MQCU94YkP8n/3slDw2KcEfRk4+4D8EUGfhSPMODEQ==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@emotion/react': ^11.5.0
'@emotion/styled': ^11.3.0
'@mui/material-pigment-css': ^6.1.9
'@mui/material-pigment-css': ^6.1.10
'@types/react': npm:types-react@rc
react: ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -1844,8 +1855,8 @@ packages:
'@types/react':
optional: true
'@mui/private-theming@6.1.9':
resolution: {integrity: sha512-7aum/O1RquBYhfwL/7egDyl9GqJgPM6hoJDFFBbhF6Sgv9yI9v4w3ArKUkuVvR0CtVj4NXRVMKEioh1bjUzvuA==}
'@mui/private-theming@6.1.10':
resolution: {integrity: sha512-DqgsH0XFEweeG3rQfVkqTkeXcj/E76PGYWag8flbPdV8IYdMo+DfVdFlZK8JEjsaIVD2Eu1kJg972XnH5pfnBQ==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@types/react': npm:types-react@rc
@@ -1867,8 +1878,8 @@ packages:
'@emotion/styled':
optional: true
'@mui/styled-engine@6.1.9':
resolution: {integrity: sha512-xynSLlJRxHLzSfQaiDjkaTx8LiFb9ByVa7aOdwFnTxGWFMY1F+mkXwAUY4jDDE+MAxkWxlzzQE0wOohnsxhdQg==}
'@mui/styled-engine@6.1.10':
resolution: {integrity: sha512-+NV9adKZYhslJ270iPjf2yzdVJwav7CIaXcMlPSi1Xy1S/zRe5xFgZ6BEoMdmGRpr34lIahE8H1acXP2myrvRw==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@emotion/react': ^11.4.1
@@ -1896,8 +1907,8 @@ packages:
'@types/react':
optional: true
'@mui/system@6.1.9':
resolution: {integrity: sha512-8x+RucnNp21gfFYsklCaZf0COXbv3+v0lrVuXONxvPEkESi2rwLlOi8UPJfcz6LxZOAX3v3oQ7qw18vnpgueRg==}
'@mui/system@6.1.10':
resolution: {integrity: sha512-5YNIqxETR23SIkyP7MY2fFnXmplX/M4wNi2R+10AVRd3Ub+NLctWY/Vs5vq1oAMF0eSDLhRTGUjaUe+IGSfWqg==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@emotion/react': ^11.5.0
@@ -1930,6 +1941,16 @@ packages:
'@types/react':
optional: true
'@mui/utils@6.1.10':
resolution: {integrity: sha512-1ETuwswGjUiAf2dP9TkBy8p49qrw2wXa+RuAjNTRE5+91vtXJ1HKrs7H9s8CZd1zDlQVzUcUAPm9lpQwF5ogTw==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@types/react': npm:types-react@rc
react: ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
'@types/react':
optional: true
'@mui/utils@6.1.9':
resolution: {integrity: sha512-N7uzBp7p2or+xanXn3aH2OTINC6F/Ru/U8h6amhRZEev8bJhKN86rIDIoxZZ902tj+09LXtH83iLxFMjMHyqNA==}
engines: {node: '>=14.0.0'}
@@ -2648,8 +2669,8 @@ packages:
resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==}
engines: {node: '>=12'}
'@tanstack/react-router@1.85.4':
resolution: {integrity: sha512-CmrgrMtIIVnXS/og5W3glP1noBlFSD3mRaBgP6nTEbkZZ25nN1s52C35dnsMNuAQayQsVJNlkuSNZv3elfrBmA==}
'@tanstack/react-router@1.85.5':
resolution: {integrity: sha512-OCPka0mj+lPCUPiZmQUavRKu7NB8/HrDZIl8MHpjgzkvSOV0U+mszUl3FJxiMb1vXOJaY0/gny/96YbCzcsgdA==}
engines: {node: '>=12'}
peerDependencies:
'@tanstack/router-generator': 1.85.3
@@ -2678,11 +2699,11 @@ packages:
react: ^16.8.0 || ^17.0.0 || ^18.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
'@tanstack/router-devtools@1.85.4':
resolution: {integrity: sha512-Io8qyv5WMYa+gk83/dQ0OlcOsvCxSY2PTNEYUQ4wHfbEV1RW3IjwOVL6/n7p7TDhjD5ou4eKufF9zDykdyFldQ==}
'@tanstack/router-devtools@1.85.5':
resolution: {integrity: sha512-C5A0TP2dFSu3o4Bc1jHzX6ZRC4FC3BmjPJbUx3wJJduPaW72FwTqbGfeT79oyk8mOC69bvLTLydRGfMHQZbIRQ==}
engines: {node: '>=12'}
peerDependencies:
'@tanstack/react-router': ^1.85.4
'@tanstack/react-router': ^1.85.5
react: '>=18'
react-dom: '>=18'
@@ -4824,8 +4845,8 @@ packages:
hyphenate-style-name@1.1.0:
resolution: {integrity: sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==}
i18next@24.0.2:
resolution: {integrity: sha512-D88xyIGcWAKwBTAs4RSqASi8NXR/NhCVSTM4LDbdoU8qb/5dcEZjNCLDhtQBB7Epw/Cp1w2vH/3ujoTbqLSs5g==}
i18next@24.0.5:
resolution: {integrity: sha512-1jSdEzgFPGLZRsQwydoMFCBBaV+PmrVEO5WhANllZPX4y2JSGTxUjJ+xVklHIsiS95uR8gYc/y0hYZWevucNjg==}
peerDependencies:
typescript: ^5
peerDependenciesMeta:
@@ -5329,6 +5350,10 @@ packages:
resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==}
engines: {node: '>=14'}
lilconfig@3.1.3:
resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==}
engines: {node: '>=14'}
lines-and-columns@1.2.4:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
@@ -7129,8 +7154,8 @@ packages:
engines: {node: '>=8.9.0'}
hasBin: true
tailwindcss@3.4.15:
resolution: {integrity: sha512-r4MeXnfBmSOuKUWmXe6h2CcyfzJCEk4F0pptO5jlnYSIViUkVmsawj80N5h2lO3gwcmSb4n3PuN+e+GC1Guylw==}
tailwindcss@3.4.16:
resolution: {integrity: sha512-TI4Cyx7gDiZ6r44ewaJmt0o6BrMCT5aK5e0rmJ/G9Xq3w7CX/5VXl/zIPEJZFUK5VEqwByyhqNPycPlvcK4ZNw==}
engines: {node: '>=14.0.0'}
hasBin: true
@@ -9148,24 +9173,38 @@ snapshots:
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
'@mui/core-downloads-tracker@6.1.9': {}
'@mui/icons-material@6.1.9(@mui/material@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
'@mui/base@5.0.0-beta.64(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.26.0
'@mui/material': 6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@floating-ui/react-dom': 2.1.2(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
'@mui/types': 7.2.19(types-react@19.0.0-rc.1)
'@mui/utils': 6.1.10(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@popperjs/core': 2.11.8
clsx: 2.1.1
prop-types: 15.8.1
react: 19.0.0-rc.1
react-dom: 19.0.0-rc.1(react@19.0.0-rc.1)
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
'@mui/core-downloads-tracker@6.1.10': {}
'@mui/icons-material@6.1.10(@mui/material@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.26.0
'@mui/material': 6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
react: 19.0.0-rc.1
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
'@mui/lab@6.0.0-beta.17(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
'@mui/lab@6.0.0-beta.18(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.26.0
'@mui/base': 5.0.0-beta.63(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/material': 6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/system': 6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/base': 5.0.0-beta.64(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/material': 6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/system': 6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/types': 7.2.19(types-react@19.0.0-rc.1)
'@mui/utils': 6.1.9(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/utils': 6.1.10(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
clsx: 2.1.1
prop-types: 15.8.1
react: 19.0.0-rc.1
@@ -9175,13 +9214,13 @@ snapshots:
'@emotion/styled': 11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@types/react': types-react@19.0.0-rc.1
'@mui/material@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
'@mui/material@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.26.0
'@mui/core-downloads-tracker': 6.1.9
'@mui/system': 6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/core-downloads-tracker': 6.1.10
'@mui/system': 6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/types': 7.2.19(types-react@19.0.0-rc.1)
'@mui/utils': 6.1.9(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/utils': 6.1.10(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@popperjs/core': 2.11.8
'@types/react-transition-group': 4.4.11
clsx: 2.1.1
@@ -9205,10 +9244,10 @@ snapshots:
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
'@mui/private-theming@6.1.9(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
'@mui/private-theming@6.1.10(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.26.0
'@mui/utils': 6.1.9(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/utils': 6.1.10(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
prop-types: 15.8.1
react: 19.0.0-rc.1
optionalDependencies:
@@ -9225,7 +9264,7 @@ snapshots:
'@emotion/react': 11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@emotion/styled': 11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/styled-engine@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)':
'@mui/styled-engine@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.26.0
'@emotion/cache': 11.13.5
@@ -9254,13 +9293,13 @@ snapshots:
'@emotion/styled': 11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@types/react': types-react@19.0.0-rc.1
'@mui/system@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
'@mui/system@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.26.0
'@mui/private-theming': 6.1.9(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/styled-engine': 6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)
'@mui/private-theming': 6.1.10(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/styled-engine': 6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)
'@mui/types': 7.2.19(types-react@19.0.0-rc.1)
'@mui/utils': 6.1.9(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/utils': 6.1.10(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
clsx: 2.1.1
csstype: 3.1.3
prop-types: 15.8.1
@@ -9286,6 +9325,18 @@ snapshots:
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
'@mui/utils@6.1.10(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.26.0
'@mui/types': 7.2.19(types-react@19.0.0-rc.1)
'@types/prop-types': 15.7.13
clsx: 2.1.1
prop-types: 15.8.1
react: 19.0.0-rc.1
react-is: 18.3.1
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
'@mui/utils@6.1.9(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.26.0
@@ -9298,11 +9349,11 @@ snapshots:
optionalDependencies:
'@types/react': types-react@19.0.0-rc.1
'@mui/x-date-pickers@7.9.0(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
'@mui/x-date-pickers@7.9.0(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)':
dependencies:
'@babel/runtime': 7.26.0
'@mui/base': 5.0.0-beta.63(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/material': 6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/material': 6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/system': 5.16.7(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/utils': 5.16.6(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@types/react-transition-group': 4.4.11
@@ -9949,7 +10000,7 @@ snapshots:
dependencies:
remove-accents: 0.5.0
'@tanstack/react-router@1.85.4(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)':
'@tanstack/react-router@1.85.5(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)':
dependencies:
'@tanstack/history': 1.85.3
'@tanstack/react-store': 0.6.1(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
@@ -9980,9 +10031,9 @@ snapshots:
react: 19.0.0-rc.1
react-dom: 19.0.0-rc.1(react@19.0.0-rc.1)
'@tanstack/router-devtools@1.85.4(@tanstack/react-router@1.85.4(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))(csstype@3.1.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)':
'@tanstack/router-devtools@1.85.5(@tanstack/react-router@1.85.5(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))(csstype@3.1.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)':
dependencies:
'@tanstack/react-router': 1.85.4(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
'@tanstack/react-router': 1.85.5(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
clsx: 2.1.1
goober: 2.1.16(csstype@3.1.3)
react: 19.0.0-rc.1
@@ -10022,9 +10073,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@tanstack/router-zod-adapter@1.81.5(@tanstack/react-router@1.85.4(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))(zod@3.23.8)':
'@tanstack/router-zod-adapter@1.81.5(@tanstack/react-router@1.85.5(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1))(zod@3.23.8)':
dependencies:
'@tanstack/react-router': 1.85.4(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
'@tanstack/react-router': 1.85.5(@tanstack/router-generator@1.85.3)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
zod: 3.23.8
'@tanstack/store@0.6.0': {}
@@ -12498,7 +12549,7 @@ snapshots:
hyphenate-style-name@1.1.0: {}
i18next@24.0.2(typescript@5.7.2):
i18next@24.0.5(typescript@5.7.2):
dependencies:
'@babel/runtime': 7.26.0
optionalDependencies:
@@ -12923,6 +12974,8 @@ snapshots:
lilconfig@3.1.2: {}
lilconfig@3.1.3: {}
lines-and-columns@1.2.4: {}
lint-staged@15.2.10:
@@ -13059,13 +13112,13 @@ snapshots:
escape-string-regexp: 4.0.0
optional: true
material-react-table@3.0.1(6jmykk7zxkzevdzoaapf5k5sq4):
material-react-table@3.0.1(deedw3wfuk6nv6e6dqhqulobfi):
dependencies:
'@emotion/react': 11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@emotion/styled': 11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/icons-material': 6.1.9(@mui/material@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/material': 6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/x-date-pickers': 7.9.0(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/icons-material': 6.1.10(@mui/material@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/material': 6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/x-date-pickers': 7.9.0(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@tanstack/match-sorter-utils': 8.19.4
'@tanstack/react-table': 8.20.5(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
'@tanstack/react-virtual': 3.10.6(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)
@@ -13406,12 +13459,12 @@ snapshots:
muggle-string@0.4.1: {}
mui-color-input@5.0.1(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1):
mui-color-input@5.0.1(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1):
dependencies:
'@ctrl/tinycolor': 4.1.0
'@emotion/react': 11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@emotion/styled': 11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/material': 6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/material': 6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
react: 19.0.0-rc.1
react-dom: 19.0.0-rc.1(react@19.0.0-rc.1)
optionalDependencies:
@@ -13797,7 +13850,7 @@ snapshots:
postcss-load-config@4.0.2(postcss@8.4.49):
dependencies:
lilconfig: 3.1.2
lilconfig: 3.1.3
yaml: 2.5.1
optionalDependencies:
postcss: 8.4.49
@@ -13999,24 +14052,24 @@ snapshots:
react: 19.0.0-rc.1
react-dom: 19.0.0-rc.1(react@19.0.0-rc.1)
react-hook-form-mui@7.4.0(l2o4yer4mnv5n4s7ohpbf3i6j4):
react-hook-form-mui@7.4.0(sivtflucb74mxg45qzhfuk7yha):
dependencies:
'@mui/material': 6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/material': 6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
react: 19.0.0-rc.1
react-hook-form: 7.52.1(react@19.0.0-rc.1)
optionalDependencies:
'@mui/icons-material': 6.1.9(@mui/material@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/x-date-pickers': 7.9.0(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.9(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/icons-material': 6.1.10(@mui/material@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
'@mui/x-date-pickers': 7.9.0(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@mui/material@6.1.10(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1))(dayjs@1.11.13)(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1)(types-react@19.0.0-rc.1)
react-hook-form@7.52.1(react@19.0.0-rc.1):
dependencies:
react: 19.0.0-rc.1
react-i18next@15.1.3(i18next@24.0.2(typescript@5.7.2))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1):
react-i18next@15.1.3(i18next@24.0.5(typescript@5.7.2))(react-dom@19.0.0-rc.1(react@19.0.0-rc.1))(react@19.0.0-rc.1):
dependencies:
'@babel/runtime': 7.26.0
html-parse-stringify: 3.0.1
i18next: 24.0.2(typescript@5.7.2)
i18next: 24.0.5(typescript@5.7.2)
react: 19.0.0-rc.1
optionalDependencies:
react-dom: 19.0.0-rc.1(react@19.0.0-rc.1)
@@ -14879,7 +14932,7 @@ snapshots:
reduce-css-calc: 2.1.8
resolve: 1.22.8
tailwindcss@3.4.15:
tailwindcss@3.4.16:
dependencies:
'@alloc/quick-lru': 5.2.0
arg: 5.0.2
@@ -14890,7 +14943,7 @@ snapshots:
glob-parent: 6.0.2
is-glob: 4.0.3
jiti: 1.21.6
lilconfig: 2.1.0
lilconfig: 3.1.3
micromatch: 4.0.8
normalize-path: 3.0.0
object-hash: 3.0.0

View File

@@ -0,0 +1,51 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=ksmbd
PKG_VERSION:=2024.10.14
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/namjaejeon/ksmbd.git
PKG_SOURCE_VERSION:=6a0efcd1301d72ccd76b2f457c1d0b56702f4908
PKG_MIRROR_HASH:=02ba5828aae66d4fac202b8c4dcb1f45beb255655927741eb293d4a257822624
PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=COPYING
include $(INCLUDE_DIR)/kernel.mk
include $(INCLUDE_DIR)/package.mk
define KernelPackage/fs-ksmbd
SUBMENU:=Filesystems
TITLE:=SMB kernel server support
URL:=https://github.com/cifsd-team/cifsd
FILES:=$(PKG_BUILD_DIR)/ksmbd.ko
DEPENDS:= \
+kmod-nls-base \
+kmod-nls-utf8 \
+kmod-crypto-md4 \
+kmod-crypto-md5 \
+kmod-crypto-hmac \
+kmod-crypto-ecb \
+kmod-crypto-des \
+kmod-crypto-sha256 \
+kmod-crypto-cmac \
+kmod-crypto-sha512 \
+kmod-crypto-aead \
+kmod-crypto-ccm \
+kmod-crypto-gcm \
+kmod-asn1-decoder \
+kmod-oid-registry
endef
# The last two DEPENDS are hacks in order to get CONFIG_ASN1 and CONFIG_OID_REGISTRY
# which it seems can't be selected independently. Some bug in either base or upstream.
define Build/Compile
$(KERNEL_MAKE) M="$(PKG_BUILD_DIR)" \
CONFIG_SMB_SERVER=m \
modules
endef
$(eval $(call KernelPackage,fs-ksmbd))

View File

@@ -0,0 +1,11 @@
--- a/glob.h
+++ b/glob.h
@@ -7,6 +7,8 @@
#ifndef __KSMBD_GLOB_H
#define __KSMBD_GLOB_H
+#undef CONFIG_MODULE_STRIPPED
+
#include <linux/ctype.h>
#include "unicode.h"

View File

@@ -0,0 +1,11 @@
--- a/vfs.c
+++ b/vfs.c
@@ -2662,7 +2662,7 @@
}
#endif
-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 9, 0)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 60)
static inline bool is_dot_dotdot(const char *name, size_t len)
{
return len && unlikely(name[0] == '.') &&

View File

@@ -359,42 +359,6 @@ endef
$(eval $(call KernelPackage,fs-jfs))
define KernelPackage/fs-ksmbd
SUBMENU:=$(FS_MENU)
TITLE:=SMB kernel server support
DEPENDS:= \
+kmod-nls-base \
+kmod-nls-utf8 \
+kmod-crypto-md5 \
+kmod-crypto-hmac \
+kmod-crypto-ecb \
+kmod-crypto-des \
+kmod-crypto-sha256 \
+kmod-crypto-cmac \
+kmod-crypto-sha512 \
+kmod-crypto-aead \
+kmod-crypto-ccm \
+kmod-crypto-gcm \
+kmod-asn1-decoder \
+kmod-oid-registry \
+kmod-fs-smbfs-common
KCONFIG:= \
CONFIG_SMB_SERVER \
CONFIG_SMB_SERVER_SMBDIRECT=n \
CONFIG_SMB_SERVER_CHECK_CAP_NET_ADMIN=n \
CONFIG_SMB_SERVER_KERBEROS5=n
FILES:= \
$(LINUX_DIR)/fs/smb/server/ksmbd.ko
AUTOLOAD:=$(call AutoLoad,41,ksmbd)
endef
define KernelPackage/fs-ksmbd/description
Kernel module for SMB kernel server support
endef
$(eval $(call KernelPackage,fs-ksmbd))
define KernelPackage/fs-minix
SUBMENU:=$(FS_MENU)
TITLE:=Minix filesystem support

View File

@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=readline
PKG_VERSION:=8.2
PKG_RELEASE:=1
PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@GNU/readline
@@ -48,9 +48,13 @@ endef
HOST_CONFIGURE_ARGS += --disable-shared --with-pic
CONFIGURE_ARGS += --with-curses --disable-install-examples
HOST_CONFIGURE_VARS += \
bash_cv_termcap_lib=libncurses
CONFIGURE_VARS += \
bash_cv_wcwidth_broken=no \
bash_cv_func_sigsetjmp=yes \
bash_cv_termcap_lib=libncursesw
TARGET_CFLAGS += $(FPIC)
HOST_CFLAGS += $(FPIC)
@@ -65,7 +69,7 @@ endef
define Package/libreadline/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{history,readline}.so.* $(1)/usr/lib/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{history,readline}.so* $(1)/usr/lib/
endef
$(eval $(call HostBuild))

View File

@@ -0,0 +1,20 @@
--- a/configure
+++ b/configure
@@ -7305,6 +7305,9 @@ TERMCAP_DEP=
elif test $bash_cv_termcap_lib = libncurses; then
TERMCAP_LIB=-lncurses
TERMCAP_DEP=
+elif test $bash_cv_termcap_lib = libncursesw; then
+TERMCAP_LIB=-lncursesw
+TERMCAP_DEP=
elif test $bash_cv_termcap_lib = libc; then
TERMCAP_LIB=
TERMCAP_DEP=
@@ -7340,6 +7343,7 @@ case "$TERMCAP_LIB" in
-ltinfo) TERMCAP_PKG_CONFIG_LIB=tinfo ;;
-lcurses) TERMCAP_PKG_CONFIG_LIB=ncurses ;;
-lncurses) TERMCAP_PKG_CONFIG_LIB=ncurses ;;
+-lncursesw) TERMCAP_PKG_CONFIG_LIB=ncursesw ;;
-ltermcap) TERMCAP_PKG_CONFIG_LIB=termcap ;;
*) TERMCAP_PKG_CONFIG_LIB=termcap ;;
esac

View File

@@ -127,10 +127,10 @@ func router(isDebug bool, secret string, dohServer string, cors Cors) *chi.Mux {
r.Mount("/providers/rules", ruleProviderRouter())
r.Mount("/cache", cacheRouter())
r.Mount("/dns", dnsRouter())
if !embedMode { // disallow restart and upgrade in embed mode
if !embedMode { // disallow restart in embed mode
r.Mount("/restart", restartRouter())
r.Mount("/upgrade", upgradeRouter())
}
r.Mount("/upgrade", upgradeRouter())
addExternalRouters(r)
})

View File

@@ -14,9 +14,11 @@ import (
func upgradeRouter() http.Handler {
r := chi.NewRouter()
r.Post("/", upgradeCore)
r.Post("/ui", updateUI)
if !embedMode { // disallow upgrade core/geo in embed mode
r.Post("/", upgradeCore)
r.Post("/geo", updateGeoDatabases)
}
return r
}

View File

@@ -545,18 +545,18 @@ dependencies = [
[[package]]
name = "clap"
version = "4.5.21"
version = "4.5.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f"
checksum = "69371e34337c4c984bbe322360c2547210bf632eb2814bbe78a6e87a2935bd2b"
dependencies = [
"clap_builder",
]
[[package]]
name = "clap_builder"
version = "4.5.21"
version = "4.5.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec"
checksum = "6e24c1b4099818523236a8ca881d2b45db98dadfb4625cf6608c12069fcbbde1"
dependencies = [
"anstream",
"anstyle",
@@ -751,7 +751,7 @@ version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3983b127f13995e68c1e29071e5d115cd96f215ccb5e6812e3728cd6f92653b3"
dependencies = [
"thiserror 2.0.3",
"thiserror 2.0.4",
]
[[package]]
@@ -1348,7 +1348,7 @@ dependencies = [
"rustls",
"rustls-native-certs",
"serde",
"thiserror 2.0.3",
"thiserror 2.0.4",
"tinyvec",
"tokio",
"tokio-native-tls",
@@ -1378,7 +1378,7 @@ dependencies = [
"rustls-native-certs",
"serde",
"smallvec",
"thiserror 2.0.3",
"thiserror 2.0.4",
"tokio",
"tokio-native-tls",
"tokio-rustls",
@@ -1417,9 +1417,9 @@ dependencies = [
[[package]]
name = "http"
version = "1.1.0"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258"
checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea"
dependencies = [
"bytes",
"fnv",
@@ -1880,7 +1880,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34"
dependencies = [
"cfg-if",
"windows-targets 0.52.6",
"windows-targets 0.48.5",
]
[[package]]
@@ -2559,7 +2559,7 @@ dependencies = [
"rustc-hash",
"rustls",
"socket2",
"thiserror 2.0.3",
"thiserror 2.0.4",
"tokio",
"tracing",
]
@@ -2578,7 +2578,7 @@ dependencies = [
"rustls",
"rustls-pki-types",
"slab",
"thiserror 2.0.3",
"thiserror 2.0.4",
"tinyvec",
"tracing",
"web-time",
@@ -3175,7 +3175,7 @@ dependencies = [
"shadowsocks-crypto",
"socket2",
"spin",
"thiserror 2.0.3",
"thiserror 2.0.4",
"tokio",
"tokio-tfo",
"trait-variant",
@@ -3243,7 +3243,7 @@ dependencies = [
"snmalloc-rs",
"sysexits",
"tcmalloc",
"thiserror 2.0.3",
"thiserror 2.0.4",
"time",
"tokio",
"tracing",
@@ -3293,7 +3293,7 @@ dependencies = [
"smoltcp",
"socket2",
"spin",
"thiserror 2.0.3",
"thiserror 2.0.4",
"tokio",
"tokio-native-tls",
"tokio-rustls",
@@ -3593,11 +3593,11 @@ dependencies = [
[[package]]
name = "thiserror"
version = "2.0.3"
version = "2.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa"
checksum = "2f49a1853cf82743e3b7950f77e0f4d622ca36cf4317cba00c767838bac8d490"
dependencies = [
"thiserror-impl 2.0.3",
"thiserror-impl 2.0.4",
]
[[package]]
@@ -3613,9 +3613,9 @@ dependencies = [
[[package]]
name = "thiserror-impl"
version = "2.0.3"
version = "2.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568"
checksum = "8381894bb3efe0c4acac3ded651301ceee58a15d47c2e34885ed1908ad667061"
dependencies = [
"proc-macro2",
"quote",
@@ -3886,7 +3886,7 @@ dependencies = [
"libc",
"log",
"nix",
"thiserror 2.0.3",
"thiserror 2.0.4",
"tokio",
"tokio-util",
"windows-sys 0.59.0",
@@ -4159,7 +4159,7 @@ version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
dependencies = [
"windows-sys 0.59.0",
"windows-sys 0.48.0",
]
[[package]]
@@ -4387,7 +4387,7 @@ dependencies = [
"futures",
"libloading",
"log",
"thiserror 2.0.3",
"thiserror 2.0.4",
"windows-sys 0.59.0",
]

187
sing-box/.github/workflows/build.yml vendored Normal file
View File

@@ -0,0 +1,187 @@
name: Build
on:
workflow_dispatch:
push:
branches:
- dev-next
jobs:
build:
name: Build binary
if: false
runs-on: ubuntu-latest
strategy:
matrix:
include:
- name: linux_386
goos: linux
goarch: 386
- name: linux_amd64
goos: linux
goarch: amd64
- name: linux_arm64
goos: linux
goarch: arm64
- name: linux_arm
goos: linux
goarch: arm
- name: linux_s390x
goos: linux
goarch: s390x
- name: linux_riscv64
goos: linux
goarch: riscv64
- name: linux_mips64le
goos: linux
goarch: mips64le
- name: windows_amd64
goos: windows
goarch: amd64
require_legacy_go: true
- name: windows_386
goos: windows
goarch: 386
require_legacy_go: true
- name: windows_arm64
goos: windows
goarch: arm64
- name: darwin_amd64
goos: darwin
goarch: amd64
require_legacy_go: true
- name: android_arm64
goos: android
goarch: arm64
- name: android_arm
goos: android
goarch: arm
- name: android_amd64
goos: android
goarch: amd64
- name: android_386
goos: android
goarch: 386
steps:
- name: Checkout
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4
with:
fetch-depth: 0
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: ^1.23
- name: Cache legacy Go
if: matrix.require_legacy_go
id: cache-legacy-go
uses: actions/cache@v4
with:
path: |
~/go/go1.20.14
key: go120
- name: Setup legacy Go
if: matrix.require_legacy_go == 'true' && steps.cache-legacy-go.outputs.cache-hit != 'true'
run: |-
wget https://dl.google.com/go/go1.20.14.linux-amd64.tar.gz
tar -xzf go1.20.14.linux-amd64.tar.gz
mv go $HOME/go/go1.20.14
- name: Setup Android NDK
if: matrix.goos == 'android'
uses: nttld/setup-ndk@v1
with:
ndk-version: r26b
local-cache: true
- name: Setup Goreleaser
uses: goreleaser/goreleaser-action@v6
with:
distribution: goreleaser-pro
version: latest
install-only: true
- name: Extract signing key
run: |-
mkdir -p $HOME/.gnupg
cat > $HOME/.gnupg/sagernet.key <<EOF
${{ secrets.GPG_KEY }}
EOF
- name: Build
if: matrix.goos != 'android'
run: |-
goreleaser release --clean --split
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}
NFPM_KEY_PATH: ${{ env.HOME }}/.gnupg/sagernet.key
NFPM_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
- name: Build Android
if: matrix.goos == 'android'
run: |-
go run -v ./cmd/internal/build goreleaser release --clean --split
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}
NFPM_KEY_PATH: ${{ env.HOME }}/.gnupg/sagernet.key
NFPM_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.name }}
path: 'dist/*'
build_android_lib:
name: Build Android
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4
with:
fetch-depth: 0
submodules: 'recursive'
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: ^1.23
- name: Setup Android NDK
id: setup-ndk
uses: nttld/setup-ndk@v1
with:
ndk-version: r26c
- name: Setup OpenJDK
run: |-
sudo apt update && sudo apt install -y openjdk-17-jdk-headless
/usr/lib/jvm/java-17-openjdk-amd64/bin/java --version
- name: Build library
run: |-
make lib_install
export PATH="$PATH:$(go env GOPATH)/bin"
make lib_android
env:
JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
- name: Checkout dev branch
if: github.ref == 'refs/heads/dev-next'
run: |-
cd clients/android &&
git checkout dev &&
mkdir app/libs
- name: Gradle cache
uses: actions/cache@v4
with:
path: ~/.gradle
key: gradle-${{ hashFiles('**/*.gradle') }}
- name: Extract signing key
run: |-
cat > clients/android/local.properties <<EOF
${{ secrets.LOCAL_PROPERTIES }}
EOF
- name: Build Android
run: |-
mv libbox.aar clients/android/app/libs
cd clients/android &&
./gradlew :app:assemblePlayRelease
env:
JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: android_apks
path: clients/android/app/build/outputs/apk/play/release/*.apk

View File

@@ -1,219 +0,0 @@
name: Debug build
on:
push:
branches:
- stable-next
- main-next
- dev-next
paths-ignore:
- '**.md'
- '.github/**'
- '!.github/workflows/debug.yml'
pull_request:
branches:
- stable-next
- main-next
- dev-next
jobs:
build:
name: Debug build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4
with:
fetch-depth: 0
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: ^1.23
- name: Run Test
run: |
go test -v ./...
build_go120:
name: Debug build (Go 1.20)
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4
with:
fetch-depth: 0
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: ~1.20
- name: Cache go module
uses: actions/cache@v4
with:
path: |
~/go/pkg/mod
key: go120-${{ hashFiles('**/go.sum') }}
- name: Run Test
run: make ci_build_go120
build_go121:
name: Debug build (Go 1.21)
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4
with:
fetch-depth: 0
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: ~1.21
- name: Cache go module
uses: actions/cache@v4
with:
path: |
~/go/pkg/mod
key: go121-${{ hashFiles('**/go.sum') }}
- name: Run Test
run: make ci_build
build_go122:
name: Debug build (Go 1.22)
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4
with:
fetch-depth: 0
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: ~1.22
- name: Cache go module
uses: actions/cache@v4
with:
path: |
~/go/pkg/mod
key: go122-${{ hashFiles('**/go.sum') }}
- name: Run Test
run: make ci_build
cross:
strategy:
matrix:
include:
# windows
- name: windows-amd64
goos: windows
goarch: amd64
goamd64: v1
- name: windows-amd64-v3
goos: windows
goarch: amd64
goamd64: v3
- name: windows-386
goos: windows
goarch: 386
- name: windows-arm64
goos: windows
goarch: arm64
- name: windows-arm32v7
goos: windows
goarch: arm
goarm: 7
# linux
- name: linux-amd64
goos: linux
goarch: amd64
goamd64: v1
- name: linux-amd64-v3
goos: linux
goarch: amd64
goamd64: v3
- name: linux-386
goos: linux
goarch: 386
- name: linux-arm64
goos: linux
goarch: arm64
- name: linux-armv5
goos: linux
goarch: arm
goarm: 5
- name: linux-armv6
goos: linux
goarch: arm
goarm: 6
- name: linux-armv7
goos: linux
goarch: arm
goarm: 7
- name: linux-mips-softfloat
goos: linux
goarch: mips
gomips: softfloat
- name: linux-mips-hardfloat
goos: linux
goarch: mips
gomips: hardfloat
- name: linux-mipsel-softfloat
goos: linux
goarch: mipsle
gomips: softfloat
- name: linux-mipsel-hardfloat
goos: linux
goarch: mipsle
gomips: hardfloat
- name: linux-mips64
goos: linux
goarch: mips64
- name: linux-mips64el
goos: linux
goarch: mips64le
- name: linux-s390x
goos: linux
goarch: s390x
# darwin
- name: darwin-amd64
goos: darwin
goarch: amd64
goamd64: v1
- name: darwin-amd64-v3
goos: darwin
goarch: amd64
goamd64: v3
- name: darwin-arm64
goos: darwin
goarch: arm64
# freebsd
- name: freebsd-amd64
goos: freebsd
goarch: amd64
goamd64: v1
- name: freebsd-amd64-v3
goos: freebsd
goarch: amd64
goamd64: v3
- name: freebsd-386
goos: freebsd
goarch: 386
- name: freebsd-arm64
goos: freebsd
goarch: arm64
fail-fast: true
runs-on: ubuntu-latest
env:
GOOS: ${{ matrix.goos }}
GOARCH: ${{ matrix.goarch }}
GOAMD64: ${{ matrix.goamd64 }}
GOARM: ${{ matrix.goarm }}
GOMIPS: ${{ matrix.gomips }}
CGO_ENABLED: 0
TAGS: with_gvisor,with_dhcp,with_wireguard,with_clash_api,with_quic,with_utls,with_ech
steps:
- name: Checkout
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4
with:
fetch-depth: 0
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: ^1.21
- name: Build
id: build
run: make

View File

@@ -24,7 +24,6 @@ jobs:
${{ secrets.GPG_KEY }}
echo "HOME=$HOME" >> "$GITHUB_ENV"
EOF
echo "HOME=$HOME" >> "$GITHUB_ENV"
- name: Publish release
uses: goreleaser/goreleaser-action@v6
with:

View File

@@ -201,3 +201,5 @@ release:
- archive
- package
skip_upload: true
partial:
by: target

View File

@@ -10,7 +10,9 @@ import (
_ "github.com/sagernet/gomobile"
"github.com/sagernet/sing-box/cmd/internal/build_shared"
"github.com/sagernet/sing-box/log"
E "github.com/sagernet/sing/common/exceptions"
"github.com/sagernet/sing/common/rw"
"github.com/sagernet/sing/common/shell"
)
var (
@@ -62,6 +64,22 @@ func init() {
func buildAndroid() {
build_shared.FindSDK()
var javaPath string
javaHome := os.Getenv("JAVA_HOME")
if javaHome == "" {
javaPath = "java"
} else {
javaPath = filepath.Join(javaHome, "bin", "java")
}
javaVersion, err := shell.Exec(javaPath, "--version").ReadOutput()
if err != nil {
log.Fatal(E.Cause(err, "check java version"))
}
if !strings.Contains(javaVersion, "openjdk 17") {
log.Fatal("java version should be openjdk 17")
}
args := []string{
"bind",
"-v",
@@ -86,7 +104,7 @@ func buildAndroid() {
command := exec.Command(build_shared.GoBinPath+"/gomobile", args...)
command.Stdout = os.Stdout
command.Stderr = os.Stderr
err := command.Run()
err = command.Run()
if err != nil {
log.Fatal(err)
}

View File

@@ -11,9 +11,7 @@ import (
"github.com/sagernet/sing-box/log"
"github.com/sagernet/sing/common"
E "github.com/sagernet/sing/common/exceptions"
"github.com/sagernet/sing/common/rw"
"github.com/sagernet/sing/common/shell"
)
var (
@@ -42,14 +40,6 @@ func FindSDK() {
log.Fatal("android NDK not found")
}
javaVersion, err := shell.Exec("java", "--version").ReadOutput()
if err != nil {
log.Fatal(E.Cause(err, "check java version"))
}
if !strings.Contains(javaVersion, "openjdk 17") {
log.Fatal("java version should be openjdk 17")
}
os.Setenv("ANDROID_HOME", androidSDKPath)
os.Setenv("ANDROID_SDK_HOME", androidSDKPath)
os.Setenv("ANDROID_NDK_HOME", androidNDKPath)
@@ -64,6 +54,10 @@ func findNDK() bool {
androidNDKPath = fixedPath
return true
}
if ndkHomeEnv := os.Getenv("ANDROID_NDK_HOME"); rw.IsFile(filepath.Join(ndkHomeEnv, versionFile)) {
androidNDKPath = ndkHomeEnv
return true
}
ndkVersions, err := os.ReadDir(filepath.Join(androidSDKPath, "ndk"))
if err != nil {
return false

View File

@@ -2,7 +2,7 @@
icon: material/alert-decagram
---
#### 1.11.0-beta.5
#### 1.11.0-beta.6
* Fixes and improvements

View File

@@ -25,7 +25,7 @@ require (
github.com/sagernet/gvisor v0.0.0-20241123041152-536d05261cff
github.com/sagernet/quic-go v0.48.2-beta.1
github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691
github.com/sagernet/sing v0.6.0-beta.4
github.com/sagernet/sing v0.6.0-beta.5
github.com/sagernet/sing-dns v0.4.0-beta.1
github.com/sagernet/sing-mux v0.3.0-alpha.1
github.com/sagernet/sing-quic v0.4.0-alpha.4

View File

@@ -110,8 +110,8 @@ github.com/sagernet/quic-go v0.48.2-beta.1/go.mod h1:1WgdDIVD1Gybp40JTWketeSfKA/
github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691 h1:5Th31OC6yj8byLGkEnIYp6grlXfo1QYUfiYFGjewIdc=
github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691/go.mod h1:B8lp4WkQ1PwNnrVMM6KyuFR20pU8jYBD+A4EhJovEXU=
github.com/sagernet/sing v0.2.18/go.mod h1:OL6k2F0vHmEzXz2KW19qQzu172FDgSbUSODylighuVo=
github.com/sagernet/sing v0.6.0-beta.4 h1:OLm3FTyDYsyGaQrolbXf6R8At4FzTLdFCPmRzgp9Ki4=
github.com/sagernet/sing v0.6.0-beta.4/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak=
github.com/sagernet/sing v0.6.0-beta.5 h1:RD2j8WmJsvAbbBkAlJWaiYmnd+v/JohBiweoew7kMwo=
github.com/sagernet/sing v0.6.0-beta.5/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak=
github.com/sagernet/sing-dns v0.4.0-beta.1 h1:W1XkdhigwxDOMgMDVB+9kdomCpb7ExsZfB4acPcTZFY=
github.com/sagernet/sing-dns v0.4.0-beta.1/go.mod h1:8wuFcoFkWM4vJuQyg8e97LyvDwe0/Vl7G839WLcKDs8=
github.com/sagernet/sing-mux v0.3.0-alpha.1 h1:IgNX5bJBpL41gGbp05pdDOvh/b5eUQ6cv9240+Ngipg=

View File

@@ -36,7 +36,6 @@ type Outbound struct {
outbound.Adapter
ctx context.Context
logger logger.ContextLogger
dnsRouter adapter.Router
dialer N.Dialer
serverAddr M.Socksaddr
user string
@@ -58,7 +57,6 @@ func NewOutbound(ctx context.Context, router adapter.Router, logger log.ContextL
Adapter: outbound.NewAdapterWithDialerOptions(C.TypeSSH, tag, []string{N.NetworkTCP}, options.DialerOptions),
ctx: ctx,
logger: logger,
dnsRouter: router,
dialer: outboundDialer,
serverAddr: options.ServerOptions.Build(),
user: options.User,
@@ -189,15 +187,6 @@ func (s *Outbound) Close() error {
}
func (s *Outbound) DialContext(ctx context.Context, network string, destination M.Socksaddr) (net.Conn, error) {
if destination.IsFqdn() {
destinationAddresses, err := s.dnsRouter.LookupDefault(ctx, destination.Fqdn)
if err != nil {
return nil, err
}
destination = M.SocksaddrFrom(destinationAddresses[0], destination.Port)
} else if !destination.Addr.IsValid() {
return nil, E.New("invalid destination: ", destination)
}
client, err := s.connect()
if err != nil {
return nil, err

View File

@@ -13,7 +13,7 @@ require (
github.com/docker/go-connections v0.5.0
github.com/gofrs/uuid/v5 v5.3.0
github.com/sagernet/quic-go v0.48.2-beta.1
github.com/sagernet/sing v0.6.0-beta.3
github.com/sagernet/sing v0.6.0-beta.5
github.com/sagernet/sing-dns v0.4.0-beta.1
github.com/sagernet/sing-quic v0.4.0-alpha.4
github.com/sagernet/sing-shadowsocks v0.2.7

View File

@@ -146,8 +146,8 @@ github.com/sagernet/quic-go v0.48.2-beta.1/go.mod h1:1WgdDIVD1Gybp40JTWketeSfKA/
github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691 h1:5Th31OC6yj8byLGkEnIYp6grlXfo1QYUfiYFGjewIdc=
github.com/sagernet/reality v0.0.0-20230406110435-ee17307e7691/go.mod h1:B8lp4WkQ1PwNnrVMM6KyuFR20pU8jYBD+A4EhJovEXU=
github.com/sagernet/sing v0.2.18/go.mod h1:OL6k2F0vHmEzXz2KW19qQzu172FDgSbUSODylighuVo=
github.com/sagernet/sing v0.6.0-beta.3 h1:T8MKw7dEjG4a24m/sHDIQLMjc45rZvYHSYO9/Mwk6nI=
github.com/sagernet/sing v0.6.0-beta.3/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak=
github.com/sagernet/sing v0.6.0-beta.5 h1:RD2j8WmJsvAbbBkAlJWaiYmnd+v/JohBiweoew7kMwo=
github.com/sagernet/sing v0.6.0-beta.5/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak=
github.com/sagernet/sing-dns v0.4.0-beta.1 h1:W1XkdhigwxDOMgMDVB+9kdomCpb7ExsZfB4acPcTZFY=
github.com/sagernet/sing-dns v0.4.0-beta.1/go.mod h1:8wuFcoFkWM4vJuQyg8e97LyvDwe0/Vl7G839WLcKDs8=
github.com/sagernet/sing-mux v0.3.0-alpha.1 h1:IgNX5bJBpL41gGbp05pdDOvh/b5eUQ6cv9240+Ngipg=

View File

@@ -175,12 +175,18 @@ o.default = 2
o:depends("week_update", "8")
o.rmempty = true
o = s:option(ListValue, "access_mode", translate("Subscribe URL Access Method"))
o.default = ""
o:value("", translate("Auto"))
o:value("direct", translate("Direct Connection"))
o:value("proxy", translate("Proxy"))
o = s:option(Value, "user_agent", translate("User-Agent"))
o.default = "v2rayN/9.99"
o:value("curl", "Curl")
o:value("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0", "Edge for Linux")
o:value("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0", "Edge for Windows")
o:value("Passwall/OpenWrt", "PassWall")
o:value("v2rayN/9.99", "V2rayN")
o:value("v2rayN/9.99", "v2rayN")
return m

View File

@@ -63,6 +63,29 @@ function base64Decode(text)
end
end
--提取URL中的域名和端口(no ip)
function get_domain_port_from_url(url)
local scheme, domain, port = string.match(url, "^(https?)://([%w%.%-]+):?(%d*)")
if not domain then
scheme, domain, port = string.match(url, "^(https?)://(%b[])([^:/]*)/?")
end
if not domain then return nil, nil end
if domain:sub(1, 1) == "[" then domain = domain:sub(2, -2) end
port = port ~= "" and tonumber(port) or (scheme == "https" and 443 or 80)
if datatypes.ipaddr(domain) or datatypes.ip6addr(domain) then return nil, nil end
return domain, port
end
--解析域名
function domainToIPv4(domain, dns)
local Dns = dns or "223.5.5.5"
local IPs = luci.sys.exec('nslookup %s %s | awk \'/^Name:/{getline; if ($1 == "Address:") print $2}\'' % { domain, Dns })
for IP in string.gmatch(IPs, "%S+") do
if datatypes.ipaddr(IP) and not datatypes.ip6addr(IP) then return IP end
end
return nil
end
function curl_base(url, file, args)
if not args then args = {} end
if file then
@@ -92,6 +115,28 @@ function curl_logic(url, file, args)
return return_code, result
end
function curl_direct(url, file, args)
--直连访问
if not args then args = {} end
local tmp_args = clone(args)
local domain, port = get_domain_port_from_url(url)
if domain then
local ip = domainToIPv4(domain)
if ip then
tmp_args[#tmp_args + 1] = "--resolve " .. domain .. ":" .. port .. ":" .. ip
end
end
return curl_base(url, file, tmp_args)
end
function curl_auto(url, file, args)
local return_code, result = curl_proxy(url, file, args)
if not return_code or return_code ~= 0 then
return_code, result = curl_direct(url, file, args)
end
return return_code, result
end
function url(...)
local url = string.format("admin/services/%s", appname)
local args = { ... }

View File

@@ -1009,6 +1009,9 @@ msgstr "订阅备注(机场)"
msgid "Subscribe URL"
msgstr "订阅网址"
msgid "Subscribe URL Access Method"
msgstr "订阅网址访问方式"
msgid "Please input the subscription url first, save and submit before manual subscription."
msgstr "请输入订阅网址保存应用后再手动订阅。"

View File

@@ -1216,12 +1216,19 @@ local function processData(szType, content, add_mode, add_from)
return result
end
local function curl(url, file, ua)
local function curl(url, file, ua, mode)
local curl_args = api.clone(api.curl_args)
if ua and ua ~= "" and ua ~= "curl" then
table.insert(curl_args, '--user-agent "' .. ua .. '"')
end
local return_code, result = api.curl_logic(url, file, curl_args)
local return_code
if mode == "direct" then
return_code = api.curl_direct(url, file, curl_args)
elseif mode == "proxy" then
return_code = api.curl_proxy(url, file, curl_args)
else
return_code = api.curl_auto(url, file, curl_args)
end
return return_code
end
@@ -1610,8 +1617,10 @@ local execute = function()
domain_strategy_node = domain_strategy_default
end
local ua = value.user_agent
log('正在订阅:【' .. remark .. '' .. url)
local raw = curl(url, "/tmp/" .. cfgid, ua)
local access_mode = value.access_mode
local result = (not access_mode) and "自动" or (access_mode == "direct" and "直连访问" or (access_mode == "proxy" and "通过代理" or "自动"))
log('正在订阅:【' .. remark .. '' .. url .. ' [' .. result .. ']')
local raw = curl(url, "/tmp/" .. cfgid, ua, access_mode)
if raw == 0 then
local f = io.open("/tmp/" .. cfgid, "r")
local stdout = f:read("*all")

View File

@@ -12,8 +12,8 @@ android {
applicationId = "com.v2ray.ang"
minSdk = 21
targetSdk = 35
versionCode = 619
versionName = "1.9.23"
versionCode = 620
versionName = "1.9.24"
multiDexEnabled = true
splits {

View File

@@ -138,11 +138,11 @@ object AngConfigManager {
if (sb.count() > 0) {
Utils.setClipboard(context, sb.toString())
}
return sb.lines().count()
} catch (e: Exception) {
e.printStackTrace()
return -1
}
return 0
}
/**

View File

@@ -164,18 +164,22 @@ object MmkvManager {
}
}
fun removeAllServer() {
fun removeAllServer(): Int {
val count = profileFullStorage.allKeys()?.count() ?: 0
mainStorage.clearAll()
profileFullStorage.clearAll()
//profileStorage.clearAll()
serverAffStorage.clearAll()
return count
}
fun removeInvalidServer(guid: String) {
fun removeInvalidServer(guid: String): Int {
var count = 0
if (guid.isNotEmpty()) {
decodeServerAffiliationInfo(guid)?.let { aff ->
if (aff.testDelayMillis < 0L) {
removeServer(guid)
count++
}
}
} else {
@@ -183,10 +187,12 @@ object MmkvManager {
decodeServerAffiliationInfo(key)?.let { aff ->
if (aff.testDelayMillis < 0L) {
removeServer(key)
count++
}
}
}
}
return count
}
fun encodeServerRaw(guid: String, config: String) {

View File

@@ -346,8 +346,8 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList
lifecycleScope.launch(Dispatchers.IO) {
val ret = mainViewModel.exportAllServer()
launch(Dispatchers.Main) {
if (ret == 0)
toast(R.string.toast_success)
if (ret > 0)
toast(getString(R.string.title_export_config_count, ret))
else
toast(R.string.toast_failure)
binding.pbWaiting.hide()
@@ -358,13 +358,13 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList
}
R.id.ping_all -> {
toast(R.string.connection_test_testing)
toast(getString(R.string.connection_test_testing_count, mainViewModel.serversCache.count()))
mainViewModel.testAllTcping()
true
}
R.id.real_ping_all -> {
toast(R.string.connection_test_testing)
toast(getString(R.string.connection_test_testing_count, mainViewModel.serversCache.count()))
mainViewModel.testAllRealPing()
true
}
@@ -379,9 +379,10 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList
.setPositiveButton(android.R.string.ok) { _, _ ->
binding.pbWaiting.show()
lifecycleScope.launch(Dispatchers.IO) {
mainViewModel.removeAllServer()
val ret = mainViewModel.removeAllServer()
launch(Dispatchers.Main) {
mainViewModel.reloadServerList()
toast(getString(R.string.title_del_config_count, ret))
binding.pbWaiting.hide()
}
}
@@ -418,9 +419,10 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList
.setPositiveButton(android.R.string.ok) { _, _ ->
binding.pbWaiting.show()
lifecycleScope.launch(Dispatchers.IO) {
mainViewModel.removeInvalidServer()
val ret = mainViewModel.removeInvalidServer()
launch(Dispatchers.Main) {
mainViewModel.reloadServerList()
toast(getString(R.string.title_del_config_count, ret))
binding.pbWaiting.hide()
}
}
@@ -517,7 +519,7 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList
withContext(Dispatchers.Main) {
when {
count > 0 -> {
toast(R.string.toast_success)
toast(getString(R.string.title_import_config_count, count))
mainViewModel.reloadServerList()
}
@@ -623,7 +625,7 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList
delay(500L)
launch(Dispatchers.Main) {
if (count > 0) {
toast(R.string.toast_success)
toast(getString(R.string.title_update_config_count, count))
mainViewModel.reloadServerList()
} else {
toast(R.string.toast_failure)

View File

@@ -6,7 +6,6 @@ import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.content.res.AssetManager
import android.os.Build
import android.util.Log
import androidx.core.content.ContextCompat
import androidx.lifecycle.AndroidViewModel
@@ -274,7 +273,8 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
return deleteServer.count()
}
fun removeAllServer() {
fun removeAllServer(): Int {
val count =
if (subscriptionId.isEmpty() && keywordFilter.isEmpty()) {
MmkvManager.removeAllServer()
} else {
@@ -282,18 +282,22 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
for (item in serversCopy) {
MmkvManager.removeServer(item.guid)
}
serversCache.toList().count()
}
return count
}
fun removeInvalidServer() {
fun removeInvalidServer(): Int {
var count = 0
if (subscriptionId.isEmpty() && keywordFilter.isEmpty()) {
MmkvManager.removeInvalidServer("")
count += MmkvManager.removeInvalidServer("")
} else {
val serversCopy = serversCache.toList()
for (item in serversCopy) {
MmkvManager.removeInvalidServer(item.guid)
count += MmkvManager.removeInvalidServer(item.guid)
}
}
return count
}
fun sortByTestResults() {

View File

@@ -82,6 +82,7 @@
<string name="server_lab_encryption">التشفير</string>
<string name="server_lab_flow">التدفق</string>
<string name="server_lab_public_key" translatable="false">المفتاح العام</string>
<string name="server_lab_preshared_key">PreSharedKey(optional)</string>
<string name="server_lab_short_id" translatable="false">المعرّف القصير</string>
<string name="server_lab_spider_x" translatable="false">SpiderX</string>
<string name="server_lab_secret_key" translatable="false">المفتاح السري</string>
@@ -211,6 +212,7 @@
<string name="title_privacy_policy">سياسة الخصوصية</string>
<string name="title_about">حول\nترجمة م. ابراهيم قاسم</string>
<string name="title_source_code">الكود المصدري</string>
<string name="title_oss_license">Open Source licenses</string>
<string name="title_tg_channel">قناة Telegram</string>
<string name="title_configuration_backup">نسخ التكوين احتياطيًا</string>
<string name="summary_configuration_backup">موقع التخزين: [%s]، سيتم مسح النسخة الاحتياطية بعد إلغاء تثبيت التطبيق أو مسح التخزين</string>
@@ -257,6 +259,10 @@
<string name="filter_config_all">جميع مجموعات الاشتراك</string>
<string name="title_del_duplicate_config_count">حذف %d من الإعدادات المكررة</string>
<string name="title_del_config_count">Delete %d configurations</string>
<string name="title_import_config_count">Import %d configurations</string>
<string name="title_export_config_count">Export %d configurations</string>
<string name="title_update_config_count">Update %d configurations</string>
<string name="tasker_start_service">بدء الخدمة</string>
<string name="tasker_setting_confirm">تأكيد</string>
@@ -276,6 +282,7 @@
<string name="connection_test_pending">التحقق من الاتصال</string>
<string name="connection_test_testing">يجري الاختبار…</string>
<string name="connection_test_testing_count">Testing %d configurations…</string>
<string name="connection_test_available">نجاح: استغرق اتصال HTTP %dms</string>
<string name="connection_test_error">فشل اكتشاف اتصال الإنترنت: %s</string>
<string name="connection_test_fail">الإنترنت غير متاح</string>

View File

@@ -81,6 +81,7 @@
<string name="server_lab_encryption">এনক্রিপশন</string>
<string name="server_lab_flow">ফ্লো</string>
<string name="server_lab_public_key" translatable="false">পাবলিক কী</string>
<string name="server_lab_preshared_key">PreSharedKey(optional)</string>
<string name="server_lab_short_id" translatable="false">শর্ট আইডি</string>
<string name="server_lab_spider_x" translatable="false">SpiderX</string>
<string name="server_lab_secret_key" translatable="false">সিক্রেট কী</string>
@@ -211,6 +212,7 @@
<string name="title_privacy_policy">গোপনীয়তা নীতি</string>
<string name="title_about">সম্পর্কিত</string>
<string name="title_source_code">সোর্স কোড</string>
<string name="title_oss_license">Open Source licenses</string>
<string name="title_tg_channel">টেলিগ্রাম চ্যানেল</string>
<string name="title_configuration_backup">কনফিগারেশন ব্যাকআপ</string>
<string name="summary_configuration_backup">স্টোরেজ অবস্থান: [%s], অ্যাপ আনইনস্টল বা স্টোরেজ ক্লিয়ার করার পরে ব্যাকআপ মুছে যাবে</string>
@@ -256,6 +258,10 @@
<string name="title_filter_config">কনফিগারেশন ফাইল ফিল্টার করুন</string>
<string name="filter_config_all">সব সাবস্ক্রিপশন গ্রুপ</string>
<string name="title_del_duplicate_config_count">%d ডুপ্লিকেট কনফিগারেশন মুছে ফেলুন</string>
<string name="title_del_config_count">Delete %d configurations</string>
<string name="title_import_config_count">Import %d configurations</string>
<string name="title_export_config_count">Export %d configurations</string>
<string name="title_update_config_count">Update %d configurations</string>
<string name="tasker_start_service">সার্ভিস শুরু করুন</string>
<string name="tasker_setting_confirm">নিশ্চিত করুন</string>
@@ -275,6 +281,7 @@
<string name="connection_test_pending">সংযোগ পরীক্ষা করুন</string>
<string name="connection_test_testing">পরীক্ষা চলছে…</string>
<string name="connection_test_testing_count">Testing %d configurations…</string>
<string name="connection_test_available">সফল: HTTP সংযোগ নিয়েছে %dms</string>
<string name="connection_test_error">ইন্টারনেট সংযোগ সনাক্ত করতে ব্যর্থ: %s</string>
<string name="connection_test_fail">ইন্টারনেট উপলব্ধ নয়</string>

View File

@@ -81,6 +81,7 @@
<string name="server_lab_encryption">رزم نگاری</string>
<string name="server_lab_flow">جریان</string>
<string name="server_lab_public_key">کیلیت پوی وولاتی</string>
<string name="server_lab_preshared_key">PreSharedKey(optional)</string>
<string name="server_lab_short_id">ShortId</string>
<string name="server_lab_spider_x">SpiderX</string>
<string name="server_lab_secret_key">کیلیت سیخومی</string>
@@ -258,6 +259,10 @@
<string name="filter_config_all">پوی جرگیل</string>
<string name="title_del_duplicate_config_count">پاک کردن %d کانفیگ تکراری</string>
<string name="title_del_config_count">Delete %d configurations</string>
<string name="title_import_config_count">Import %d configurations</string>
<string name="title_export_config_count">Export %d configurations</string>
<string name="title_update_config_count">Update %d configurations</string>
<string name="tasker_start_service">ره وندن خدمات</string>
<string name="tasker_setting_confirm">قوۊل</string>
@@ -285,6 +290,7 @@
<string name="connection_test_pending">منپیزن واجۊری کوݩ</string>
<string name="connection_test_testing">هونی آزمایش ابۊ…</string>
<string name="connection_test_testing_count">Testing %d configurations…</string>
<string name="connection_test_available">مووفق بی: منپیز HTTP %dms تۊل کشی</string>
<string name="connection_test_error">منپیز و اینترنتن نجوست: %s</string>
<string name="connection_test_fail">اینترنت من دسرس نؽ</string>

View File

@@ -256,6 +256,10 @@
<string name="filter_config_all">همه گروه‌های اشتراک</string>
<string name="title_del_duplicate_config_count">حذف %d کانفیگ تکراری</string>
<string name="title_del_config_count">حذف %d کانفیگ</string>
<string name="title_import_config_count">وارد کردن %d کانفیگ</string>
<string name="title_export_config_count">صادر کردن %d کانفیگ</string>
<string name="title_update_config_count">آپدیت کردن %d کانفیگ</string>
<string name="tasker_start_service">شروع خدمات</string>
<string name="tasker_setting_confirm">تایید</string>
@@ -283,6 +287,7 @@
<string name="connection_test_pending">اتصال را بررسی کنید</string>
<string name="connection_test_testing">در حال آزمایش...</string>
<string name="connection_test_testing_count">تست کردن %d کانفیگ…</string>
<string name="connection_test_available">موفقیت: اتصال HTTP %dms طول کشید</string>
<string name="connection_test_error">اتصال به اینترنت شناسایی نشد: %s</string>
<string name="connection_test_fail">اینترنت در دسترس نیست</string>

View File

@@ -258,6 +258,10 @@
<string name="filter_config_all">Все группы</string>
<string name="title_del_duplicate_config_count">Удалено дубликатов профилей: %d</string>
<string name="title_del_config_count">Delete %d configurations</string>
<string name="title_import_config_count">Import %d configurations</string>
<string name="title_export_config_count">Export %d configurations</string>
<string name="title_update_config_count">Update %d configurations</string>
<string name="tasker_start_service">Запуск службы</string>
<string name="tasker_setting_confirm">Подтвердить</string>
@@ -285,6 +289,7 @@
<string name="connection_test_pending">Проверить подключение</string>
<string name="connection_test_testing">Проверка…</string>
<string name="connection_test_testing_count">Testing %d configurations…</string>
<string name="connection_test_available">Успешно: HTTP-соединение заняло %d мс</string>
<string name="connection_test_error">Сбой проверки интернет-соединения: %s</string>
<string name="connection_test_fail">Интернет недоступен</string>

View File

@@ -80,6 +80,7 @@
<string name="server_lab_encryption">Mã hóa</string>
<string name="server_lab_flow">Kiểm soát lưu lượng (Flow)</string>
<string name="server_lab_public_key">PublicKey</string>
<string name="server_lab_preshared_key">PreSharedKey(optional)</string>
<string name="server_lab_short_id">ShortId</string>
<string name="server_lab_spider_x">SpiderX</string>
<string name="server_lab_secret_key">SecretKey</string>
@@ -211,6 +212,7 @@
<string name="title_privacy_policy">Chính sách bảo mật</string>
<string name="title_about">Giới thiệu</string>
<string name="title_source_code">Mã nguồn</string>
<string name="title_oss_license">Open Source licenses</string>
<string name="title_tg_channel">Kênh Telegram</string>
<string name="title_configuration_backup">Sao lưu cấu hình</string>
<string name="summary_configuration_backup">Nơi lưu trữ: [%s], bản backup sẽ được dọn dẹp sau khi xóa ứng dụng hoặc xóa bộ nhớ.</string>
@@ -256,6 +258,10 @@
<string name="filter_config_all">Hiển thị tất cả các gói đăng ký</string>
<string name="title_del_duplicate_config_count">Xoá %d cấu hình trùng lặp</string>
<string name="title_del_config_count">Delete %d configurations</string>
<string name="title_import_config_count">Import %d configurations</string>
<string name="title_export_config_count">Export %d configurations</string>
<string name="title_update_config_count">Update %d configurations</string>
<string name="tasker_start_service">Khởi động v2rayNG</string>
<string name="tasker_setting_confirm">Xác nhận</string>
@@ -275,6 +281,7 @@
<string name="connection_test_pending">Kiểm tra kết nối</string>
<string name="connection_test_testing">Đang kiểm tra kết nối mạng...</string>
<string name="connection_test_testing_count">Testing %d configurations…</string>
<string name="connection_test_available">Kiểm tra thành công: thời gian truy cập Google là %d ms</string>
<string name="connection_test_error">Lỗi kết nối mạng, hãy thử đổi cấu hình hoặc kiểm tra lại! Mã lỗi: %s</string>
<string name="connection_test_fail">Không có kết nối mạng!</string>

View File

@@ -80,6 +80,7 @@
<string name="server_lab_encryption">加密方式(encryption)</string>
<string name="server_lab_flow">流控(flow)</string>
<string name="server_lab_public_key">PublicKey</string>
<string name="server_lab_preshared_key">PreSharedKey(optional)</string>
<string name="server_lab_short_id">ShortId</string>
<string name="server_lab_spider_x">SpiderX</string>
<string name="server_lab_secret_key">SecretKey</string>
@@ -207,6 +208,7 @@
<string name="title_privacy_policy">隐私权政策</string>
<string name="title_about">关于</string>
<string name="title_source_code">源代码</string>
<string name="title_oss_license">Open Source licenses</string>
<string name="title_tg_channel">Telegram 频道</string>
<string name="title_configuration_backup">备份配置</string>
<string name="summary_configuration_backup">存储位置: [%s], 卸载App或清除存储后备份将被清除</string>
@@ -253,6 +255,10 @@
<string name="filter_config_all">所有分组</string>
<string name="title_del_duplicate_config_count">删除 %d 个重复配置</string>
<string name="title_del_config_count">删除 %d 个配置</string>
<string name="title_import_config_count">导入 %d 个配置</string>
<string name="title_export_config_count">导出 %d 个配置</string>
<string name="title_update_config_count">更新 %d 个配置</string>
<string name="tasker_start_service">启动服务</string>
<string name="tasker_setting_confirm">确定</string>
@@ -272,6 +278,7 @@
<string name="connection_test_pending">"检查网络连接"</string>
<string name="connection_test_testing">"测试中…"</string>
<string name="connection_test_testing_count">测试 %d 个配置中…</string>
<string name="connection_test_available">"连接成功:延时 %d 毫秒"</string>
<string name="connection_test_error">"失败:%s"</string>
<string name="connection_test_fail">"无互联网连接"</string>

View File

@@ -80,6 +80,7 @@
<string name="server_lab_encryption">加密 (encryption)</string>
<string name="server_lab_flow">流程 (flow)</string>
<string name="server_lab_public_key">PublicKey</string>
<string name="server_lab_preshared_key">PreSharedKey(optional)</string>
<string name="server_lab_short_id">ShortId</string>
<string name="server_lab_spider_x">SpiderX</string>
<string name="server_lab_secret_key">SecretKey</string>
@@ -209,6 +210,7 @@
<string name="title_privacy_policy">隱私權政策</string>
<string name="title_about">關於</string>
<string name="title_source_code">原始碼</string>
<string name="title_oss_license">Open Source licenses</string>
<string name="title_tg_channel">Telegram 頻道</string>
<string name="title_configuration_backup">備份設定</string>
<string name="summary_configuration_backup">儲存位置: [%s], 卸載App或清除儲存後備份將被清除</string>
@@ -253,8 +255,12 @@
<string name="title_sort_by_test_results">依偵測結果排序</string>
<string name="title_filter_config">過濾設定</string>
<string name="filter_config_all">所有分組</string>
<string name="title_del_duplicate_config_count">Delete %d duplicate configurations</string>
<string name="title_del_duplicate_config_count">删除 %d 个重复配置</string>
<string name="title_del_config_count">删除 %d 个配置</string>
<string name="title_import_config_count">导入 %d 个配置</string>
<string name="title_export_config_count">导出 %d 个配置</string>
<string name="title_update_config_count">更新 %d 个配置</string>
<string name="tasker_start_service">啟動服務</string>
<string name="tasker_setting_confirm">確定</string>
@@ -274,6 +280,7 @@
<string name="connection_test_pending">"測試連線能力"</string>
<string name="connection_test_testing">"測試中……"</string>
<string name="connection_test_testing_count">測試 %d 个配置中…</string>
<string name="connection_test_available">"成功:%d ms延遲"</string>
<string name="connection_test_error">"測試網際網路連線失敗:%s"</string>
<string name="connection_test_fail">"無法使用網際網路"</string>

View File

@@ -260,6 +260,10 @@
<string name="title_filter_config">Filter configuration file</string>
<string name="filter_config_all">All groups</string>
<string name="title_del_duplicate_config_count">Delete %d duplicate configurations</string>
<string name="title_del_config_count">Delete %d configurations</string>
<string name="title_import_config_count">Import %d configurations</string>
<string name="title_export_config_count">Export %d configurations</string>
<string name="title_update_config_count">Update %d configurations</string>
<string name="tasker_start_service">Start Service</string>
<string name="tasker_setting_confirm">Confirm</string>
@@ -288,6 +292,7 @@
<string name="connection_test_pending">Check Connectivity</string>
<string name="connection_test_testing">Testing…</string>
<string name="connection_test_testing_count">Testing %d configurations…</string>
<string name="connection_test_available">Success: HTTP connection took %dms</string>
<string name="connection_test_error">Fail to detect internet connection: %s</string>
<string name="connection_test_fail">Internet Unavailable</string>

View File

@@ -710,6 +710,9 @@ asio::error_code CliConnection::OnReadHttpRequest(std::shared_ptr<IOBuf> buf) {
}
http_is_keep_alive_ = false;
DCHECK_EQ(0, http_keep_alive_remaining_bytes_);
http_keep_alive_remaining_bytes_ = 0;
DCHECK(!http_keep_alive_pending_buf_);
if (ok) {
buf->trimStart(nparsed);
@@ -726,7 +729,20 @@ asio::error_code CliConnection::OnReadHttpRequest(std::shared_ptr<IOBuf> buf) {
buf->prepend(header.size());
memcpy(buf->mutable_data(), header.c_str(), header.size());
http_is_keep_alive_ = gurl_base::CompareCaseInsensitiveASCII(parser.connection(), "Keep-Alive"sv) == 0;
http_keep_alive_remaining_bytes_ += parser.content_length() + header.size() - buf->length();
http_keep_alive_remaining_bytes_ = parser.content_length() + header.size() - buf->length();
if (http_is_keep_alive_ && http_keep_alive_remaining_bytes_ < 0) {
VLOG(2) << "Connection (client) " << connection_id() << " http keepalive request splited";
// split buf into two buffers
// buf -> (request_size)
// http_keep_alive_pending_buf_ -> (bytes after request_size)
auto request_size = parser.content_length() + header.size();
http_keep_alive_remaining_bytes_ = 0u;
http_keep_alive_pending_buf_ =
IOBuf::copyBuffer(buf->data() + request_size, buf->length() - request_size, 0, 0);
buf->trimEnd(buf->length() - request_size);
DCHECK_EQ(buf->length(), request_size);
// FIXME yield to resume http handling
}
VLOG(3) << "Connection (client) " << connection_id() << " Host: " << http_host_ << " Port: " << http_port_
<< " KEEPALIVE: " << std::boolalpha << http_is_keep_alive_;
if (parser.transfer_encoding_is_chunked()) {
@@ -749,6 +765,41 @@ asio::error_code CliConnection::OnReadHttpRequest(std::shared_ptr<IOBuf> buf) {
return asio::error::invalid_argument;
}
asio::error_code CliConnection::OnReadHttpRequestAfterReuse(std::shared_ptr<IOBuf>& buf) {
DCHECK(http_is_keep_alive_);
DCHECK_EQ(http_host_, request_.domain_name());
DCHECK_EQ(http_port_, request_.port());
auto ec = OnReadHttpRequest(buf);
if (ec) {
return ec;
}
if (http_is_connect_) {
return asio::error::invalid_argument;
}
DCHECK(!buf->empty());
// request_ isn't updated after OnReadHttpRequest(),
// so we are safe to use it to tell whether the new destination is different
if (request_.domain_name() != http_host_ || request_.port() != http_port_) {
LOG(INFO) << "Connection (client) " << connection_id() << " re-used";
upstream_readable_ = false;
upstream_writable_ = false;
request_ = {};
channel_->close();
channel_.reset();
OnStreamRead(std::move(buf));
DCHECK(!buf);
ec = PerformCmdOpsHttp();
if (ec) {
return ec;
}
SetState(state_stream);
return asio::error::try_again;
}
LOG(INFO) << "Connection (client) " << connection_id() << " connect (re-used) " << remote_domain();
SetState(state_stream);
return asio::error_code();
}
void CliConnection::WaitStreamError() {
scoped_refptr<CliConnection> self(this);
downlink_->async_wait_error([this, self](asio::error_code ec) {
@@ -1705,8 +1756,23 @@ std::shared_ptr<IOBuf> CliConnection::GetNextUpstreamBuf(asio::error_code& ec,
}
#endif
// if we have read previously in OnReadHttpRequestAfterReuse
if (http_is_keep_alive_ && http_keep_alive_pending_buf_) {
VLOG(2) << "Connection (client) " << connection_id() << " http keepalive splited request resumed";
buf = std::move(http_keep_alive_pending_buf_);
read = buf->length();
DCHECK(!http_keep_alive_pending_buf_);
goto after_read;
}
do {
// sometimes we need to read from here
if (http_is_keep_alive_ && http_keep_alive_previous_buf_) {
buf = std::move(http_keep_alive_previous_buf_);
DCHECK(!http_keep_alive_previous_buf_);
} else {
buf = IOBuf::create(SOCKET_BUF_SIZE);
}
read = downlink_->socket_.read_some(tail_buffer(*buf, SOCKET_BUF_SIZE), ec);
if (ec == asio::error::interrupted) {
continue;
@@ -1729,6 +1795,7 @@ std::shared_ptr<IOBuf> CliConnection::GetNextUpstreamBuf(asio::error_code& ec,
goto out;
}
after_read:
if (!channel_ || !channel_->connected()) {
OnStreamRead(buf);
ec = asio::error::try_again;
@@ -1736,49 +1803,30 @@ std::shared_ptr<IOBuf> CliConnection::GetNextUpstreamBuf(asio::error_code& ec,
}
if (http_is_keep_alive_) {
if (http_keep_alive_remaining_bytes_ < (int64_t)read) {
DCHECK_EQ(http_host_, request_.domain_name());
DCHECK_EQ(http_port_, request_.port());
ec = OnReadHttpRequest(buf);
if (ec) {
return nullptr;
}
if (http_is_connect_) {
ec = asio::error::invalid_argument;
return nullptr;
}
if (buf->empty()) {
buf.reset();
}
// request_ isn't updated after OnReadHttpRequest(),
// so we are safe to use it to tell whether the new destination is different
if (request_.domain_name() != http_host_ || request_.port() != http_port_) {
LOG(INFO) << "Connection (client) " << connection_id() << " re-used";
upstream_readable_ = false;
upstream_writable_ = false;
request_ = {};
channel_->close();
channel_.reset();
if (buf) {
OnStreamRead(buf);
buf.reset();
}
ec = PerformCmdOpsHttp();
if (ec) {
return nullptr;
}
SetState(state_stream);
if (http_keep_alive_remaining_bytes_ == 0) {
ec = OnReadHttpRequestAfterReuse(buf);
/* use a small number to remind of incomplete request */
if (ec == asio::error::invalid_argument && buf->length() < 64u * 1024) {
http_keep_alive_previous_buf_ = std::move(buf);
DCHECK(!buf);
ec = asio::error::try_again;
return nullptr;
}
LOG(INFO) << "Connection (client) " << connection_id() << " connect (re-used) " << remote_domain();
SetState(state_stream);
if (!buf) {
ec = asio::error::try_again;
if (ec) {
return nullptr;
}
} else if (http_keep_alive_remaining_bytes_ < (int64_t)read) {
VLOG(2) << "Connection (client) " << connection_id()
<< " http keepalive consumed: " << http_keep_alive_remaining_bytes_;
DCHECK_GE(http_keep_alive_remaining_bytes_, 0);
DCHECK_EQ(read, buf->length());
DCHECK(!http_keep_alive_pending_buf_);
http_keep_alive_pending_buf_ = IOBuf::copyBuffer(buf->data() + http_keep_alive_remaining_bytes_,
buf->length() - http_keep_alive_remaining_bytes_);
buf->trimEnd(buf->length() - http_keep_alive_remaining_bytes_);
http_keep_alive_remaining_bytes_ = 0;
} else {
VLOG(2) << "Connection (client) " << connection_id() << " http keepalive consumed: " << read;
http_keep_alive_remaining_bytes_ -= read;
}
}

View File

@@ -277,6 +277,8 @@ class CliConnection : public gurl_base::RefCountedThreadSafe<CliConnection>,
asio::error_code OnReadSocks4Handshake(std::shared_ptr<IOBuf> buf);
/// Start to read http handshake request
asio::error_code OnReadHttpRequest(std::shared_ptr<IOBuf> buf);
/// Start to read http handshake request (after reuse)
asio::error_code OnReadHttpRequestAfterReuse(std::shared_ptr<IOBuf>& buf);
/// Start wait error on stream
void WaitStreamError();
@@ -356,6 +358,10 @@ class CliConnection : public gurl_base::RefCountedThreadSafe<CliConnection>,
bool http_is_keep_alive_ = false;
/// copy of remaining bytes in keep alive cycle
int64_t http_keep_alive_remaining_bytes_ = 0;
/// remaining buffer for unhandled http keep-alive requests
std::shared_ptr<IOBuf> http_keep_alive_pending_buf_;
/// previous buffer for an incomplete http keep-alive request
std::shared_ptr<IOBuf> http_keep_alive_previous_buf_;
/// copy of upstream request
ss::request request_;

View File

@@ -372,6 +372,7 @@ void HttpRequestParser::HeaderDone() {
if (status_ == ParserStatus::Error) {
return;
}
status_ = ParserStatus::Ok;
headers_done_ = true;
}
@@ -381,6 +382,7 @@ void HttpRequestParser::MessageDone() {
if (status_ == ParserStatus::Error) {
return;
}
status_ = ParserStatus::Ok;
framer_.Reset();
first_byte_processed_ = false;
headers_done_ = false;

View File

@@ -112,7 +112,7 @@ class HttpRequestParser : public quiche::BalsaVisitorInterface {
bool first_byte_processed_ = false;
bool headers_done_ = false;
ParserStatus status_ = ParserStatus::Ok;
ParserStatus status_ = ParserStatus::Paused;
int status_code_ = 0;
// An error message, often seemingly arbitrary to match http-parser behavior.
std::string_view error_message_;

View File

@@ -707,3 +707,6 @@ Sakura286
SamDecrock
stratus-ss
subrat-lima
gitninja1234
jkruse
xiaomac

View File

@@ -4,6 +4,42 @@
# To create a release, dispatch the https://github.com/yt-dlp/yt-dlp/actions/workflows/release.yml workflow on master
-->
### 2024.12.03
#### Core changes
- [Add `playlist_webpage_url` field](https://github.com/yt-dlp/yt-dlp/commit/7d6c259a03bc4707a319e5e8c6eff0278707874b) ([#11613](https://github.com/yt-dlp/yt-dlp/issues/11613)) by [seproDev](https://github.com/seproDev)
#### Extractor changes
- [Handle fragmented formats in `_remove_duplicate_formats`](https://github.com/yt-dlp/yt-dlp/commit/e0500cbf796323551bbabe5b8ed8c75a511ba47a) ([#11637](https://github.com/yt-dlp/yt-dlp/issues/11637)) by [Grub4K](https://github.com/Grub4K)
- **bilibili**
- [Always try to extract HD formats](https://github.com/yt-dlp/yt-dlp/commit/dc1687648077c5bf64863b307ecc5ab7e029bd8d) ([#10559](https://github.com/yt-dlp/yt-dlp/issues/10559)) by [grqz](https://github.com/grqz)
- [Fix extractor](https://github.com/yt-dlp/yt-dlp/commit/239f5f36fe04603bec59c8b975f6a792f10246db) ([#11667](https://github.com/yt-dlp/yt-dlp/issues/11667)) by [grqz](https://github.com/grqz) (With fixes in [f05a1cd](https://github.com/yt-dlp/yt-dlp/commit/f05a1cd1492fc98dc8d80d2081d632a1879913d2) by [bashonly](https://github.com/bashonly), [grqz](https://github.com/grqz))
- [Fix subtitles and chapters extraction](https://github.com/yt-dlp/yt-dlp/commit/a13a336aa6f906812701abec8101b73b73db8ff7) ([#11708](https://github.com/yt-dlp/yt-dlp/issues/11708)) by [xiaomac](https://github.com/xiaomac)
- **chaturbate**: [Fix support for non-public streams](https://github.com/yt-dlp/yt-dlp/commit/4b5eec0aaa7c02627f27a386591b735b90e681a8) ([#11624](https://github.com/yt-dlp/yt-dlp/issues/11624)) by [jkruse](https://github.com/jkruse)
- **dacast**: [Fix HLS AES formats extraction](https://github.com/yt-dlp/yt-dlp/commit/0a0d80800b9350d1a4c4b18d82cfb77ffbc3c507) ([#11644](https://github.com/yt-dlp/yt-dlp/issues/11644)) by [bashonly](https://github.com/bashonly)
- **dropbox**: [Fix password-protected video extraction](https://github.com/yt-dlp/yt-dlp/commit/00dcde728635633eee969ad4d498b9f233c4a94e) ([#11636](https://github.com/yt-dlp/yt-dlp/issues/11636)) by [bashonly](https://github.com/bashonly)
- **duoplay**: [Fix extractor](https://github.com/yt-dlp/yt-dlp/commit/62cba8a1bedbfc0ddde7267ae57b72bf5f7ea7b1) ([#11588](https://github.com/yt-dlp/yt-dlp/issues/11588)) by [bashonly](https://github.com/bashonly), [glensc](https://github.com/glensc)
- **facebook**: [Support more groups URLs](https://github.com/yt-dlp/yt-dlp/commit/e0f1ae813b36e783e2348ba2a1566e12f5cd8f6e) ([#11576](https://github.com/yt-dlp/yt-dlp/issues/11576)) by [grqz](https://github.com/grqz)
- **instagram**: [Support `share` URLs](https://github.com/yt-dlp/yt-dlp/commit/360aed810ad85db950df586282d256516c98cd2d) ([#11677](https://github.com/yt-dlp/yt-dlp/issues/11677)) by [grqz](https://github.com/grqz)
- **microsoftembed**: [Make format extraction non fatal](https://github.com/yt-dlp/yt-dlp/commit/2bea7936323ca4b6f3b9b1fdd892566223e30efa) ([#11654](https://github.com/yt-dlp/yt-dlp/issues/11654)) by [seproDev](https://github.com/seproDev)
- **mitele**: [Fix extractor](https://github.com/yt-dlp/yt-dlp/commit/cd0f934604587ed793e9177f6a127e5dcf99a7dd) ([#11683](https://github.com/yt-dlp/yt-dlp/issues/11683)) by [DarkZeros](https://github.com/DarkZeros)
- **stripchat**: [Fix extractor](https://github.com/yt-dlp/yt-dlp/commit/16336c51d0848a6868a4fa04e749fa03548b4913) ([#11596](https://github.com/yt-dlp/yt-dlp/issues/11596)) by [gitninja1234](https://github.com/gitninja1234)
- **tiktok**: [Deprioritize animated thumbnails](https://github.com/yt-dlp/yt-dlp/commit/910ecc422930bca14e2abe4986f5f92359e3cea8) ([#11645](https://github.com/yt-dlp/yt-dlp/issues/11645)) by [bashonly](https://github.com/bashonly)
- **vk**: [Fix extractors](https://github.com/yt-dlp/yt-dlp/commit/c038a7b187ba24360f14134842a7a2cf897c33b1) ([#11715](https://github.com/yt-dlp/yt-dlp/issues/11715)) by [bashonly](https://github.com/bashonly)
- **youtube**
- [Adjust player clients for site changes](https://github.com/yt-dlp/yt-dlp/commit/0d146c1e36f467af30e87b7af651bdee67b73500) ([#11663](https://github.com/yt-dlp/yt-dlp/issues/11663)) by [bashonly](https://github.com/bashonly)
- tab: [Fix playlists tab extraction](https://github.com/yt-dlp/yt-dlp/commit/fe70f20aedf528fdee332131bc9b6710e54e6f10) ([#11615](https://github.com/yt-dlp/yt-dlp/issues/11615)) by [seproDev](https://github.com/seproDev)
#### Networking changes
- **Request Handler**: websockets: [Support websockets 14.0+](https://github.com/yt-dlp/yt-dlp/commit/c7316373c0a886f65a07a51e50ee147bb3294c85) ([#11616](https://github.com/yt-dlp/yt-dlp/issues/11616)) by [coletdjnz](https://github.com/coletdjnz)
#### Misc. changes
- **cleanup**
- [Bump ruff to 0.8.x](https://github.com/yt-dlp/yt-dlp/commit/d8fb3490863653182864d2a53522f350d67a9ff8) ([#11608](https://github.com/yt-dlp/yt-dlp/issues/11608)) by [seproDev](https://github.com/seproDev)
- Miscellaneous
- [ccf0a6b](https://github.com/yt-dlp/yt-dlp/commit/ccf0a6b86b7f68a75463804fe485ec240b8635f0) by [bashonly](https://github.com/bashonly), [pzhlkj6612](https://github.com/pzhlkj6612)
- [2b67ac3](https://github.com/yt-dlp/yt-dlp/commit/2b67ac300ac8b44368fb121637d1743cea8c5b6b) by [bashonly](https://github.com/bashonly), [seproDev](https://github.com/seproDev)
### 2024.11.18
#### Important changes

View File

@@ -195,7 +195,10 @@ def _extract_firefox_cookies(profile, container, logger):
def _firefox_browser_dirs():
if sys.platform in ('cygwin', 'win32'):
yield os.path.expandvars(R'%APPDATA%\Mozilla\Firefox\Profiles')
yield from map(os.path.expandvars, (
R'%APPDATA%\Mozilla\Firefox\Profiles',
R'%LOCALAPPDATA%\Packages\Mozilla.Firefox_n80bbvh6b1yt2\LocalCache\Roaming\Mozilla\Firefox\Profiles',
))
elif sys.platform == 'darwin':
yield os.path.expanduser('~/Library/Application Support/Firefox/Profiles')

View File

@@ -232,7 +232,7 @@ Format: Marked,Start,End,Style,Name,MarginL,MarginR,MarginV,Effect,Text'''
error = self._parse_json(e.cause.response.read(), video_id)
message = error.get('message')
if e.cause.code == 403 and error.get('code') == 'player-bad-geolocation-country':
if e.cause.status == 403 and error.get('code') == 'player-bad-geolocation-country':
self.raise_geo_restricted(msg=message)
raise ExtractorError(message)
else:

View File

@@ -1,7 +1,4 @@
import time
from .common import InfoExtractor
from ..networking import HEADRequest
from ..utils import int_or_none
@@ -31,9 +28,6 @@ class CultureUnpluggedIE(InfoExtractor):
video_id = mobj.group('id')
display_id = mobj.group('display_id') or video_id
# request setClientTimezone.php to get PHPSESSID cookie which is need to get valid json data in the next request
self._request_webpage(HEADRequest(
'http://www.cultureunplugged.com/setClientTimezone.php?timeOffset=%d' % -(time.timezone / 3600)), display_id)
movie_data = self._download_json(
f'http://www.cultureunplugged.com/movie-data/cu-{video_id}.json', display_id)

View File

@@ -1,4 +1,5 @@
from .common import InfoExtractor
from ..networking.exceptions import HTTPError
from ..utils import (
ExtractorError,
traverse_obj,
@@ -110,8 +111,8 @@ class PixivSketchUserIE(PixivSketchBaseIE):
if not traverse_obj(data, 'is_broadcasting'):
try:
self._call_api(user_id, 'users/current.json', url, 'Investigating reason for request failure')
except ExtractorError as ex:
if ex.cause and ex.cause.code == 401:
except ExtractorError as e:
if isinstance(e.cause, HTTPError) and e.cause.status == 401:
self.raise_login_required(f'Please log in, or use direct link like https://sketch.pixiv.net/@{user_id}/1234567890', method='cookies')
raise ExtractorError('This user is offline', expected=True)

View File

@@ -1,8 +1,8 @@
# Autogenerated by devscripts/update-version.py
__version__ = '2024.11.18'
__version__ = '2024.12.03'
RELEASE_GIT_HEAD = '7ea2787920cccc6b8ea30791993d114fbd564434'
RELEASE_GIT_HEAD = '2b67ac300ac8b44368fb121637d1743cea8c5b6b'
VARIANT = None
@@ -12,4 +12,4 @@ CHANNEL = 'stable'
ORIGIN = 'yt-dlp/yt-dlp'
_pkg_version = '2024.11.18'
_pkg_version = '2024.12.03'