style: 状态emoji(✅❌🔄) → 纯文本符号(✓✗↻)
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
http_port: 4200
|
||||
last_updated: 36655.277279818
|
||||
last_updated: 36827.037929596
|
||||
plugin_routes:
|
||||
example_plugin:
|
||||
- methods:
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
var plugins = data.plugins||[];
|
||||
if (!plugins.length) { list.innerHTML = '<div style="text-align:center;padding:24px;color:var(--text-dim)">暂无插件</div>'; return; }
|
||||
list.innerHTML = plugins.map(function(p){
|
||||
return '<div class="plugin-row"><div class="info"><div class="name">'+esc(p.name)+'</div><div class="ver">v'+esc(p.version||'?')+(p.running?' ✅':' ⏸')+'</div>'+(p.error?'<div class="error-tag">'+esc(p.error)+'</div>':'')+'</div>'+
|
||||
return '<div class="plugin-row"><div class="info"><div class="name">'+esc(p.name)+'</div><div class="ver">v'+esc(p.version||'?')+(p.running?' ✓':' ⏸')+'</div>'+(p.error?'<div class="error-tag">'+esc(p.error)+'</div>':'')+'</div>'+
|
||||
'<button class="btn btn-sm btn-outlined" onclick="togglePlugin(\''+esc(p.name)+'\',\''+(p.running?'unload':'enable')+'\')">'+(p.running?'停用':'启用')+'</button>'+
|
||||
'<button class="btn btn-sm btn-outlined" onclick="togglePlugin(\''+esc(p.name)+'\',\'reload\')">重载</button></div>';
|
||||
}).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();
|
||||
}
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
</div>
|
||||
<div id="create-result" style="margin-top:12px;display:none">
|
||||
<div style="background:var(--md-sys-color-surface-container-lowest);padding:12px;border-radius:var(--shape-xs);word-break:break-all">
|
||||
<strong style="color:var(--success)">✅ Key 已创建 (仅显示一次):</strong>
|
||||
<strong style="color:var(--success)">✓ Key 已创建 (仅显示一次):</strong>
|
||||
<code id="new-key-display" style="display:block;margin-top:4px;font-size:.9rem;color:var(--primary)"></code>
|
||||
</div>
|
||||
</div>
|
||||
@@ -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 ? "最新版本: <b>"+esc(d.latest_version)+"</b>" : "";
|
||||
} 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 ──
|
||||
|
||||
Reference in New Issue
Block a user