From 251e9e9dd1228b89a4584fee643cf1389c0e9a64 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 24 Jun 2026 20:46:52 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20Sync=202026-06-24=2020:46:52?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gowebdav/Makefile | 4 +- luci-app-easytier/Makefile | 2 +- .../luasrc/view/easytier/easytier_log.htm | 241 +++++++++++++++-- .../luasrc/view/easytier/easytier_web.htm | 254 ++++++++++++------ luci-app-easytier/root/etc/init.d/easytier | 4 +- luci-app-modeminfo/Makefile | 2 +- .../luci-static/resources/view/modem/main.js | 4 +- luci-app-passwall/Makefile | 2 +- .../cbi/passwall/client/type/hysteria2.lua | 6 + .../model/cbi/passwall/client/type/ray.lua | 6 + .../cbi/passwall/client/type/sing-box.lua | 6 + .../cbi/passwall/server/type/hysteria2.lua | 6 + .../model/cbi/passwall/server/type/ray.lua | 6 + .../cbi/passwall/server/type/sing-box.lua | 6 + luci-app-passwall/luasrc/passwall/api.lua | 22 +- luci-app-passwall/po/zh-cn/passwall.po | 3 + luci-app-run/Makefile | 4 +- .../luci-static/resources/view/run/i18n.json | 14 +- .../luci-static/resources/view/run/index.js | 134 ++++++++- .../root/etc/rpcd.d/luci-app-run.json | 6 + .../root/usr/libexec/rpcd/luci-app-run | 51 +++- openwrt-fastfetch/Makefile | 4 +- 22 files changed, 642 insertions(+), 145 deletions(-) create mode 100644 luci-app-run/root/etc/rpcd.d/luci-app-run.json diff --git a/gowebdav/Makefile b/gowebdav/Makefile index 18b39eaf3..c6e2acb8e 100644 --- a/gowebdav/Makefile +++ b/gowebdav/Makefile @@ -6,8 +6,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=gowebdav -PKG_VERSION:=5.11.10 -PKG_RELEASE:=13 +PKG_VERSION:=5.11.11 +PKG_RELEASE:=14 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/hacdias/webdav/tar.gz/v$(PKG_VERSION)? diff --git a/luci-app-easytier/Makefile b/luci-app-easytier/Makefile index 43ca199c8..c4b65d76b 100644 --- a/luci-app-easytier/Makefile +++ b/luci-app-easytier/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk -include $(dir $(lastword $(MAKEFILE_LIST)))../version.mk PKG_VERSION:=$(or $(EASYTIER_VERSION),2.6.4) -PKG_RELEASE:=10 +PKG_RELEASE:=11 LUCI_TITLE:=LuCI support for EasyTier LUCI_DEPENDS:=+kmod-tun +easytier +luci-compat diff --git a/luci-app-easytier/luasrc/view/easytier/easytier_log.htm b/luci-app-easytier/luasrc/view/easytier/easytier_log.htm index 5e6761adf..13a738120 100644 --- a/luci-app-easytier/luasrc/view/easytier/easytier_log.htm +++ b/luci-app-easytier/luasrc/view/easytier/easytier_log.htm @@ -118,16 +118,36 @@ local translate = i18n.translate flex-wrap: wrap; } +.log-wiki-link { + display: inline-flex; + align-items: center; + height: 36px; + margin-right: 8px; + flex: 0 0 auto; +} + +.log-wiki-link img { + display: block; + max-height: 20px; +} + .log-select { - padding: 8px 14px; + box-sizing: border-box; + width: auto; + min-width: 0; + height: 34px; + padding: 6px 24px 6px 10px; border: 1px solid var(--log-border); background: var(--log-bg); color: var(--log-text); border-radius: 8px; cursor: pointer; font-size: 13px; + line-height: 1.2; transition: all 0.3s ease; box-shadow: 0 2px 4px rgba(0,0,0,0.05); + flex: 0 0 auto; + max-width: 136px; } .log-select:hover, .log-select:focus { @@ -138,6 +158,12 @@ local translate = i18n.translate } .log-btn { + box-sizing: border-box; + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 0; + height: 34px; padding: 8px 16px; border: 1px solid var(--log-border); background: var(--log-bg); @@ -148,6 +174,10 @@ local translate = i18n.translate font-weight: 500; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); box-shadow: 0 2px 4px rgba(0,0,0,0.05); + flex: 0 0 auto; + white-space: nowrap; + word-break: keep-all; + overflow-wrap: normal; } .log-btn:hover { @@ -162,15 +192,65 @@ local translate = i18n.translate box-shadow: 0 2px 4px rgba(0,0,0,0.05); } -.log-btn-primary { - background: var(--tab-active); - color: white; - border-color: var(--tab-active); +.log-switch { + box-sizing: border-box; + display: inline-flex; + align-items: center; + gap: 6px; + height: 34px; + padding: 0 4px; + color: var(--log-text); + cursor: pointer; + flex: 0 0 auto; + user-select: none; + white-space: nowrap; + word-break: keep-all; + overflow-wrap: normal; } -.log-btn-primary:hover { - opacity: 0.9; - box-shadow: 0 4px 12px rgba(33,150,243,0.3); +.log-switch input { + position: absolute; + opacity: 0; + pointer-events: none; +} + +.log-switch-track { + position: relative; + width: 42px; + height: 22px; + border-radius: 999px; + background: var(--log-border); + box-shadow: inset 0 1px 3px rgba(0,0,0,0.18); + transition: background 0.2s ease, box-shadow 0.2s ease; + flex: 0 0 auto; +} + +.log-switch-track::after { + content: ''; + position: absolute; + top: 3px; + left: 3px; + width: 16px; + height: 16px; + border-radius: 50%; + background: #ffffff; + box-shadow: 0 1px 4px rgba(0,0,0,0.28); + transition: transform 0.2s ease; +} + +.log-switch input:checked + .log-switch-track { + background: var(--tab-active); + box-shadow: inset 0 1px 3px rgba(0,0,0,0.12), 0 0 0 2px rgba(33,150,243,0.16); +} + +.log-switch input:checked + .log-switch-track::after { + transform: translateX(20px); +} + +.log-switch-text { + font-size: 13px; + font-weight: 500; + line-height: 1; } .log-content { @@ -256,28 +336,129 @@ local translate = i18n.translate .log-header { flex-direction: column; align-items: stretch; - padding: 12px 16px; + padding: 10px 12px; + gap: 10px; } .log-tabs { width: 100%; - justify-content: space-around; + justify-content: flex-start; + gap: 6px; + } + + .log-tab { + padding: 7px 12px; + font-size: 12px; + border-radius: 6px; } .log-controls { width: 100%; - justify-content: space-between; + justify-content: flex-start; + align-items: center; + gap: 6px; + } + + .log-wiki-link { + height: 30px; + margin-right: 2px; + } + + .log-wiki-link img { + max-width: 96px; + } + + .log-select { + height: 28px; + max-width: 96px; + padding: 3px 18px 3px 6px; + font-size: 12px; + line-height: 1.1; + border-radius: 6px; } .log-content { - height: 400px; + height: 60vh; + min-height: 320px; font-size: 12px; - padding: 16px; + padding: 12px; } .log-btn { - flex: 1; - text-align: center; + flex: 0 0 auto; + height: 28px; + padding: 4px 8px; + font-size: 12px; + border-radius: 6px; + line-height: 1.1; + white-space: nowrap; + word-break: keep-all; + overflow-wrap: normal; + } + + .log-switch { + height: 28px; + gap: 5px; + padding: 0 2px; + } + + .log-switch-track { + width: 34px; + height: 18px; + } + + .log-switch-track::after { + top: 2px; + left: 2px; + width: 14px; + height: 14px; + } + + .log-switch input:checked + .log-switch-track::after { + transform: translateX(16px); + } + + .log-switch-text { + font-size: 12px; + } + + .log-footer { + padding: 6px 12px; + text-align: left; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } +} + +@media (max-width: 420px) { + .log-container { + border-radius: 8px; + margin: 10px 0; + } + + .log-header { + padding: 8px; + } + + .log-controls { + gap: 5px; + } + + .log-wiki-link img { + max-width: 82px; + } + + .log-select { + max-width: 88px; + } + + .log-btn { + padding: 4px 6px; + } + + .log-switch-text { + font-size: 11px; } } @@ -291,11 +472,16 @@ local translate = i18n.translate + + Ask DeepWiki +
- - Ask DeepWiki - + -
@@ -521,18 +704,20 @@ function startPolling() { }, 2000); } -function toggleAutoRefresh() { - autoRefreshEnabled = !autoRefreshEnabled; - var btn = document.getElementById('auto_refresh_btn'); +function toggleAutoRefresh(refreshNow) { + var toggle = document.getElementById('auto_refresh_toggle'); + var wrapper = document.getElementById('auto_refresh_switch'); + autoRefreshEnabled = toggle ? toggle.checked : !autoRefreshEnabled; + if (autoRefreshEnabled) { - btn.textContent = '<%=translate("Stop Auto Refresh")%>'; - btn.classList.add('log-btn-primary'); + if (wrapper) wrapper.title = '<%=translate("Stop Auto Refresh")%>'; + if (refreshNow) refreshLog(); } else { - btn.textContent = '<%=translate("Start Auto Refresh")%>'; - btn.classList.remove('log-btn-primary'); + if (wrapper) wrapper.title = '<%=translate("Start Auto Refresh")%>'; } } +toggleAutoRefresh(false); refreshLog(); startPolling(); diff --git a/luci-app-easytier/luasrc/view/easytier/easytier_web.htm b/luci-app-easytier/luasrc/view/easytier/easytier_web.htm index 967152172..e81099d43 100644 --- a/luci-app-easytier/luasrc/view/easytier/easytier_web.htm +++ b/luci-app-easytier/luasrc/view/easytier/easytier_web.htm @@ -15,6 +15,7 @@ local uci = require "luci.model.uci".cursor() --info: #2196F3; --warning: #FF9800; --hover-bg: #f5f5f5; + --field-width: 520px; } @media (prefers-color-scheme: dark) { @@ -33,17 +34,17 @@ local uci = require "luci.model.uci".cursor() .web-console-container { max-width: 1200px; - margin: 20px auto; - padding: 0 20px; + margin: 12px auto; + padding: 0 12px; } .web-card { background: var(--card-bg); border: 1px solid var(--border-color); - border-radius: 16px; - padding: 28px; - margin-bottom: 24px; - box-shadow: 0 4px 12px rgba(0,0,0,0.08); + border-radius: 10px; + padding: 18px; + margin-bottom: 16px; + box-shadow: 0 2px 8px rgba(0,0,0,0.08); transition: box-shadow 0.3s ease; } @@ -52,47 +53,47 @@ local uci = require "luci.model.uci".cursor() } .web-card h3 { - margin: 0 0 24px 0; + margin: 0 0 16px 0; color: var(--text-primary); - font-size: 20px; + font-size: 16px; font-weight: 600; - border-bottom: 3px solid var(--info); - padding-bottom: 14px; + border-bottom: 2px solid var(--info); + padding-bottom: 10px; display: flex; align-items: center; - gap: 12px; + gap: 8px; } .web-card h3::before { content: "⚙️"; - font-size: 24px; + font-size: 18px; } .form-row { display: grid; - grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); - gap: 20px; - margin-bottom: 20px; + grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); + gap: 12px; + margin-bottom: 12px; } .form-group { - margin-bottom: 24px; + margin-bottom: 14px; } .form-group label { display: block; - margin-bottom: 10px; + margin-bottom: 6px; color: var(--text-primary); font-weight: 600; - font-size: 14px; + font-size: 12px; } .form-group .description { display: block; - margin-top: 6px; + margin-top: 4px; color: var(--text-secondary); - font-size: 12px; - line-height: 1.6; + font-size: 11px; + line-height: 1.45; padding-left: 0; opacity: 0.8; } @@ -108,13 +109,17 @@ local uci = require "luci.model.uci".cursor() } .form-control { + box-sizing: border-box; width: 100%; - padding: 12px 16px; - border: 2px solid var(--border-color); - border-radius: 8px; + max-width: var(--field-width); + height: 32px; + padding: 6px 10px; + border: 1px solid var(--border-color); + border-radius: 6px; background: var(--card-bg); color: var(--text-primary); - font-size: 14px; + font-size: 12px; + line-height: 1.2; transition: all 0.2s ease; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; } @@ -122,7 +127,7 @@ local uci = require "luci.model.uci".cursor() .form-control:focus { outline: none; border-color: var(--info); - box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.1); + box-shadow: 0 0 0 2px rgba(33, 150, 243, 0.1); } .form-control:disabled { @@ -132,13 +137,17 @@ local uci = require "luci.model.uci".cursor() } .checkbox-wrapper { + box-sizing: border-box; display: block; - padding: 12px 16px; + width: 100%; + max-width: var(--field-width); + padding: 8px 10px; background: var(--hover-bg); - border-radius: 8px; + border-radius: 6px; transition: background 0.2s; position: relative; - min-height: 26px; + min-height: 20px; + vertical-align: top; } .checkbox-wrapper:hover { @@ -150,8 +159,11 @@ local uci = require "luci.model.uci".cursor() cursor: pointer; user-select: none; display: block; - line-height: 26px; - padding-right: 60px; + line-height: 20px; + padding-right: 48px; + white-space: nowrap; + word-break: keep-all; + overflow-wrap: normal; } .checkbox-wrapper label::before { @@ -161,10 +173,10 @@ local uci = require "luci.model.uci".cursor() /* iOS风格开关 */ .switch { position: absolute; - width: 48px; - height: 26px; - right: 16px; - top: 12px; + width: 38px; + height: 20px; + right: 10px; + top: 8px; } .switch input { @@ -179,21 +191,21 @@ local uci = require "luci.model.uci".cursor() cursor: pointer; top: 0; left: 0; - width: 48px; - height: 26px; + width: 38px; + height: 20px; background-color: #ccc; -webkit-transition: 0.3s; transition: 0.3s; - border-radius: 26px; + border-radius: 20px; } .slider:before { position: absolute; content: ""; - height: 20px; - width: 20px; - left: 3px; - top: 3px; + height: 16px; + width: 16px; + left: 2px; + top: 2px; background-color: white; -webkit-transition: 0.3s; transition: 0.3s; @@ -206,9 +218,9 @@ input:checked + .slider { } input:checked + .slider:before { - -webkit-transform: translateX(22px); - -ms-transform: translateX(22px); - transform: translateX(22px); + -webkit-transform: translateX(18px); + -ms-transform: translateX(18px); + transform: translateX(18px); } input:disabled + .slider { @@ -217,16 +229,16 @@ input:disabled + .slider { } .btn { - padding: 12px 28px; + padding: 8px 16px; border: none; - border-radius: 8px; - font-size: 15px; + border-radius: 6px; + font-size: 13px; font-weight: 600; cursor: pointer; transition: all 0.2s ease; display: inline-flex; align-items: center; - gap: 8px; + gap: 6px; box-shadow: 0 2px 6px rgba(0,0,0,0.1); } @@ -259,17 +271,17 @@ input:disabled + .slider { .btn-group { display: flex; - gap: 16px; - margin-top: 32px; - padding-top: 24px; - border-top: 2px dashed var(--border-color); + gap: 10px; + margin-top: 20px; + padding-top: 16px; + border-top: 1px dashed var(--border-color); } .iframe-container { width: 100%; height: 800px; - border: 2px solid var(--border-color); - border-radius: 12px; + border: 1px solid var(--border-color); + border-radius: 8px; overflow: hidden; background: var(--card-bg); box-shadow: inset 0 2px 8px rgba(0,0,0,0.05); @@ -284,18 +296,18 @@ input:disabled + .slider { .status-badge { display: inline-flex; align-items: center; - gap: 6px; - padding: 6px 16px; - border-radius: 20px; - font-size: 13px; + gap: 5px; + padding: 4px 10px; + border-radius: 14px; + font-size: 11px; font-weight: 600; margin-left: auto; } .status-badge::before { content: ""; - width: 8px; - height: 8px; + width: 6px; + height: 6px; border-radius: 50%; animation: pulse 2s infinite; } @@ -345,9 +357,9 @@ input:disabled + .slider { } .alert { - padding: 14px 20px; - border-radius: 8px; - font-size: 14px; + padding: 10px 14px; + border-radius: 6px; + font-size: 12px; font-weight: 500; position: fixed; top: 80px; @@ -356,7 +368,7 @@ input:disabled + .slider { -ms-transform: translateX(-50%); transform: translateX(-50%); z-index: 10000; - min-width: 320px; + min-width: 260px; max-width: 500px; text-align: center; box-shadow: 0 4px 16px rgba(0,0,0,0.3); @@ -408,39 +420,39 @@ input:disabled + .slider { .modal-content { background: var(--card-bg); - border-radius: 12px; - padding: 24px; + border-radius: 8px; + padding: 18px; max-width: 500px; width: 90%; box-shadow: 0 4px 12px rgba(0,0,0,0.3); } .modal-title { - font-size: 18px; + font-size: 15px; font-weight: 600; color: var(--text-primary); - margin-bottom: 16px; + margin-bottom: 12px; } .modal-message { - font-size: 14px; + font-size: 12px; color: var(--text-secondary); - margin-bottom: 24px; - line-height: 1.6; + margin-bottom: 16px; + line-height: 1.5; } .modal-buttons { display: flex; - gap: 12px; + gap: 8px; justify-content: flex-end; } .modal-btn { - padding: 10px 20px; + padding: 7px 14px; border: none; border-radius: 6px; cursor: pointer; - font-size: 14px; + font-size: 12px; font-weight: 500; transition: all 0.2s; } @@ -458,6 +470,84 @@ input:disabled + .slider { background: var(--border-color); color: var(--text-primary); } + +@media (max-width: 768px) { + .web-console-container { + margin: 8px auto; + padding: 0 8px; + } + + .web-card { + border-radius: 8px; + padding: 12px; + margin-bottom: 12px; + } + + .web-card h3 { + font-size: 15px; + margin-bottom: 12px; + padding-bottom: 8px; + } + + .web-card h3::before { + font-size: 16px; + } + + .form-row { + grid-template-columns: 1fr; + gap: 8px; + margin-bottom: 8px; + } + + .form-group { + margin-bottom: 10px; + } + + .form-control { + height: 30px; + padding: 5px 8px; + font-size: 12px; + } + + .checkbox-wrapper { + padding: 7px 8px; + } + + .checkbox-wrapper label { + font-size: 12px; + padding-right: 44px; + white-space: normal; + word-break: keep-all; + } + + .switch { + right: 8px; + top: 7px; + } + + .btn { + padding: 7px 12px; + font-size: 12px; + white-space: nowrap; + word-break: keep-all; + } + + .btn-group { + gap: 8px; + margin-top: 14px; + padding-top: 12px; + flex-wrap: wrap; + } + + .alert { + min-width: 220px; + max-width: calc(100vw - 24px); + } + + .modal-content { + padding: 14px; + } +}
@@ -479,7 +569,7 @@ input:disabled + .slider {
-
@@ -602,7 +692,7 @@ input:disabled + .slider {
-
+
@@ -676,7 +766,7 @@ input:disabled + .slider {
-
+
@@ -745,12 +835,12 @@ input:disabled + .slider {