From 107aad97422ed7168fe9553d0669b1047382f5a3 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 4 May 2026 00:04:55 +0100 Subject: [PATCH] fix(channels): add ellipses to progress draft defaults --- docs/concepts/progress-drafts.md | 48 ++++++++++++------------ src/plugin-sdk/channel-streaming.test.ts | 1 + src/plugin-sdk/channel-streaming.ts | 40 ++++++++++---------- 3 files changed, 45 insertions(+), 44 deletions(-) diff --git a/docs/concepts/progress-drafts.md b/docs/concepts/progress-drafts.md index d93722a3ea2..d0f16b4f14e 100644 --- a/docs/concepts/progress-drafts.md +++ b/docs/concepts/progress-drafts.md @@ -17,7 +17,7 @@ approval, and then turns that draft into the final answer when the channel can do that safely. ```text -Shelling +Shelling... - reading recent channel context - checking matching issues - preparing reply @@ -52,7 +52,7 @@ A progress draft has two parts: | Part | Purpose | | -------------- | ----------------------------------------------------------------- | -| Label | A short title such as `Thinking` or `Shelling`. | +| Label | A short title such as `Thinking...` or `Shelling...`. | | Progress lines | Compact run updates such as tool calls, task steps, or approvals. | The label appears immediately when the agent starts replying. Progress lines are @@ -85,30 +85,30 @@ normal block delivery. Use `streaming.block.enabled` or legacy Progress labels live under `channels..streaming.progress`. -The default label is `auto`, which chooses from OpenClaw's built-in single-word -label pool: +The default label is `auto`, which chooses from OpenClaw's built-in +single-word-with-ellipsis label pool: ```text -Thinking -Shelling -Scuttling -Clawing -Pinching -Molting -Bubbling -Tiding -Reefing -Cracking -Sifting -Brining -Nautiling -Krilling -Barnacling -Lobstering -Tidepooling -Pearling -Snapping -Surfacing +Thinking... +Shelling... +Scuttling... +Clawing... +Pinching... +Molting... +Bubbling... +Tiding... +Reefing... +Cracking... +Sifting... +Brining... +Nautiling... +Krilling... +Barnacling... +Lobstering... +Tidepooling... +Pearling... +Snapping... +Surfacing... ``` Use a fixed label: diff --git a/src/plugin-sdk/channel-streaming.test.ts b/src/plugin-sdk/channel-streaming.test.ts index 8adc6b59da3..155801fd824 100644 --- a/src/plugin-sdk/channel-streaming.test.ts +++ b/src/plugin-sdk/channel-streaming.test.ts @@ -127,6 +127,7 @@ describe("channel-streaming", () => { }); it("uses auto progress labels when no explicit label is configured", () => { + expect(DEFAULT_PROGRESS_DRAFT_LABELS.every((label) => label.endsWith("..."))).toBe(true); expect(resolveChannelProgressDraftLabel({ random: () => 0 })).toBe( DEFAULT_PROGRESS_DRAFT_LABELS[0], ); diff --git a/src/plugin-sdk/channel-streaming.ts b/src/plugin-sdk/channel-streaming.ts index 35aec345dbd..47926521e83 100644 --- a/src/plugin-sdk/channel-streaming.ts +++ b/src/plugin-sdk/channel-streaming.ts @@ -85,26 +85,26 @@ function asProgressConfig(value: unknown): ChannelStreamingProgressConfig | unde } export const DEFAULT_PROGRESS_DRAFT_LABELS = [ - "Thinking", - "Shelling", - "Scuttling", - "Clawing", - "Pinching", - "Molting", - "Bubbling", - "Tiding", - "Reefing", - "Cracking", - "Sifting", - "Brining", - "Nautiling", - "Krilling", - "Barnacling", - "Lobstering", - "Tidepooling", - "Pearling", - "Snapping", - "Surfacing", + "Thinking...", + "Shelling...", + "Scuttling...", + "Clawing...", + "Pinching...", + "Molting...", + "Bubbling...", + "Tiding...", + "Reefing...", + "Cracking...", + "Sifting...", + "Brining...", + "Nautiling...", + "Krilling...", + "Barnacling...", + "Lobstering...", + "Tidepooling...", + "Pearling...", + "Snapping...", + "Surfacing...", ] as const; export function getChannelStreamingConfigObject(