agent-orchestrator/ui-electrobun/electrobun.config.ts
Hibryda 3a61158e00 perf(electrobun): fix CEF high CPU — disable GPU flags + remove CSS animations
- electrobun.config.ts: add --disable-gpu --disable-gpu-compositing to CEF
  flags (GLXBadWindow X11 errors cause continuous recovery loop)
- StatusBar.svelte: replace @keyframes pulse with CSS transition + JS toggle
- app.css: remove @keyframes pulse-dot (continuous compositor repaint)

CSS animations on small elements cause 10-30% CPU in both CEF and WebKitGTK.
JS class toggle with transition: opacity 0.3s uses near-zero CPU.
2026-03-22 09:35:24 +01:00

55 lines
1.6 KiB
TypeScript

import type { ElectrobunConfig } from "electrobun";
// CEF mode: opt-in via AGOR_CEF=1. Used for dev/test (E2E automation via CDP,
// WebGL support, unlimited xterm instances). Production uses WebKitGTK (lighter,
// no Chromium dependency, system-native).
const useCEF = process.env.AGOR_CEF === "1";
// When CEF is active, enable remote debugging for CDP-based E2E automation.
const cefFlags: Record<string, string | boolean> | undefined = useCEF
? {
"remote-debugging-port": "9222",
"remote-allow-origins": "*",
// Reduce CPU: disable GPU acceleration (GLXBadWindow errors on Linux
// cause continuous error recovery loop in software fallback mode)
"disable-gpu": true,
"disable-gpu-compositing": true,
"disable-software-rasterizer": false,
}
: undefined;
export default {
app: {
name: "Agent Orchestrator",
identifier: "dev.agor.orchestrator",
version: "0.0.1",
},
build: {
bun: {
entrypoint: "src/bun/index.ts",
},
copy: {
"dist/index.html": "views/mainview/index.html",
"dist/assets": "views/mainview/assets",
},
watchIgnore: ["dist/**"],
mac: {
bundleCEF: useCEF,
bundleWGPU: true,
...(useCEF && { defaultRenderer: "cef" as const }),
...(cefFlags && { chromiumFlags: cefFlags }),
},
linux: {
bundleCEF: useCEF,
bundleWGPU: true,
...(useCEF && { defaultRenderer: "cef" as const }),
...(cefFlags && { chromiumFlags: cefFlags }),
},
win: {
bundleCEF: useCEF,
bundleWGPU: true,
...(useCEF && { defaultRenderer: "cef" as const }),
...(cefFlags && { chromiumFlags: cefFlags }),
},
},
} satisfies ElectrobunConfig;