diff --git a/ui/src/ui/app-lifecycle.ts b/ui/src/ui/app-lifecycle.ts index 817151d5f..71af9d202 100644 --- a/ui/src/ui/app-lifecycle.ts +++ b/ui/src/ui/app-lifecycle.ts @@ -14,6 +14,8 @@ import { startNodesPolling, stopLogsPolling, stopNodesPolling, + startDebugPolling, + stopDebugPolling, } from "./app-polling"; type LifecycleHost = { @@ -52,6 +54,9 @@ export function handleConnected(host: LifecycleHost) { if (host.tab === "logs") { startLogsPolling(host as unknown as Parameters[0]); } + if (host.tab === "debug") { + startDebugPolling(host as unknown as Parameters[0]); + } } export function handleFirstUpdated(host: LifecycleHost) { @@ -62,6 +67,7 @@ export function handleDisconnected(host: LifecycleHost) { window.removeEventListener("popstate", host.popStateHandler); stopNodesPolling(host as unknown as Parameters[0]); stopLogsPolling(host as unknown as Parameters[0]); + stopDebugPolling(host as unknown as Parameters[0]); detachThemeListener( host as unknown as Parameters[0], ); diff --git a/ui/src/ui/app-polling.ts b/ui/src/ui/app-polling.ts index 53d7b2296..b18113c5a 100644 --- a/ui/src/ui/app-polling.ts +++ b/ui/src/ui/app-polling.ts @@ -1,10 +1,12 @@ import { loadLogs } from "./controllers/logs"; import { loadNodes } from "./controllers/nodes"; +import { loadDebug } from "./controllers/debug"; import type { ClawdbotApp } from "./app"; type PollingHost = { nodesPollInterval: number | null; logsPollInterval: number | null; + debugPollInterval: number | null; tab: string; }; @@ -35,3 +37,17 @@ export function stopLogsPolling(host: PollingHost) { clearInterval(host.logsPollInterval); host.logsPollInterval = null; } + +export function startDebugPolling(host: PollingHost) { + if (host.debugPollInterval != null) return; + host.debugPollInterval = window.setInterval(() => { + if (host.tab !== "debug") return; + void loadDebug(host as unknown as ClawdbotApp); + }, 3000); +} + +export function stopDebugPolling(host: PollingHost) { + if (host.debugPollInterval == null) return; + clearInterval(host.debugPollInterval); + host.debugPollInterval = null; +} diff --git a/ui/src/ui/app-settings.ts b/ui/src/ui/app-settings.ts index f9139afbd..f27319d37 100644 --- a/ui/src/ui/app-settings.ts +++ b/ui/src/ui/app-settings.ts @@ -14,7 +14,7 @@ import { saveSettings, type UiSettings } from "./storage"; import { resolveTheme, type ResolvedTheme, type ThemeMode } from "./theme"; import { startThemeTransition, type ThemeTransitionContext } from "./theme-transition"; import { scheduleChatScroll, scheduleLogsScroll } from "./app-scroll"; -import { startLogsPolling, stopLogsPolling } from "./app-polling"; +import { startLogsPolling, stopLogsPolling, startDebugPolling, stopDebugPolling } from "./app-polling"; import { refreshChat } from "./app-chat"; import type { ClawdbotApp } from "./app"; @@ -116,6 +116,9 @@ export function setTab(host: SettingsHost, next: Tab) { if (next === "logs") startLogsPolling(host as unknown as Parameters[0]); else stopLogsPolling(host as unknown as Parameters[0]); + if (next === "debug") + startDebugPolling(host as unknown as Parameters[0]); + else stopDebugPolling(host as unknown as Parameters[0]); void refreshActiveTab(host); syncUrlWithTab(host, next, false); } diff --git a/ui/src/ui/app.ts b/ui/src/ui/app.ts index f0e6a6c51..9ae886048 100644 --- a/ui/src/ui/app.ts +++ b/ui/src/ui/app.ts @@ -226,6 +226,7 @@ export class ClawdbotApp extends LitElement { private chatUserNearBottom = true; private nodesPollInterval: number | null = null; private logsPollInterval: number | null = null; + private debugPollInterval: number | null = null; private logsScrollFrame: number | null = null; private toolStreamById = new Map(); private toolStreamOrder: string[] = [];