From 0eb0364819258c1dbcf82a0d7b5d9816ba4df4e8 Mon Sep 17 00:00:00 2001 From: Pocket Clawd Date: Mon, 26 Jan 2026 14:52:07 -0800 Subject: [PATCH] fix(webchat): suppress ack-only heartbeats + update changelog (#2396) (thanks @dlauer) --- CHANGELOG.md | 1 + src/gateway/server-chat.ts | 6 ++---- src/infra/heartbeat-visibility.ts | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1edda7aab..5d2f45dc6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ Status: unreleased. - Tlon: format thread reply IDs as @ud. (#1837) Thanks @wca4a. - Gateway: prefer newest session metadata when combining stores. (#1823) Thanks @emanuelst. - Web UI: keep sub-agent announce replies visible in WebChat. (#1977) Thanks @andrescardonas7. +- Web UI: honor heartbeat visibility (hide HEARTBEAT_OK acks by default) in WebChat. (#2396) Thanks @dlauer. - CI: increase Node heap size for macOS checks. (#1890) Thanks @realZachi. - macOS: avoid crash when rendering code blocks by bumping Textual to 0.3.1. (#2033) Thanks @garricn. - Browser: fall back to URL matching for extension relay target resolution. (#1999) Thanks @jonit-dev. diff --git a/src/gateway/server-chat.ts b/src/gateway/server-chat.ts index 3f57df1eb..da2d6a5f4 100644 --- a/src/gateway/server-chat.ts +++ b/src/gateway/server-chat.ts @@ -11,9 +11,7 @@ type WebchatHeartbeatPolicy = { ackMaxChars: number; }; -let webchatHeartbeatPolicyCache: - | { policy: WebchatHeartbeatPolicy; loadedAtMs: number } - | undefined; +let webchatHeartbeatPolicyCache: { policy: WebchatHeartbeatPolicy; loadedAtMs: number } | undefined; function resolveWebchatHeartbeatPolicy(): WebchatHeartbeatPolicy { // loadConfig() reads from disk + validates, so avoid doing it on every token stream event. @@ -209,7 +207,7 @@ export function createAgentEventHandler({ clientRunId: string, seq: number, jobState: "done" | "error", - error: unknown | undefined, + error: unknown, agentRunId: string, ) => { const text = chatRunState.buffers.get(clientRunId)?.trim() ?? ""; diff --git a/src/infra/heartbeat-visibility.ts b/src/infra/heartbeat-visibility.ts index e4943464c..c24b10417 100644 --- a/src/infra/heartbeat-visibility.ts +++ b/src/infra/heartbeat-visibility.ts @@ -1,6 +1,6 @@ import type { ClawdbotConfig } from "../config/config.js"; import type { ChannelHeartbeatVisibilityConfig } from "../config/types.channels.js"; -import type { DeliverableMessageChannel, GatewayMessageChannel } from "../utils/message-channel.js"; +import type { GatewayMessageChannel } from "../utils/message-channel.js"; export type ResolvedHeartbeatVisibility = { showOk: boolean;