diff --git a/src/coding/proxy/server/dashboard.py b/src/coding/proxy/server/dashboard.py index 7c88456..62f7b47 100644 --- a/src/coding/proxy/server/dashboard.py +++ b/src/coding/proxy/server/dashboard.py @@ -446,16 +446,19 @@ def _build_favicon() -> bytes: padding-bottom: 10px; margin-bottom: 10px; border-bottom: 1px solid var(--border); } - .detail-identity-row .detail-item { flex: 1 1 0; } + .detail-identity-row .detail-item { flex: 3 1 0; } + .detail-identity-row .detail-item:first-child { flex: 2 1 0; } .detail-identity-row .detail-value { font-family: 'JetBrains Mono', monospace; font-size: 12px; } .detail-metrics-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 10px 20px; } + .detail-inline-pair { display: flex; gap: 16px; } + .detail-inline-pair > div { flex: 1; display: flex; flex-direction: column; gap: 2px; min-width: 0; } .session-table tbody tr[data-row]:not(.row-detail) { cursor: pointer; } .success-bar { width: 56px; height: 4px; border-radius: 2px; background: rgba(255,255,255,.12); display: inline-block; vertical-align: middle; margin-left: 6px; } - .success-bar-fill { height: 100%; border-radius: 2px; } + .success-bar-fill { height: 100%; border-radius: 2px; display: block; } /* ── Vendor Bind 选择器 ── */ .bind-select { padding: 3px 6px; border-radius: 6px; @@ -669,10 +672,6 @@ def _build_favicon() -> bytes:
-
- Sessions - Last 24h -
@@ -1556,8 +1555,6 @@ def _build_favicon() -> bytes: sessionBindMap = {}; (bindData.bindings || []).forEach(function(b) { sessionBindMap[b.session_key] = b.vendors; }); sessionAvailableVendors = (statusData.tiers || []).map(function(t) { return t.name; }); - var subtitle = document.getElementById('sessions-subtitle'); - if (subtitle) subtitle.textContent = 'Last ' + data.hours + 'h'; sessionPage = 0; renderSessionPage(); } catch (e) { @@ -1616,8 +1613,10 @@ def _build_favicon() -> bytes: '
Models
' + (modelsFull.length ? modelsFull.map(function(m){return '' + escapeHtml(m) + '';}).join(' ') : '–') + '
' + '
Vendors
' + (vendorsFull.length ? vendorsFull.map(function(v){return '' + escapeHtml(v) + '';}).join(' ') : '–') + '
' + '
Avg Latency
' + fmtDuration(s.avg_duration_ms) + '
' + - '
Success Rate
' + (sr != null ? sr + '%' : '–') + '
' + - '
Client
' + escapeHtml(s.client_categories || '–') + '
' + + '
' + + '
Success Rate
' + (sr != null ? sr + '%' : '–') + '
' + + '
Client
' + escapeHtml(s.client_categories || '–') + '
' + + '
' + '' + ''; }).join('');