From 88bb6813394cc2874a96f8ed2e601fd7565f6757 Mon Sep 17 00:00:00 2001 From: Hitonabi Date: Sat, 20 Jun 2026 23:54:53 +0200 Subject: [PATCH] fix: UX improvements (hover flicker, green badge, log filtering) --- routers/maintenance.py | 6 +++++- static/js/core/ui.js | 2 +- static/js/panels/overview.js | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/routers/maintenance.py b/routers/maintenance.py index 8c0be80..56f7155 100644 --- a/routers/maintenance.py +++ b/routers/maintenance.py @@ -65,7 +65,11 @@ async def stream_logs(websocket: WebSocket, service: str): line = await process.stdout.readline() if not line: break - await websocket.send_text(line.decode("utf-8", errors="replace")) + line_str = line.decode("utf-8", errors="replace") + # Filter spammy polls + if '"GET /running HTTP' in line_str or '"GET /api/' in line_str: + continue + await websocket.send_text(line_str) except WebSocketDisconnect: pass finally: diff --git a/static/js/core/ui.js b/static/js/core/ui.js index c775c62..bb6f6f9 100644 --- a/static/js/core/ui.js +++ b/static/js/core/ui.js @@ -22,7 +22,7 @@ export function toast(msg, err = false) { export function badge(state) { if (state === "running" || state === "ready") return 'geladen'; if (state === "loading" || state === "starting") return 'lädt…'; - return 'bereit'; + return 'bereit'; } // relative Zeit aus Unix-Sekunden (z.B. "2m", "13h") diff --git a/static/js/panels/overview.js b/static/js/panels/overview.js index 12ae1f9..0f4f1fd 100644 --- a/static/js/panels/overview.js +++ b/static/js/panels/overview.js @@ -106,7 +106,7 @@ function renderQuickActions() { function modelRow(m) { const on = RUNNING.has(m.state); - const dot = m.state === "loading" || m.state === "starting" ? "load" : on ? "on" : ""; + const dot = m.state === "loading" || m.state === "starting" ? "load" : (on || m.state === "bereit") ? "on" : ""; const state = on ? (m.state === "loading" ? "lädt…" : "geladen") : "bereit"; let caps = ""; @@ -179,6 +179,6 @@ function renderAll() { function mount() { renderAll(); } function onStatus(s) { S = s; renderModels(); } function onJobs(jobs) { J = jobs || []; renderRecentJobs(); } -function onSystem(sys) { SYS = sys; renderQuickActions(); } +function onSystem(sys) { SYS = sys; } export default { id: "overview", mount, onStatus, onJobs, onSystem };