From 14f5c9168a123ec883dccedf29d8899d1e8d4bb7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 23 Jul 2026 00:00:40 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=84=20Sync=202026-07-23=2000:00:40?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- luci-app-cpu-status/Makefile | 2 +- luci-app-cpu-status/po/pl/cpu-status.po | 58 +++ luci-app-passwall/Makefile | 2 +- .../cbi/passwall/client/type/sing-box.lua | 4 + .../luasrc/passwall/util_sing-box.lua | 1 + .../luasrc/passwall/util_xray.lua | 6 +- .../passwall/node_config/link_share_man.htm | 4 +- luci-app-passwall/po/zh-cn/passwall.po | 3 + .../usr/share/passwall/clash_subconverter.lua | 2 + .../root/usr/share/passwall/subscribe.lua | 3 +- .../components/{_search.css => _palette.css} | 43 +- luci-theme-aurora/.dev/src/media/main.css | 2 +- .../.dev/src/resource/menu-aurora.js | 372 +++++++++++++----- .../.dev/tests/command-palette.test.js | 176 +++++++++ luci-theme-aurora/.dev/vite.config.ts | 35 +- luci-theme-aurora/Makefile | 4 +- .../htdocs/luci-static/aurora/login.css | 2 +- .../htdocs/luci-static/aurora/main.css | 2 +- .../luci-static/resources/menu-aurora.js | 2 +- .../ucode/template/themes/aurora/header.ut | 2 +- 20 files changed, 582 insertions(+), 143 deletions(-) create mode 100644 luci-app-cpu-status/po/pl/cpu-status.po rename luci-theme-aurora/.dev/src/media/components/{_search.css => _palette.css} (79%) create mode 100644 luci-theme-aurora/.dev/tests/command-palette.test.js diff --git a/luci-app-cpu-status/Makefile b/luci-app-cpu-status/Makefile index bd6edf36..e6cbd302 100644 --- a/luci-app-cpu-status/Makefile +++ b/luci-app-cpu-status/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-cpu-status PKG_VERSION:=0.6.3 -PKG_RELEASE:=2 +PKG_RELEASE:=3 LUCI_TITLE:=CPU utilization info for the LuCI status page LUCI_PKGARCH:=all PKG_LICENSE:=MIT diff --git a/luci-app-cpu-status/po/pl/cpu-status.po b/luci-app-cpu-status/po/pl/cpu-status.po new file mode 100644 index 00000000..9229f35d --- /dev/null +++ b/luci-app-cpu-status/po/pl/cpu-status.po @@ -0,0 +1,58 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.3\n" +"Last-Translator: \n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" +"Language: pl\n" + +msgid "(%d minute window, %d second interval)" +msgstr "(%d minutowe okno, %d sekundowy interwał)" + +msgid "All CPUs" +msgstr "Wszystkie procesory" + +msgid "Average:" +msgstr "Średnia:" + +msgid "Calculating" +msgstr "Obliczanie" + +msgid "CPU" +msgstr "Procesor" + +msgid "CPU Load" +msgstr "Obciążenie procesora" + +msgid "CPU load" +msgstr "Obciążenie procesora" + +msgid "Detailed load" +msgstr "Szczegółowe obciążenie" + +msgid "Detailed load of each CPU" +msgstr "Szczegółowe obciążenie każdego procesora" + +msgid "Load" +msgstr "Obciążenie" + +msgid "Load of each CPU" +msgstr "Obciążenie każdego procesora" + +msgid "Peak:" +msgstr "Szczytowe:" + +msgid "This page displays the average CPU load at %d second interval." +msgstr "Ta strona wyświetla średnie obciążenie procesora w %d sekundowych odstępach." + +msgid "Total" +msgstr "Łącznie" + +msgid "Total load" +msgstr "Łączne obciążenie" diff --git a/luci-app-passwall/Makefile b/luci-app-passwall/Makefile index 68fd3b8c..a2410b07 100644 --- a/luci-app-passwall/Makefile +++ b/luci-app-passwall/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-passwall PKG_VERSION:=26.7.16 -PKG_RELEASE:=190 +PKG_RELEASE:=191 PKG_PO_VERSION:=$(PKG_VERSION) PKG_CONFIG_DEPENDS:= \ diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/type/sing-box.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/type/sing-box.lua index 439cfb71..41b285c0 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/type/sing-box.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/type/sing-box.lua @@ -590,6 +590,10 @@ if singbox_tags:find("with_utls") then o:depends({ [_n("reality")] = true }) end +o = s:option(Flag, _n("anytls_disable_reuse"), translate("Disable TLS Reuse")) +o.default = 0 +o:depends({ [_n("protocol")] = "anytls" }) + o = s:option(ListValue, _n("transport"), translate("Transport")) o:value("tcp", "TCP") o:value("http", "HTTP") diff --git a/luci-app-passwall/luasrc/passwall/util_sing-box.lua b/luci-app-passwall/luasrc/passwall/util_sing-box.lua index f4d08d60..3ce1303d 100644 --- a/luci-app-passwall/luasrc/passwall/util_sing-box.lua +++ b/luci-app-passwall/luasrc/passwall/util_sing-box.lua @@ -613,6 +613,7 @@ function gen_outbound(flag, node, tag, proxy_table) idle_session_check_interval = "30s", idle_session_timeout = "30s", min_idle_session = 5, + disable_reuse = (node.anytls_disable_reuse == "1") and true or nil, tls = tls } end diff --git a/luci-app-passwall/luasrc/passwall/util_xray.lua b/luci-app-passwall/luasrc/passwall/util_xray.lua index c0f20f84..8ded862f 100644 --- a/luci-app-passwall/luasrc/passwall/util_xray.lua +++ b/luci-app-passwall/luasrc/passwall/util_xray.lua @@ -1049,7 +1049,7 @@ function gen_config(var) api.log(" - 加载 Xray 负载均衡 节点【" .. (_node.remarks or "") .. "】,子节点数量:" .. #(blc_nodes or {})) - local valid_nodes, valid_fallback = {}, true + local valid_nodes = {} for i = 1, #(blc_nodes or {}) do local blc_node_id = blc_nodes[i] local blc_node_tag = "blc-" .. blc_node_id @@ -1069,14 +1069,14 @@ function gen_config(var) end -- Check if balancing node duplicates fallback node if _node.fallback_node == blc_node_id then - valid_fallback = false + _node.fallback_node = nil end end if #valid_nodes == 0 then return nil end -- fallback node local fallback_node_id = _node.fallback_node - fallback_node_id = (valid_fallback and fallback_node_id and fallback_node_id ~= "") and fallback_node_id or nil + fallback_node_id = (fallback_node_id and fallback_node_id ~= "") and fallback_node_id or nil local fallback_node_tag = (fallback_node_id == "_direct") and "direct" or "blackhole" if fallback_node_id and fallback_node_id ~= "_direct" then local is_new_node = true diff --git a/luci-app-passwall/luasrc/view/passwall/node_config/link_share_man.htm b/luci-app-passwall/luasrc/view/passwall/node_config/link_share_man.htm index 0aafedfe..d7c8910c 100644 --- a/luci-app-passwall/luasrc/view/passwall/node_config/link_share_man.htm +++ b/luci-app-passwall/luasrc/view/passwall/node_config/link_share_man.htm @@ -1749,7 +1749,7 @@ local current_node = map:get(section) opt.set(dom_prefix + 'tls', true); opt.set(dom_prefix + 'reality', false); opt.set(dom_prefix + 'alpn', queryParam.alpn || 'default'); - opt.set(dom_prefix + 'tls_serverName', queryParam.sni || ''); + opt.set(dom_prefix + 'tls_serverName', queryParam.sni || queryParam.peer || ''); opt.set(dom_prefix + 'tls_allowInsecure', !((queryParam.allowinsecure ?? '0') === '0' && (queryParam.insecure ?? '0') === '0')); if (queryParam.fp && queryParam.fp.trim() != "") { opt.set(dom_prefix + 'utls', true); @@ -1760,7 +1760,7 @@ local current_node = map:get(section) opt.set(dom_prefix + 'tls', true); opt.set(dom_prefix + 'reality', true); opt.set(dom_prefix + 'alpn', queryParam.alpn || 'default'); - opt.set(dom_prefix + 'tls_serverName', queryParam.sni || ''); + opt.set(dom_prefix + 'tls_serverName', queryParam.sni || queryParam.peer || ''); if (queryParam.fp && queryParam.fp.trim() != "") { opt.set(dom_prefix + 'utls', true); opt.set(dom_prefix + 'fingerprint', queryParam.fp); diff --git a/luci-app-passwall/po/zh-cn/passwall.po b/luci-app-passwall/po/zh-cn/passwall.po index d27b2950..8a811930 100644 --- a/luci-app-passwall/po/zh-cn/passwall.po +++ b/luci-app-passwall/po/zh-cn/passwall.po @@ -2195,3 +2195,6 @@ msgstr "Gecko 包大小(最大)" msgid "valid time (hh:mm)" msgstr "有效时间(hh:mm)" + +msgid "Disable TLS Reuse" +msgstr "禁用 TLS 连接复用" diff --git a/luci-app-passwall/root/usr/share/passwall/clash_subconverter.lua b/luci-app-passwall/root/usr/share/passwall/clash_subconverter.lua index 009ec2c5..965f0486 100644 --- a/luci-app-passwall/root/usr/share/passwall/clash_subconverter.lua +++ b/luci-app-passwall/root/usr/share/passwall/clash_subconverter.lua @@ -459,6 +459,8 @@ local function encode_anytls(node) table.insert(p, "insecure=" .. (o.tls.insecure and "1" or "0")) end + if node["disable-reuse"] then table.insert(p, "disable_reuse=1") end + if #p > 0 then link = link .. "?" .. table.concat(p, "&") end diff --git a/luci-app-passwall/root/usr/share/passwall/subscribe.lua b/luci-app-passwall/root/usr/share/passwall/subscribe.lua index 57a1bf60..7cab8ba7 100755 --- a/luci-app-passwall/root/usr/share/passwall/subscribe.lua +++ b/luci-app-passwall/root/usr/share/passwall/subscribe.lua @@ -1562,7 +1562,7 @@ local function processData(szType, content, add_mode, group, sub_cfg) end if params.security == "tls" or params.security == "reality" then result.tls = "1" - result.tls_serverName = params.sni + result.tls_serverName = params.sni or params.peer result.alpn = params.alpn if params.fp and params.fp ~= "" then result.utls = "1" @@ -1580,6 +1580,7 @@ local function processData(szType, content, add_mode, group, sub_cfg) end result.port = port result.tls_allowInsecure = params.allowinsecure or params.insecure + result.anytls_disable_reuse = params.disable_reuse end elseif szType == 'naive+https' or szType == 'naive+quic' then if has_singbox then diff --git a/luci-theme-aurora/.dev/src/media/components/_search.css b/luci-theme-aurora/.dev/src/media/components/_palette.css similarity index 79% rename from luci-theme-aurora/.dev/src/media/components/_search.css rename to luci-theme-aurora/.dev/src/media/components/_palette.css index 9c5436a4..7ca555d5 100644 --- a/luci-theme-aurora/.dev/src/media/components/_search.css +++ b/luci-theme-aurora/.dev/src/media/components/_palette.css @@ -1,13 +1,18 @@ /** - * Header route search — Spotlight-style palette, available in all three nav - * types (sidebar / mega-menu / dropdown). The toggle sits at the header's - * right edge next to #indicators; ⌘K / Ctrl+K toggles the panel globally. + * Command palette (⌘K) — Spotlight-style, available in all three nav types + * (sidebar / mega-menu / dropdown). The trigger sits at the header's right + * edge next to #indicators; ⌘K / Ctrl+K toggles the panel globally. Class + * names mirror luci-theme-shadcn's palette so the two themes stay legible + * side by side. * * The panel is built lazily by menu-aurora.js on first open; its index is - * the navigation model the menus already render from (no extra requests). + * the navigation model the menus already render from (no extra requests) + * plus three theme-mode command rows. An empty query browses the whole + * index; typed queries rank via a fuzzy subsequence scorer; a leading ">" + * (or full-width ">") scopes the list to the command rows. */ -.header-search-toggle { +.cmdk-trigger { @apply text-text relative mr-4 grid size-8 shrink-0 cursor-pointer place-items-center rounded-lg border-0 bg-transparent p-0 shadow-none transition-colors duration-150; /* Non-sidebar headers have no mr-auto crumb absorbing the slack — pull the @@ -30,7 +35,7 @@ } } -.header-search-panel { +.cmdk-panel { @apply border-hairline bg-surface/85 fixed top-24 left-1/2 z-120 w-[min(36rem,calc(100vw-2.5rem))] -translate-x-1/2 overflow-hidden rounded-2xl border shadow-xl backdrop-blur-xl backdrop-saturate-150 transition-[opacity,translate] duration-150 ease-out starting:-translate-y-2 starting:opacity-0; /*