fix: UX improvements (hover flicker, green badge, log filtering)
This commit is contained in:
@@ -65,7 +65,11 @@ async def stream_logs(websocket: WebSocket, service: str):
|
|||||||
line = await process.stdout.readline()
|
line = await process.stdout.readline()
|
||||||
if not line:
|
if not line:
|
||||||
break
|
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:
|
except WebSocketDisconnect:
|
||||||
pass
|
pass
|
||||||
finally:
|
finally:
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ export function toast(msg, err = false) {
|
|||||||
export function badge(state) {
|
export function badge(state) {
|
||||||
if (state === "running" || state === "ready") return '<span class="badge b-run">geladen</span>';
|
if (state === "running" || state === "ready") return '<span class="badge b-run">geladen</span>';
|
||||||
if (state === "loading" || state === "starting") return '<span class="badge b-load">lädt…</span>';
|
if (state === "loading" || state === "starting") return '<span class="badge b-load">lädt…</span>';
|
||||||
return '<span class="badge b-idle">bereit</span>';
|
return '<span class="badge b-run">bereit</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
// relative Zeit aus Unix-Sekunden (z.B. "2m", "13h")
|
// relative Zeit aus Unix-Sekunden (z.B. "2m", "13h")
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ function renderQuickActions() {
|
|||||||
|
|
||||||
function modelRow(m) {
|
function modelRow(m) {
|
||||||
const on = RUNNING.has(m.state);
|
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";
|
const state = on ? (m.state === "loading" ? "lädt…" : "geladen") : "bereit";
|
||||||
|
|
||||||
let caps = "";
|
let caps = "";
|
||||||
@@ -179,6 +179,6 @@ function renderAll() {
|
|||||||
function mount() { renderAll(); }
|
function mount() { renderAll(); }
|
||||||
function onStatus(s) { S = s; renderModels(); }
|
function onStatus(s) { S = s; renderModels(); }
|
||||||
function onJobs(jobs) { J = jobs || []; renderRecentJobs(); }
|
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 };
|
export default { id: "overview", mount, onStatus, onJobs, onSystem };
|
||||||
|
|||||||
Reference in New Issue
Block a user