Collapse dashboard server status into top bar and include .env in backup restore.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-07-02 15:43:48 +08:00
parent aae897b7eb
commit 481086eddc
5 changed files with 149 additions and 29 deletions
+46
View File
@@ -25,6 +25,48 @@
font-size: 0.78rem;
}
.dash-server-compact {
display: inline-flex;
align-items: center;
flex-wrap: wrap;
gap: 0.35rem 0.45rem;
max-width: 100%;
padding: 0.28rem 0.55rem;
border: 1px solid rgba(255, 255, 255, 0.08);
border-radius: 999px;
background: rgba(0, 0, 0, 0.22);
color: var(--text-title);
font-size: 0.76rem;
line-height: 1.35;
cursor: pointer;
text-align: left;
}
.dash-server-compact:hover {
border-color: rgba(76, 217, 127, 0.35);
}
.dash-server-compact[aria-expanded="true"] .dash-toggle-icon {
transform: rotate(180deg);
}
.dash-server-compact-label {
font-weight: 600;
white-space: nowrap;
}
.dash-server-summary {
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
font-size: 0.72rem;
word-break: break-all;
}
.dash-server-compact .dash-toggle-icon {
font-size: 0.62rem;
opacity: 0.75;
transition: transform 0.2s ease;
}
.dashboard-account-card {
margin-bottom: 0;
}
@@ -46,6 +88,10 @@
margin-bottom: 0;
}
.dashboard-server-card[hidden] {
display: none !important;
}
.dash-server-head {
display: flex;
align-items: flex-start;
+29
View File
@@ -41,6 +41,9 @@
var serverDiskSubEl = document.getElementById('dash-server-disk-sub');
var serverNetUpEl = document.getElementById('dash-server-net-up');
var serverNetDownEl = document.getElementById('dash-server-net-down');
var serverCardEl = document.getElementById('dash-server-card');
var serverToggleEl = document.getElementById('dash-server-toggle');
var serverSummaryEl = document.getElementById('dash-server-summary');
var pollTimer = null;
var pollInFlight = false;
@@ -78,6 +81,30 @@
riskToggleEl.setAttribute('aria-expanded', expanded ? 'true' : 'false');
}
function initServerToggle() {
if (!serverCardEl || !serverToggleEl) return;
serverCardEl.hidden = true;
serverToggleEl.setAttribute('aria-expanded', 'false');
function toggleServer() {
var expanded = serverCardEl.hidden;
serverCardEl.hidden = !expanded;
serverToggleEl.setAttribute('aria-expanded', expanded ? 'true' : 'false');
}
serverToggleEl.addEventListener('click', toggleServer);
}
function buildServerSummary(server) {
if (!server) return '—';
var parts = [];
if (server.hostname) parts.push(server.hostname);
if (server.public_ip) parts.push('外网 ' + server.public_ip);
if (server.private_ip) parts.push('内网 ' + server.private_ip);
if (server.cpu_pct != null) parts.push('CPU ' + server.cpu_pct + '%');
if (server.memory_pct != null) parts.push('内存 ' + server.memory_pct + '%');
if (server.disk_pct != null) parts.push('硬盘 ' + server.disk_pct + '%');
return parts.length ? parts.join(' · ') : '—';
}
function initRiskToggle() {
if (!riskCardEl || !riskToggleEl) return;
if (shouldCollapseRiskDefault()) {
@@ -524,6 +551,7 @@
function applyServer(server) {
if (!server) return;
if (serverSummaryEl) serverSummaryEl.textContent = buildServerSummary(server);
if (serverHostEl) serverHostEl.textContent = server.hostname || '—';
if (serverUptimeEl) {
serverUptimeEl.textContent = server.uptime_label
@@ -1102,6 +1130,7 @@
startPolling();
connectPositionStream();
initServerToggle();
initRiskToggle();
initDetailModal();
initMobileLists();