function chipClass(status) { if (status === "ok") return "good"; if (status === "failed" || status === "lost" || status === "killed") return "bad"; if (status === "running" || status === "busy" || status === "starting") return "warn"; return "muted"; } function when(ts) { if (!ts) return ""; return new Date(ts * 1000).toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" }); } function summary(jobs) { const running = jobs.filter((j) => ["running", "busy", "starting"].includes(j.status)).length; const failed = jobs.filter((j) => ["failed", "lost", "killed"].includes(j.status)).length; const parts = []; if (running) parts.push(`${running} running`); if (failed) parts.push(`${failed} failed`); if (!parts.length) parts.push(jobs.length ? `${jobs.length} recent` : "idle"); return parts.join(" ยท "); } export default { title: "Build VM", interval: 5, mount(el) { el.innerHTML = `