mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-10-29 15:25:13 +08:00
🍓 Sync 2026-08-30 00:07:42
This commit is contained in:
1 parent
28e8ae5ca9
commit
eea38c835c
17 files changed
+1387
-65
No files matched your search
@@ -7,7 +7,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=filebrowser
|
||||
PKG_VERSION:=1.5.3-stable
|
||||
PKG_VERSION:=1.5.4-stable
|
||||
PKG_RELEASE=1
|
||||
|
||||
ifeq ($(ARCH),aarch64)
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"PO-Revision-Date: 2026-05-14 10:34+0000\n"
|
||||
"Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>\n"
|
||||
"PO-Revision-Date: 2026-08-27 18:20+0000\n"
|
||||
"Last-Translator: Martin Olmer <m_iv@seznam.cz>\n"
|
||||
"Language-Team: Czech <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsfrpc/cs/>\n"
|
||||
"Language: cs\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n"
|
||||
"X-Generator: Weblate 2026.5.dev0\n"
|
||||
"X-Generator: Weblate 2026.9.dev0\n"
|
||||
|
||||
#: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:1454
|
||||
msgid "Add new proxy or visitor..."
|
||||
@@ -116,7 +116,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:1417
|
||||
msgid "Collecting data ..."
|
||||
msgstr "Shromažďování dat…"
|
||||
msgstr "Shromažďování dat …"
|
||||
|
||||
#: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:317
|
||||
msgid "Command arguments passed to token source exec."
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,5 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"PO-Revision-Date: 2026-08-28 06:20+0000\n"
|
||||
"Last-Translator: SnIPeRSnIPeR <snipersniper@users.noreply.hosted.weblate.org>"
|
||||
"\n"
|
||||
"PO-Revision-Date: 2026-04-25 12:14+0000\n"
|
||||
"Last-Translator: SnIPeRSnIPeR "
|
||||
"<snipersniper@users.noreply.hosted.weblate.org>\n"
|
||||
@@ -10,7 +13,7 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
"X-Generator: Weblate 5.17.1-dev\n"
|
||||
"X-Generator: Weblate 2026.9.dev0\n"
|
||||
|
||||
#: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:1454
|
||||
msgid "Add new proxy or visitor..."
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"PO-Revision-Date: 2026-02-10 18:11+0000\n"
|
||||
"Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>\n"
|
||||
"PO-Revision-Date: 2026-08-27 18:20+0000\n"
|
||||
"Last-Translator: Martin Olmer <m_iv@seznam.cz>\n"
|
||||
"Language-Team: Czech <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsfrps/cs/>\n"
|
||||
"Language: cs\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n"
|
||||
"X-Generator: Weblate 5.16-dev\n"
|
||||
"X-Generator: Weblate 2026.9.dev0\n"
|
||||
|
||||
#: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:982
|
||||
msgid "Access Control"
|
||||
@@ -76,7 +76,7 @@ msgstr "Port, na který navázat"
|
||||
|
||||
#: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:969
|
||||
msgid "Collecting data ..."
|
||||
msgstr "Shromažďování dat…"
|
||||
msgstr "Shromažďování dat …"
|
||||
|
||||
#: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:323
|
||||
msgid "Command arguments passed to token source exec."
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2026-02-11 13:57+0000\n"
|
||||
"Last-Translator: Džiugas Januševičius <dziugas1959@hotmail.com>\n"
|
||||
"PO-Revision-Date: 2026-08-28 06:39+0000\n"
|
||||
"Last-Translator: Martin Olmer <m_iv@seznam.cz>\n"
|
||||
"Language-Team: Lithuanian <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsfrps/lt/>\n"
|
||||
"Language: lt\n"
|
||||
|
||||
@@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-passwall
|
||||
PKG_VERSION:=26.8.26
|
||||
PKG_RELEASE:=251
|
||||
PKG_RELEASE:=252
|
||||
PKG_PO_VERSION:=$(PKG_VERSION)
|
||||
|
||||
PKG_CONFIG_DEPENDS:= \
|
||||
|
||||
@@ -142,18 +142,6 @@ local function http_write_json_error(data)
|
||||
http.write(jsonStringify({code = 0, data = data}))
|
||||
end
|
||||
|
||||
function reset_config()
|
||||
uci:revert(c_config)
|
||||
luci.sys.call("echo '' > /tmp/log/passwall.log")
|
||||
luci.sys.call('/etc/init.d/passwall stop')
|
||||
if luci.sys.call('[ -s "/usr/share/passwall/0_default_config" ]') == 0 then
|
||||
luci.sys.call('cp -f /usr/share/passwall/0_default_config /etc/config/passwall')
|
||||
api.log(" * 恢复默认配置成功。")
|
||||
else
|
||||
api.log(" * 找不到默认配置文件,重置失败!")
|
||||
end
|
||||
end
|
||||
|
||||
function show_menu()
|
||||
api.sh_uci_del(c_config, "@global[0]", "hide_from_luci", true)
|
||||
luci.sys.call("rm -rf /tmp/luci-*")
|
||||
@@ -952,6 +940,7 @@ function create_backup()
|
||||
end
|
||||
|
||||
function restore_backup()
|
||||
local type = http.formvalue("type")
|
||||
local result = { status = "error", message = "unknown error" }
|
||||
local ok, err = pcall(function()
|
||||
local filename = http.formvalue("filename")
|
||||
@@ -981,21 +970,29 @@ function restore_backup()
|
||||
fp:close()
|
||||
if chunk_index + 1 == total_chunks then
|
||||
uci:revert(c_config)
|
||||
uci:revert(api.s_config)
|
||||
luci.sys.call("echo '' > /tmp/log/passwall.log")
|
||||
api.log(" * PassWall 配置文件上传成功…")
|
||||
local temp_dir = '/tmp/passwall_bak'
|
||||
luci.sys.call("mkdir -p " .. temp_dir)
|
||||
if luci.sys.call("tar -xzf " .. file_path .. " -C " .. temp_dir) == 0 then
|
||||
for _, backup_file in ipairs(backup_files) do
|
||||
local temp_file = temp_dir .. backup_file
|
||||
if fs.access(temp_file) then
|
||||
luci.sys.call("cp -f " .. temp_file .. " " .. backup_file)
|
||||
local is_server_config = backup_file == "/etc/config/passwall_server"
|
||||
if type == "all" or (type == "client" and not is_server_config) or (type == "server" and is_server_config) then
|
||||
local temp_file = temp_dir .. backup_file
|
||||
if fs.access(temp_file) then
|
||||
luci.sys.call("cp -f " .. temp_file .. " " .. backup_file)
|
||||
end
|
||||
end
|
||||
end
|
||||
api.log(" * PassWall 配置还原成功…")
|
||||
api.log(" * 重启 PassWall 服务中…\n")
|
||||
luci.sys.call('/etc/init.d/passwall restart > /dev/null 2>&1 &')
|
||||
luci.sys.call('/etc/init.d/passwall_server restart > /dev/null 2>&1 &')
|
||||
if type == "all" or type == "client" then
|
||||
api.log(" * PassWall 配置还原成功…")
|
||||
api.log(" * 重启 PassWall 服务中…\n")
|
||||
luci.sys.call('/etc/init.d/passwall restart > /dev/null 2>&1 &')
|
||||
end
|
||||
if type == "all" or type == "server" then
|
||||
luci.sys.call('/etc/init.d/passwall_server restart > /dev/null 2>&1 &')
|
||||
end
|
||||
result = { status = "success", message = "Upload completed", path = file_path }
|
||||
else
|
||||
api.log(" * PassWall 配置文件解压失败,请重试!")
|
||||
@@ -1013,6 +1010,26 @@ function restore_backup()
|
||||
http_write_json(result)
|
||||
end
|
||||
|
||||
function reset_config()
|
||||
local type = http.formvalue("type")
|
||||
if type == "client" then
|
||||
uci:revert(c_config)
|
||||
luci.sys.call("echo '' > /tmp/log/passwall.log")
|
||||
luci.sys.call('/etc/init.d/passwall stop')
|
||||
if luci.sys.call('[ -s "/usr/share/passwall/0_default_config" ]') == 0 then
|
||||
luci.sys.call('cp -f /usr/share/passwall/0_default_config /etc/config/passwall')
|
||||
api.log(" * 恢复默认配置成功。")
|
||||
else
|
||||
api.log(" * 找不到默认配置文件,重置失败!")
|
||||
end
|
||||
elseif type == "server" then
|
||||
uci:revert(api.s_config)
|
||||
luci.sys.call("echo '' > /tmp/log/passwall_server.log")
|
||||
luci.sys.call('/etc/init.d/passwall_server stop')
|
||||
luci.sys.call("echo \"config global 'global'\" > /etc/config/passwall_server")
|
||||
end
|
||||
end
|
||||
|
||||
function geo_view()
|
||||
local action = http.formvalue("action")
|
||||
local value = http.formvalue("value")
|
||||
|
||||
@@ -26,14 +26,19 @@ local api = map.api
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cbi-value" id="_reset_div">
|
||||
<label class="cbi-value-title"><%:Restore to default configuration%></label>
|
||||
<div class="cbi-value">
|
||||
<label class="cbi-value-title"><%=translatef("Reset %s Configuration", translate("Client"))%></label>
|
||||
<div class="cbi-value-field">
|
||||
<input class="btn cbi-button cbi-button-reset" type="button" onclick="do_reset()" value="<%:Do Reset%>" />
|
||||
<input class="btn cbi-button cbi-button-reset" type="button" onclick="do_reset('client')" value="<%:Do Reset%>" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cbi-value"></div>
|
||||
<div class="cbi-value">
|
||||
<label class="cbi-value-title"><%=translatef("Reset %s Configuration", translate("Server"))%></label>
|
||||
<div class="cbi-value-field">
|
||||
<input class="btn cbi-button cbi-button-reset" type="button" onclick="do_reset('server')" value="<%:Do Reset%>" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="upload-modal" class="up-modal" style="display:none;">
|
||||
<div class="up-modal-content">
|
||||
@@ -41,6 +46,16 @@ local api = map.api
|
||||
<div class="up-cbi-value-field">
|
||||
<input class="cbi-input-file" type="file" id="ulfile" accept=".tar.gz" />
|
||||
</div>
|
||||
<div class="up-cbi-checkbox">
|
||||
<label>
|
||||
<input class="cbi-input-checkbox" type="checkbox" name="client" value="1" checked />
|
||||
<%:Client%>
|
||||
</label>
|
||||
<label>
|
||||
<input class="cbi-input-checkbox" type="checkbox" name="server" value="1" />
|
||||
<%:Server%>
|
||||
</label>
|
||||
</div>
|
||||
<div class="up-button-container">
|
||||
<input class="btn cbi-button cbi-button-apply" type="button" id="upload-btn" onclick="do_upload()" value="<%:UL Restore%>" />
|
||||
<input class="btn cbi-button cbi-button-remove" type="button" onclick="close_upload_win()" value="<%:CLOSE WIN%>" />
|
||||
@@ -93,6 +108,21 @@ local api = map.api
|
||||
.up-modal h3 {
|
||||
background: inherit;
|
||||
}
|
||||
|
||||
.up-cbi-checkbox {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
max-width: 250px;
|
||||
margin: 0 0 30px;
|
||||
}
|
||||
|
||||
.up-cbi-checkbox label {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 5px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
@@ -147,20 +177,32 @@ local api = map.api
|
||||
.catch(error => alert(error.message));
|
||||
}
|
||||
|
||||
function do_reset(btn) {
|
||||
if (confirm("<%: Do you want to restore the client to default settings?%>")) {
|
||||
function do_reset(type) {
|
||||
if (type !== "client" && type !== "server") return;
|
||||
const name = type === "client" ? "<%:Client%>".toLowerCase() : "<%:Server%>".toLowerCase();
|
||||
const redirect = type === "client" ? '<%=api.url("log")%>' : '<%=api.url("server")%>';
|
||||
const message = "<%=translatef("Do you want to restore the %s to default settings?", "%s")%>".replace("%s", name);
|
||||
const confirm_message = "<%=translatef("Are you sure you want to restore the %s to default settings?", "%s")%>".replace("%s", name);
|
||||
|
||||
if (confirm(message)) {
|
||||
setTimeout(function () {
|
||||
if (confirm("<%: Are you sure you want to restore the client to default settings?%>")) {
|
||||
if (confirm(confirm_message)) {
|
||||
const xhr = new XMLHttpRequest();
|
||||
xhr.open("GET",'<%= api.url("reset_config") %>', false);
|
||||
xhr.send();
|
||||
window.location.href = '<%= api.url("log") %>'
|
||||
xhr.open("GET", '<%=api.url("reset_config")%>?type=' + type, false);
|
||||
xhr.send();
|
||||
window.location.href = redirect;
|
||||
}
|
||||
}, 1000);
|
||||
}
|
||||
}
|
||||
|
||||
function do_upload(btn) {
|
||||
const client = document.querySelector('input[name="client"]').checked;
|
||||
const server = document.querySelector('input[name="server"]').checked;
|
||||
if (!client && !server) return;
|
||||
|
||||
const type = client === server ? "all" : client ? "client" : "server";
|
||||
|
||||
const fileInput = document.getElementById("ulfile");
|
||||
const file = fileInput.files[0];
|
||||
if (!file) {
|
||||
@@ -200,7 +242,7 @@ local api = map.api
|
||||
if (currentChunk < totalChunks) {
|
||||
const chunk = base64Data.substring(currentChunk * chunkSize, (currentChunk + 1) * chunkSize);
|
||||
const xhr = new XMLHttpRequest();
|
||||
xhr.open("POST", '<%= api.url("restore_backup") %>', true);
|
||||
xhr.open("POST", '<%=api.url("restore_backup")%>?type=' + type, true);
|
||||
xhr.onreadystatechange = function () {
|
||||
if (xhr.readyState === 4) {
|
||||
if (xhr.status === 200) {
|
||||
@@ -228,7 +270,11 @@ local api = map.api
|
||||
} else {
|
||||
//alert("Upload completed.");
|
||||
document.getElementById("upload-btn").value = "<%:UL Restore%>";
|
||||
window.location.href = '<%= api.url("log") %>'
|
||||
if (type === "server") {
|
||||
window.location.href = '<%=api.url("server")%>';
|
||||
} else {
|
||||
window.location.href = '<%=api.url("log")%>';
|
||||
}
|
||||
}
|
||||
}
|
||||
sendNextChunk();
|
||||
|
||||
@@ -2037,8 +2037,14 @@ msgstr "上传恢复"
|
||||
msgid "CLOSE WIN"
|
||||
msgstr "关闭窗口"
|
||||
|
||||
msgid "Restore to default configuration"
|
||||
msgstr "恢复默认配置"
|
||||
msgid "Reset %s Configuration"
|
||||
msgstr "重置%s配置"
|
||||
|
||||
msgid "Client"
|
||||
msgstr "客户端"
|
||||
|
||||
msgid "Server"
|
||||
msgstr "服务端"
|
||||
|
||||
msgid "Do Reset"
|
||||
msgstr "执行重置"
|
||||
@@ -2052,11 +2058,11 @@ msgstr "文件类型无效,请上传一个 .tar.gz 文件。"
|
||||
msgid "File size exceeds 10MB limit."
|
||||
msgstr "文件大小超过 10MB 限制。"
|
||||
|
||||
msgid "Do you want to restore the client to default settings?"
|
||||
msgstr "是否要恢复客户端默认配置?"
|
||||
msgid "Do you want to restore the %s to default settings?"
|
||||
msgstr "是否要恢复%s默认配置?"
|
||||
|
||||
msgid "Are you sure you want to restore the client to default settings?"
|
||||
msgstr "是否真的要恢复客户端默认配置?"
|
||||
msgid "Are you sure you want to restore the %s to default settings?"
|
||||
msgstr "是否真的要恢复%s默认配置?"
|
||||
|
||||
msgid "_urltest"
|
||||
msgstr "URLTest"
|
||||
|
||||
@@ -67,7 +67,9 @@ the navigation model links to (menu + each page's tab strip) through the
|
||||
router, then full-loads the same URL and diffs title, `data-page`,
|
||||
`dispatchpath`, tab strip, active nav mark, footer presence and console
|
||||
errors — the report lists fallbacks (pages the router declined) and
|
||||
divergences separately, and 0 divergences is the merge gate. `timing` is
|
||||
divergences separately, and 0 divergences is the merge gate; a fallback on a
|
||||
node the router claims (a view class, or a template page that is a view
|
||||
shell) is reported as a divergence, so a regression there cannot pass. `timing` is
|
||||
click → view painted, median of `RUNS`, router warm/cold vs full load.
|
||||
`soak` samples heap, DOM nodes, listeners and the poll queue on the same
|
||||
page after each of 5 laps over 12 pages. `back` traverses a chain that
|
||||
|
||||
@@ -13,7 +13,8 @@
|
||||
* walk every page the navigation model links to (menu + each page's
|
||||
* tab strip): same-document navigate, then a full load of the same
|
||||
* URL; compare title, data-page, dispatchpath, tab count, footer
|
||||
* presence, view child count. Reports divergences and fallbacks.
|
||||
* presence, view child count. Reports divergences and fallbacks;
|
||||
* a fallback on a node the router claims counts as a divergence.
|
||||
* timing click → view painted, median of RUNS: router (warm and cold)
|
||||
* vs full load, same pages.
|
||||
* soak 60 navigations over the walked pages; heap, DOM nodes, poll queue
|
||||
@@ -65,6 +66,8 @@ const COOKIE = {
|
||||
path: "/",
|
||||
};
|
||||
const START = `${HOST}/cgi-bin/luci/admin/status/overview`;
|
||||
// Where a walk of START itself begins: a same-URL navigation is a reload by rule.
|
||||
const ALT_START = `${HOST}/cgi-bin/luci/admin/system/system`;
|
||||
|
||||
const median = (v) => {
|
||||
const s = [...v].sort((a, b) => a - b);
|
||||
@@ -280,10 +283,29 @@ if (!ONLY || ONLY === "walk") {
|
||||
const t0 = Date.now();
|
||||
try {
|
||||
consoleErrors.length = 0;
|
||||
await fullLoad(p.sessionId, START);
|
||||
await fullLoad(p.sessionId, url === START ? ALT_START : START);
|
||||
await evaljs(p.sessionId, "window.__sameDocMarker = 1");
|
||||
const nav = await spaNavigate(p.sessionId, url);
|
||||
if (!nav.sameDoc) { fallbacks.push(url.replace(HOST, "")); continue; }
|
||||
if (!nav.sameDoc) {
|
||||
// The document is now the target itself: ask its router whether it
|
||||
// claims this node (a view class, or a template page that is a view
|
||||
// shell). A claimed node that fell back is a regression, not a fallback.
|
||||
const claim = await evaljs(p.sessionId, `L.require('router-aurora').then(async (r) => {
|
||||
// the menu tree arrives asynchronously; a document the router never
|
||||
// boots on (call/cbi pages) has none, and cannot be judged from here
|
||||
for (let i = 0; i < 100 && !r.tree; i++) await new Promise((res) => setTimeout(res, 50));
|
||||
if (!r.tree) return 'unknown';
|
||||
try {
|
||||
const rt = r.route(${JSON.stringify(url)}, { intent: true });
|
||||
if (!rt) return 'declined';
|
||||
if (rt.className) return 'claimed';
|
||||
return (await r.template(rt)) ? 'claimed' : 'declined';
|
||||
} catch (e) { return 'error: ' + e; }
|
||||
})`, true);
|
||||
if (claim === "declined" || claim === "unknown") fallbacks.push(url.replace(HOST, "") + (claim === "unknown" ? " (router not booted there)" : ""));
|
||||
else divergences.push({ url: url.replace(HOST, ""), diffs: [`fallback on a node the router claims (${claim})`] });
|
||||
continue;
|
||||
}
|
||||
await waitViewSettled(p.sessionId);
|
||||
await sleep(SETTLE);
|
||||
const soft = await snapshot(p.sessionId);
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
"node": "^20.19.0 || >=22.12.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eamonxg/luci-theme-devkit": "^0.3.0",
|
||||
"@eamonxg/luci-theme-devkit": "^0.3.1",
|
||||
"@eamonxg/luci-theme-tokens": "^2.0.0",
|
||||
"@tailwindcss/vite": "^4.1.11",
|
||||
"@types/node": "^24.0.0",
|
||||
|
||||
Generated
+5
-5
@@ -9,8 +9,8 @@ importers:
|
||||
.:
|
||||
devDependencies:
|
||||
'@eamonxg/luci-theme-devkit':
|
||||
specifier: ^0.3.0
|
||||
version: 0.3.0(terser@5.46.0)(vite@7.3.1(@types/node@24.10.9)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.0))
|
||||
specifier: ^0.3.1
|
||||
version: 0.3.1(terser@5.46.0)(vite@7.3.1(@types/node@24.10.9)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.0))
|
||||
'@eamonxg/luci-theme-tokens':
|
||||
specifier: ^2.0.0
|
||||
version: 2.0.0
|
||||
@@ -47,8 +47,8 @@ importers:
|
||||
|
||||
packages:
|
||||
|
||||
'@eamonxg/luci-theme-devkit@0.3.0':
|
||||
resolution: {integrity: sha512-yvPb7LX5SRxUlRlDDaSS6/xSdAso6lcv/B5vjaWs7mTNkVwX2NYbUTCgl06x3ncS9SMREl+b+3zcUOiV6Fd4vg==}
|
||||
'@eamonxg/luci-theme-devkit@0.3.1':
|
||||
resolution: {integrity: sha512-dgmdTPYnAvmRJ0uCzcx4+7X3msPct5uv1YVC5DzPBrox3ugzSHV65zW+rPEtlENW/tdz3//+cvT47fw7p8lbvA==}
|
||||
engines: {node: '>=20.19'}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
@@ -779,7 +779,7 @@ packages:
|
||||
|
||||
snapshots:
|
||||
|
||||
'@eamonxg/luci-theme-devkit@0.3.0(terser@5.46.0)(vite@7.3.1(@types/node@24.10.9)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.0))':
|
||||
'@eamonxg/luci-theme-devkit@0.3.1(terser@5.46.0)(vite@7.3.1(@types/node@24.10.9)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.0))':
|
||||
dependencies:
|
||||
terser: 5.46.0
|
||||
vite: 7.3.1(@types/node@24.10.9)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.0)
|
||||
|
||||
@@ -8,8 +8,8 @@ include $(TOPDIR)/rules.mk
|
||||
LUCI_TITLE:=Aurora Theme (A modern browser theme built with Vite and Tailwind CSS)
|
||||
LUCI_DEPENDS:=+luci-base
|
||||
|
||||
PKG_VERSION:=1.2.8
|
||||
PKG_RELEASE:=75
|
||||
PKG_VERSION:=1.2.9
|
||||
PKG_RELEASE:=76
|
||||
PKG_LICENSE:=Apache-2.0
|
||||
|
||||
LUCI_MINIFY_CSS:=
|
||||
|
||||
@@ -1 +1 @@
|
||||
"use strict";"require baseclass";"require ui";"require poll";"require rpc";const RT=window.L,RENDER_TIMEOUT=15e3,PATCH_ATTR="data-luci-patch",NODE_CSS_ATTR="data-luci-node-css",SHELL_ATTR="data-luci-shell",PROGRESS_DELAY=150,INSTANTIATE=/instantiateView\(\s*['"]([^'"]+)['"]/,TITLE_SLOT="\0",supported=()=>"object"==typeof navigation&&null!==navigation&&"function"==typeof navigation.addEventListener&&"function"==typeof NavigateEvent&&"intercept"in NavigateEvent.prototype,nodeWeight=e=>Math.min(e.order??9999,9999)+(e.auth?.login?1e4:0);function firstChild(e){let t=null;for(const[n,s]of Object.entries(e.children??{}))if(s.satisfied&&s.title&&"object"==typeof s.action)if("firstchild"===s.action?.type){if(t&&nodeWeight(t.node)<=nodeWeight(s))continue;firstChild(s)&&(t={name:n,node:s})}else s.firstchild_ineligible||(!t||nodeWeight(t.node)>nodeWeight(s))&&(t={name:n,node:s});return t}function resolve(e,t){let n=e,s=[],i=[],r=0;for(let o=0;o<32;o++){for(;r<t.length;){const e=n.children?.[t[r]];if(e&&!1===e.satisfied)return null;if(!e){if(!n.wildcard)return null;i=t.slice(r),r=t.length;break}n=e,s.push(t[r++])}const o=n.action?.type;if("alias"===o)t=[...String(n.action.path??"").split("/").filter(Boolean),...i],n=e,s=[],i=[],r=0;else{if("firstchild"!==o)return{node:n,path:s,args:i,request:t};{const e=firstChild(n);if(!e)return null;n=e.node,s.push(e.name)}}}return null}function readonlyAlong(e,t){const n=[];let s=e;for(const e of t)s=s?.children?.[e],s?.depends?.acl?.length&&n.push(s);return n.length>0&&n.every(e=>!0===e.readonly)}const actionOf=(e,t)=>t.length&&"object"==typeof e?.wildcardaction?e.wildcardaction:e?.action;function viewClass(e){return"view"===e?.type&&e.path?`view.${e.path.replace(/\//g,".")}`:null}const PRAGMA_HEAD=/^(?:\s*["'](?:use strict|require\s[^"']+)["'];)+/,PRAGMA=/["']require\s+([^\s"']+)/g;function pragmaDeps(e){return[...(e.slice(0,4096).match(PRAGMA_HEAD)?.[0]??"").matchAll(PRAGMA)].map(e=>e[1])}const moduleUrl=e=>`${RT.env.base_url}/${e.replace(/\./g,"/")}.js${RT.env.resource_version?`?v=${RT.env.resource_version}`:""}`,TITLE_SEPARATOR=/\s*[|\-–—:·]\s*\0|\0\s*[|\-–—:·]\s*/,patchPrefixes=e=>{const t=[];let n=null;for(const s of e)t.push(n=null==n?s:`${n}-${s}`);return t},patchAssetUrl=e=>{const t=document.body.dataset.assetVersion;return t?`${e}?v=${t}`:e},installedPatches=()=>(document.body.dataset.patches??"").split(/\s+/).filter(Boolean),patchRegistry=()=>window.luciPatches??={};let livePatches=new Set,pendingPatches=[];function applyPatches(e){const t=new Set(patchPrefixes(e)),n=RT.env.media,s=[];for(const e of installedPatches()){const i=e.replace(/\.(css|js)$/,""),r=t.has(i);if(e.endsWith(".css")){let e=document.querySelector(`link[${PATCH_ATTR}="${i}"]`);!e&&r?(e=E("link",{rel:"stylesheet",href:patchAssetUrl(`${n}/patches/${i}.css`),[PATCH_ATTR]:i}),document.head.appendChild(e)):e&&(e.disabled=!r)}else r&&s.push(i)}return s}function mountPatches(e){const t=patchRegistry();livePatches=new Set(e);for(const n of e)if(document.querySelector(`script[${PATCH_ATTR}="${n}"]`))t[n]?.mount?.();else{const e=E("script",{src:patchAssetUrl(`${RT.env.media}/patches/${n}.js`),[PATCH_ATTR]:n});e.addEventListener("load",()=>{livePatches.has(n)||patchRegistry()[n]?.unmount?.()}),document.head.appendChild(e)}}function unmountPatches(){livePatches=new Set;const e=patchRegistry();for(const t in e)e[t].unmount?.()}return document.addEventListener("luci-navigate",e=>{unmountPatches(),pendingPatches=applyPatches(e.detail.request)}),document.addEventListener("luci-navigated",()=>{mountPatches(pendingPatches),pendingPatches=[]}),baseclass.extend({__init__(){if(!supported()||!RT?.env?.scriptname)return;const e=this.contract();if(e.length)return void console.warn(`luci-router: luci-base surface missing, staying MPA: ${e.join(", ")}`);this.gen=0,this.seen=new Set,this.warmed=new Set,this.inflight=Promise.resolve(),this.intervals=new Set,this.scrolls=new Map,this.knownSheets=new WeakSet(this.sheets().filter(e=>e.hasAttribute(SHELL_ATTR)||e.hasAttribute(PATCH_ATTR)||e.hasAttribute(NODE_CSS_ATTR))),this.hookIntervals(),this.hookListeners(),this.hookSession(),this.hookVisibility();const t=RT.env.media.split("/").filter(Boolean).pop();Promise.all([ui.menu.load(),RT.require(`menu-${t}`).catch(()=>null)]).then(([e,t])=>{this.tree=e,this.menu=t;const n=this.initialRoute();n&&(document.querySelector('script[type="speculationrules"]')?.remove(),this.status=document.body.appendChild(E("div",{id:"luci-nav-status",role:"status","aria-live":"polite","aria-atomic":"true"})),navigation.addEventListener("navigate",e=>this.onNavigate(e)),document.addEventListener("pointerover",e=>this.onIntent(e)),document.addEventListener("pointerdown",e=>this.onIntent(e)),document.addEventListener("focusin",e=>this.onIntent(e)),this.watchInitialRender(n))})},contract(){const e={L:RT,rpc:rpc,poll:poll,ui:ui,window:window};return["L.view","L.require","L.dom.content","L.env.base_url","L.env.resource","L.env.media","L.Request.addIntercLine truncated
|
||||
"use strict";"require baseclass";"require ui";"require poll";"require rpc";const RT=window.L,RENDER_TIMEOUT=15e3,PATCH_ATTR="data-luci-patch",NODE_CSS_ATTR="data-luci-node-css",SHELL_ATTR="data-luci-shell",PROGRESS_DELAY=150,INSTANTIATE=/instantiateView\(\s*['"]([^'"]+)['"]/,TITLE_SLOT="\0",supported=()=>"object"==typeof navigation&&null!==navigation&&"function"==typeof navigation.addEventListener&&"function"==typeof NavigateEvent&&"intercept"in NavigateEvent.prototype,nodeWeight=e=>Math.min(e.order??9999,9999)+(e.auth?.login?1e4:0);function firstChild(e){let t=null;for(const[n,s]of Object.entries(e.children??{}))if(s.satisfied&&s.title&&"object"==typeof s.action)if("firstchild"===s.action?.type){if(t&&nodeWeight(t.node)<=nodeWeight(s))continue;firstChild(s)&&(t={name:n,node:s})}else s.firstchild_ineligible||(!t||nodeWeight(t.node)>nodeWeight(s))&&(t={name:n,node:s});return t}function resolve(e,t){let n=e,s=[],i=[],r=0;for(let o=0;o<32;o++){for(;r<t.length;){const e=n.children?.[t[r]];if(e&&!1===e.satisfied)return null;if(!e){if(!n.wildcard)return null;i=t.slice(r),r=t.length;break}n=e,s.push(t[r++])}const o=n.action?.type;if("alias"===o)t=[...String(n.action.path??"").split("/").filter(Boolean),...i],n=e,s=[],i=[],r=0;else{if("firstchild"!==o)return{node:n,path:s,args:i,request:t};{const e=firstChild(n);if(!e)return null;n=e.node,s.push(e.name)}}}return null}function readonlyAlong(e,t){const n=[];let s=e;for(const e of t)s=s?.children?.[e],s?.depends?.acl?.length&&n.push(s);return n.length>0&&n.every(e=>!0===e.readonly)}const actionOf=(e,t)=>t.length&&"object"==typeof e?.wildcardaction?e.wildcardaction:e?.action;function viewClass(e){return"view"===e?.type&&e.path?`view.${e.path.replace(/\//g,".")}`:null}const PRAGMA_HEAD=/^(?:\s*["'](?:use strict|require\s[^"']+)["'];)+/,PRAGMA=/["']require\s+([^\s"']+)/g;function pragmaDeps(e){return[...(e.slice(0,4096).match(PRAGMA_HEAD)?.[0]??"").matchAll(PRAGMA)].map(e=>e[1])}const moduleUrl=e=>`${RT.env.base_url}/${e.replace(/\./g,"/")}.js${RT.env.resource_version?`?v=${RT.env.resource_version}`:""}`,TITLE_SEPARATOR=/\s*[|\-–—:·]\s*\0|\0\s*[|\-–—:·]\s*/,patchPrefixes=e=>{const t=[];let n=null;for(const s of e)t.push(n=null==n?s:`${n}-${s}`);return t},patchAssetUrl=e=>{const t=document.body.dataset.assetVersion;return t?`${e}?v=${t}`:e},installedPatches=()=>(document.body.dataset.patches??"").split(/\s+/).filter(Boolean),patchRegistry=()=>window.luciPatches??={};let livePatches=new Set,pendingPatches=[];function applyPatches(e){const t=new Set(patchPrefixes(e)),n=RT.env.media,s=[];for(const e of installedPatches()){const i=e.replace(/\.(css|js)$/,""),r=t.has(i);if(e.endsWith(".css")){let e=document.querySelector(`link[${PATCH_ATTR}="${i}"]`);!e&&r?(e=E("link",{rel:"stylesheet",href:patchAssetUrl(`${n}/patches/${i}.css`),[PATCH_ATTR]:i}),document.head.appendChild(e)):e&&(e.disabled=!r)}else r&&s.push(i)}return s}function mountPatches(e){const t=patchRegistry();livePatches=new Set(e);for(const n of e)if(document.querySelector(`script[${PATCH_ATTR}="${n}"]`))t[n]?.mount?.();else{const e=E("script",{src:patchAssetUrl(`${RT.env.media}/patches/${n}.js`),[PATCH_ATTR]:n});e.addEventListener("load",()=>{livePatches.has(n)||patchRegistry()[n]?.unmount?.()}),document.head.appendChild(e)}}function unmountPatches(){livePatches=new Set;const e=patchRegistry();for(const t in e)e[t].unmount?.()}return document.addEventListener("luci-navigate",e=>{unmountPatches(),pendingPatches=applyPatches(e.detail.request)}),document.addEventListener("luci-navigated",()=>{mountPatches(pendingPatches),pendingPatches=[]}),baseclass.extend({__init__(){if(!supported()||!RT?.env?.scriptname)return;const e=this.contract();if(e.length)return void console.warn(`luci-router: luci-base surface missing, staying MPA: ${e.join(", ")}`);this.gen=0,this.seen=new Set,this.warmed=new Set,this.inflight=Promise.resolve(),this.intervals=new Set,this.scrolls=new Map,this.knownSheets=new WeakSet(this.sheets().filter(e=>e.hasAttribute(SHELL_ATTR)||e.hasAttribute(PATCH_ATTR)||e.hasAttribute(NODE_CSS_ATTR))),this.hookIntervals(),this.hookListeners(),this.hookSession(),this.hookVisibility();const t=RT.env.media.split("/").filter(Boolean).pop();Promise.all([ui.menu.load(),RT.require(`menu-${t}`).catch(()=>null)]).then(([e,t])=>{this.tree=e,this.menu=t;const n=this.initialRoute();n&&(document.querySelector('script[type="speculationrules"]')?.remove(),this.status=document.body.appendChild(E("div",{id:"luci-nav-status",role:"status","aria-live":"polite","aria-atomic":"true"})),navigation.addEventListener("navigate",e=>this.onNavigate(e)),document.addEventListener("pointerover",e=>this.onIntent(e)),document.addEventListener("pointerdown",e=>this.onIntent(e)),document.addEventListener("focusin",e=>this.onIntent(e)),this.watchInitialRender(n))})},contract(){const e={L:RT,rpc:rpc,poll:poll,ui:ui,window:window};return["L.view","L.require","L.dom.content","L.env.base_url","L.env.resource","L.env.media","L.Request.addIntercLine truncated
|
||||
+2
-2
@@ -5,8 +5,8 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=sing-box
|
||||
PKG_VERSION:=1.13.19
|
||||
PKG_RELEASE:=26
|
||||
PKG_VERSION:=1.13.20
|
||||
PKG_RELEASE:=27
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/SagerNet/sing-box/tar.gz/v$(PKG_VERSION)?
|
||||
|
||||
Reference in new issue
Block a user