diff --git a/config/permissions/pending_requests.json b/config/permissions/pending_requests.json
index 41b43a3..cf3e0e2 100644
--- a/config/permissions/pending_requests.json
+++ b/config/permissions/pending_requests.json
@@ -592,5 +592,27 @@
"framework.command.execute"
],
"timestamp": 36655.279458412
+ },
+ "c4fe1ca1": {
+ "plugin_name": "example_plugin",
+ "permissions": [
+ "plugin.example.read",
+ "plugin.example.write",
+ "plugin.example.execute",
+ "framework.event.subscribe",
+ "framework.command.execute"
+ ],
+ "timestamp": 36827.036816679
+ },
+ "0fdbf97b": {
+ "plugin_name": "sentinel",
+ "permissions": [
+ "plugin.sentinel.read",
+ "plugin.sentinel.write",
+ "plugin.network.access",
+ "framework.event.subscribe",
+ "framework.command.execute"
+ ],
+ "timestamp": 36827.042118711
}
}
\ No newline at end of file
diff --git a/config/plugins/commands.yaml b/config/plugins/commands.yaml
index 1a3a280..510a50f 100644
--- a/config/plugins/commands.yaml
+++ b/config/plugins/commands.yaml
@@ -101,7 +101,7 @@ commands:
permissions:
- framework.command.test
source: internal
-last_updated: 36655.235712682
+last_updated: 36827.020697669
plugin_commands:
example_plugin:
echo: *id001
diff --git a/config/services/network_routes.yaml b/config/services/network_routes.yaml
index 14a596f..5cf5c09 100644
--- a/config/services/network_routes.yaml
+++ b/config/services/network_routes.yaml
@@ -1,5 +1,5 @@
http_port: 4200
-last_updated: 36655.277279818
+last_updated: 36827.037929596
plugin_routes:
example_plugin:
- methods:
diff --git a/static/web_panel/pages/plugins.html b/static/web_panel/pages/plugins.html
index 2c75709..880982e 100644
--- a/static/web_panel/pages/plugins.html
+++ b/static/web_panel/pages/plugins.html
@@ -78,7 +78,7 @@
var plugins = data.plugins||[];
if (!plugins.length) { list.innerHTML = '
暂无插件
'; return; }
list.innerHTML = plugins.map(function(p){
- return ''+esc(p.name)+'
v'+esc(p.version||'?')+(p.running?' ✅':' ⏸')+'
'+(p.error?'
'+esc(p.error)+'
':'')+'
'+
+ return '
'+esc(p.name)+'
v'+esc(p.version||'?')+(p.running?' ✓':' ⏸')+'
'+(p.error?'
'+esc(p.error)+'
':'')+'
'+
'
'+
'
';
}).join("");
@@ -99,9 +99,9 @@
try {
var r = await fetch("./api/plugins/import", {method:"POST", body:fd});
var d = await r.json();
- if (d.ok) { s.textContent = "✅ " + d.name + (d.loaded?" 已加载":" 待手动加载"); s.style.color = "var(--success)"; }
- else { s.textContent = "❌ " + (d.error||"失败"); s.style.color = "var(--error)"; }
- } catch(e) { s.textContent = "❌ " + e; s.style.color = "var(--error)"; }
+ if (d.ok) { s.textContent = "✓ " + d.name + (d.loaded?" 已加载":" 待手动加载"); s.style.color = "var(--success)"; }
+ else { s.textContent = "✗ " + (d.error||"失败"); s.style.color = "var(--error)"; }
+ } catch(e) { s.textContent = "✗ " + e; s.style.color = "var(--error)"; }
load();
}
@@ -113,9 +113,9 @@
try {
var r = await fetch("./api/plugins/import", {method:"POST", headers:{"Content-Type":"application/json"}, body:JSON.stringify({url:url})});
var d = await r.json();
- if (d.ok) { s.textContent = "✅ " + d.name + (d.loaded?" 已加载":" 待手动加载"); s.style.color = "var(--success)"; }
- else { s.textContent = "❌ " + (d.error||"失败"); s.style.color = "var(--error)"; }
- } catch(e) { s.textContent = "❌ " + e; s.style.color = "var(--error)"; }
+ if (d.ok) { s.textContent = "✓ " + d.name + (d.loaded?" 已加载":" 待手动加载"); s.style.color = "var(--success)"; }
+ else { s.textContent = "✗ " + (d.error||"失败"); s.style.color = "var(--error)"; }
+ } catch(e) { s.textContent = "✗ " + e; s.style.color = "var(--error)"; }
load();
}
diff --git a/static/web_panel/pages/settings.html b/static/web_panel/pages/settings.html
index 5e80e91..e754404 100644
--- a/static/web_panel/pages/settings.html
+++ b/static/web_panel/pages/settings.html
@@ -70,7 +70,7 @@
- ✅ Key 已创建 (仅显示一次):
+ ✓ Key 已创建 (仅显示一次):
@@ -93,13 +93,13 @@
document.getElementById("ver-current").textContent = d.current_version || d.latest_version || "?";
var badge = document.getElementById("ver-badge");
if (d.update_available) {
- badge.textContent = "🔄 " + d.latest_version + " 可用";
+ badge.textContent = "↻ " + d.latest_version + " 可用";
badge.style.background = "var(--success,#4caf50)";
badge.style.color = "#fff";
document.getElementById("btn-apply").style.display = "inline-block";
document.getElementById("update-notes").innerHTML = d.latest_version ? "最新版本: "+esc(d.latest_version)+"" : "";
} else if (d.checked) {
- badge.textContent = "✅ 已是最新";
+ badge.textContent = "✓ 已是最新";
badge.style.background = "var(--md-sys-color-surface-container-lowest)";
badge.style.color = "var(--text)";
document.getElementById("btn-apply").style.display = "none";
@@ -124,9 +124,9 @@
document.getElementById("btn-apply").textContent = "⏳ 更新中...";
try {
var r = await fetch("./api/updates/apply", {method:"POST"}), d = await r.json();
- if (d.ok) alert("✅ " + d.msg);
- else alert("❌ " + (d.error||"失败"));
- } catch(e) { alert("❌ " + e); }
+ if (d.ok) alert("✓ " + d.msg);
+ else alert("✗ " + (d.error||"失败"));
+ } catch(e) { alert("✗ " + e); }
loadVersion();
}
@@ -147,9 +147,9 @@
if (!confirm("确认回滚到 "+name+"? 当前版本将被覆盖。")) return;
try {
var r = await fetch("./api/updates/rollback", {method:"POST", headers:{"Content-Type":"application/json"}, body:JSON.stringify({name:name})}), d = await r.json();
- if (d.ok) alert("✅ " + d.msg);
- else alert("❌ " + (d.error||"失败"));
- } catch(e) { alert("❌ " + e); }
+ if (d.ok) alert("✓ " + d.msg);
+ else alert("✗ " + (d.error||"失败"));
+ } catch(e) { alert("✗ " + e); }
}
// ── 加载 API Keys ──