Skip to content

Show assistant commentary in Discord progress drafts#85200

Merged
steipete merged 6 commits into
mainfrom
clawsweeper/automerge-openclaw-openclaw-85164
May 29, 2026
Merged

Show assistant commentary in Discord progress drafts#85200
steipete merged 6 commits into
mainfrom
clawsweeper/automerge-openclaw-openclaw-85164

Conversation

@clawsweeper

@clawsweeper clawsweeper Bot commented May 22, 2026

Copy link
Copy Markdown
Contributor

Makes #85164 merge-ready for the ClawSweeper automerge loop.
The edit pass should inspect the live PR diff, review comments, and failing checks; rebase if needed; keep the contributor branch credited; and stop only when validation is green or an external blocker is proven.

ClawSweeper 🐠 replacement reef notes:

Inherited issue-closing references from the source PR:
Fixes #83307

Co-author credit kept:

fish notes: model gpt-5.5, reasoning high; reviewed against d30206a.

@clawsweeper clawsweeper Bot added docs Improvements or additions to documentation channel: discord Channel integration: discord size: M clawsweeper:automerge Maintainer opted this PR into bounded ClawSweeper-reviewed automerge clawsweeper:human-review Needs maintainer review before ClawSweeper can continue proof: supplied External PR includes structured after-fix real behavior proof. proof: sufficient ClawSweeper judged the real behavior proof convincing. P2 Normal backlog priority with limited blast radius. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. merge-risk: 🚨 message-delivery 🚨 May drop, duplicate, misroute, suppress, or wrongly target messages. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. clawsweeper Tracked by ClawSweeper automation labels May 22, 2026
@clawsweeper

clawsweeper Bot commented May 22, 2026

Copy link
Copy Markdown
Contributor Author

Codex review: needs changes before merge. Reviewed May 28, 2026, 11:09 PM ET / 03:09 UTC.

Summary
This PR adds a Discord-only streaming.progress.commentary option, renders preamble item events as transient progress draft commentary, updates config schema/UI hints/docs/generated metadata, and adds focused tests.

PR surface: Source +146, Tests +279, Docs +2, Generated 0. Total +427 across 13 files.

Reproducibility: yes. from source inspection: in the advertised non-direct Discord progress configuration with toolProgress: false, dispatch blocks onItemEvent before the new commentary handler can run. I did not run a live Discord reproduction, but the PR discussion reports the same live failure.

Review metrics: 1 noteworthy metric.

  • Discord config surface: 1 added, default false. The PR adds streaming.progress.commentary, so maintainers should explicitly review upgrade/default behavior before merge.

Merge readiness
Overall: 🧂 unranked krab
Proof: 🧂 unranked krab
Patch quality: 🧂 unranked krab
Result: blocked until stronger real behavior proof is added.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • [P1] Fix the dispatch callback gate for commentary with toolProgress: false.
  • [P1] Add a regression that exercises the dispatch wrapper, not only direct replyOptions.onItemEvent calls.
  • Post redacted current-head Discord proof showing commentary visible, tool rows hidden, and final delivery unchanged.

Proof guidance:

  • [P1] Needs stronger real behavior proof before merge: The inherited live-output proof is no longer sufficient because later live feedback reported the advertised config did not stream commentary; add redacted live Discord output, logs, or a recording for the current head, then update the PR body to trigger re-review or ask a maintainer to comment @clawsweeper re-review.

Mantis proof suggestion
A real Discord-visible progress draft is the clearest proof that commentary appears while tool rows stay hidden and final delivery remains normal. A maintainer can ask Mantis to capture proof by posting a new PR comment that starts with the OpenClaw Mantis account mention, followed by:

visual task: verify Discord progress mode with commentary=true and toolProgress=false shows transient commentary, hides tool rows, and delivers the final reply normally.

Risk before merge

  • [P1] The advertised commentary: true plus toolProgress: false Discord configuration can silently show no commentary because item callbacks are still gated by tool-summary visibility.
  • [P1] This adds a new Discord config/schema surface and changes transient draft-message behavior, so maintainers need upgrade/default proof before merge even though the default is off.
  • [P1] The PR discussion reports overlapping open work in the same Discord monitor functions, so the branch needs a final refresh/coordination check before landing.
  • [P1] The current PR body lacks after-fix real Discord proof for the current head after live feedback invalidated the inherited proof.

Maintainer options:

  1. Repair Commentary Callback Gating (recommended)
    Allow Discord preamble/commentary item callbacks through when progress.commentary is enabled while keeping tool rows suppressed by progress.toolProgress, and cover it through the dispatch wrapper.
  2. Require Maintainer Design Approval
    If maintainers are still deciding whether a new Discord config key is acceptable, pause merge until that product/config decision is explicit.
  3. Close If The Config Surface Is Rejected
    If maintainers decide commentary should not be a new OpenClaw config surface, close this replacement and keep the linked issue open for a different design.
Copy recommended automerge instruction
@clawsweeper automerge

Special instructions:
Fix the Discord commentary progress dispatch gate so commentary/preamble `onItemEvent` callbacks still reach Discord progress mode when `progress.commentary=true` and `progress.toolProgress=false`, without re-enabling tool progress rows. Add regression coverage through `dispatch-from-config` or the full `processDiscordMessage` path instead of only calling `replyOptions.onItemEvent` directly. Run `node scripts/run-vitest.mjs extensions/discord/src/monitor/message-handler.process.test.ts src/auto-reply/reply/dispatch-from-config.test.ts src/plugin-sdk/channel-streaming.test.ts src/config/schema.test.ts --run`, `pnpm config:schema:check`, `pnpm config:channels:check`, and `git diff --check`. Do not edit `CHANGELOG.md`.

Next step before merge

  • [P2] A narrow dispatch-gate repair is automation-suitable, but merge still needs real Discord proof after the repair.

Security
Cleared: No concrete security or supply-chain regression was found; the diff does not change dependencies, workflows, secret handling, or broad permissions, and the commentary display is default-off.

Review findings

  • [P1] Forward commentary before the tool-progress gate — extensions/discord/src/monitor/message-handler.process.ts:982
Review details

Best possible solution:

Repair the dispatch callback path so commentary progress is independent from tool-row visibility, keep the Discord config default off, and require current-head real Discord proof before merge.

Do we have a high-confidence way to reproduce the issue?

Yes from source inspection: in the advertised non-direct Discord progress configuration with toolProgress: false, dispatch blocks onItemEvent before the new commentary handler can run. I did not run a live Discord reproduction, but the PR discussion reports the same live failure.

Is this the best way to solve the issue?

No; the Discord rendering direction is plausible, but the implementation must fix the dispatch wrapper so commentary callbacks are independent from tool-row visibility and then prove the real Discord path.

Full review comments:

  • [P1] Forward commentary before the tool-progress gate — extensions/discord/src/monitor/message-handler.process.ts:982
    The new preamble branch only runs after dispatch forwards onItemEvent, but dispatch still wraps item callbacks with requiresToolSummaryVisibility: true. With the advertised Discord config streaming.mode: "progress", progress.commentary: true, and progress.toolProgress: false, tool summaries are disabled and non-direct item callbacks are dropped before this handler runs, so commentary can remain invisible in a real Discord turn. Please add a dispatch-level path/regression that lets commentary callbacks through without re-enabling tool rows.
    Confidence: 0.91

Overall correctness: patch is incorrect
Overall confidence: 0.89

AGENTS.md: found and applied where relevant.

Codex review notes: model gpt-5.5, reasoning high; reviewed against 01d9963e4e81.

Label changes

Label changes:

  • add merge-risk: 🚨 compatibility: The PR adds a new Discord config/schema surface and generated metadata that existing installs and docs must accept consistently.

Label justifications:

  • P2: This is a normal-priority Discord progress improvement with a clear merge-blocking defect but limited blast radius and default-off behavior.
  • merge-risk: 🚨 message-delivery: Merging as-is can leave the advertised Discord progress draft commentary absent while final delivery appears otherwise normal.
  • merge-risk: 🚨 compatibility: The PR adds a new Discord config/schema surface and generated metadata that existing installs and docs must accept consistently.
  • rating: 🧂 unranked krab: Overall readiness is 🧂 unranked krab; proof is 🧂 unranked krab and patch quality is 🧂 unranked krab.
  • status: 🚀 automerge armed: This PR is in ClawSweeper's automerge lane. Needs stronger real behavior proof before merge: The inherited live-output proof is no longer sufficient because later live feedback reported the advertised config did not stream commentary; add redacted live Discord output, logs, or a recording for the current head, then update the PR body to trigger re-review or ask a maintainer to comment @clawsweeper re-review.
Evidence reviewed

PR surface:

Source +146, Tests +279, Docs +2, Generated 0. Total +427 across 13 files.

View PR surface stats
Area Files Added Removed Net
Source 7 152 6 +146
Tests 4 279 0 +279
Docs 1 2 0 +2
Config 0 0 0 0
Generated 1 17 17 0
Other 0 0 0 0
Total 13 450 23 +427

Acceptance criteria:

  • [P1] node scripts/run-vitest.mjs extensions/discord/src/monitor/message-handler.process.test.ts src/auto-reply/reply/dispatch-from-config.test.ts src/plugin-sdk/channel-streaming.test.ts src/config/schema.test.ts --run.
  • [P1] pnpm config:schema:check.
  • [P1] pnpm config:channels:check.
  • [P1] git diff --check.
  • [P1] Add redacted live Discord output, logs, recording, or a Mantis artifact after the repair showing commentary=true and toolProgress=false behavior.

What I checked:

Likely related people:

  • vincentkoc: Current blame for the Discord replyOptions block and dispatch callback gate points to commit 14ce873 in the shallow main history. (role: recent area contributor; confidence: medium; commits: 14ce8733fe71; files: extensions/discord/src/monitor/message-handler.process.ts, src/auto-reply/reply/dispatch-from-config.ts)
  • steipete: Recent main history touches the Discord draft-preview controller in commit 27ae826, and the PR timeline shows current-head force-push follow-up by this account. (role: recent area contributor and PR follow-up owner; confidence: medium; commits: 27ae826f6525, 76085db42280; files: extensions/discord/src/monitor/message-handler.draft-preview.ts, extensions/discord/src/monitor/message-handler.process.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@openclaw-barnacle openclaw-barnacle Bot removed the proof: supplied External PR includes structured after-fix real behavior proof. label May 22, 2026
@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 🚀 automerge armed This PR is in ClawSweeper's automerge lane. and removed rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. labels May 22, 2026
@clawsweeper

clawsweeper Bot commented May 22, 2026

Copy link
Copy Markdown
Contributor Author

ClawSweeper PR egg

✨ Hatched: 🥚 common Cosmic Branchling

Hatch command

Comment @clawsweeper hatch when this PR is hatchable.

Hatchability rules:

  • Merged PRs are hatchable.
  • Open PRs are hatchable when they are status: 👀 ready for maintainer look, status: 🚀 automerge armed, or labeled clawsweeper:automerge.
  • Closed unmerged PRs are hatchable only when one of those hatchable labels is still present in the durable record.

Rarity: 🥚 common.
Trait: hums during re-review.
Image traits: location green-check meadow; accessory shell-shaped keyboard; palette pearl, teal, and neon green; mood patient; pose balancing on a branch marker; shell soft velvet shell; lighting soft studio lighting; background little resolved-comment flags.
Share on X: post this hatch
Copy: My PR egg hatched a 🥚 common Cosmic Branchling in ClawSweeper.

What is this egg doing here?
  • Eggs appear after the PR passes real-behavior proof. It is here for vibes, not verdicts: it does not change labels, ratings, merge decisions, or automation.
  • The shell reacts to review momentum: open follow-up work warms it up, re-review makes it wobble, and a clean final review lets it hatch.
  • Hatchability usually comes from sufficient real-behavior proof, no blocking P0/P1/P2 findings, no security attention needed, and clean correctness. A merged PR is already final, so merge makes the egg hatchable independently.
  • The hatch is seeded from this repository and PR number, so the same PR keeps the same creature; the reviewed head SHA can only change safe visual details.
  • Rarity is just collectible sparkle: 🥚 common, 🌱 uncommon, 💎 rare, ✨ glimmer, and 🌈 legendary.

@Takhoffman

Copy link
Copy Markdown
Contributor

@clawsweeper re-review is this adding a new config option? If so can it be done without a new config option and utilize and existing option?

@clawsweeper

clawsweeper Bot commented May 25, 2026

Copy link
Copy Markdown
Contributor Author

🦞👀
ClawSweeper assist is taking a look at your question.

I queued a lightweight read-only assist pass. It will post a separate answer comment and will not edit the durable ClawSweeper review comment or trigger close, merge, repair, label, or branch changes.

Request: re-review is this adding a new config option? If so can it be done without a new config option and utilize and existing option?

@clawsweeper

clawsweeper Bot commented May 25, 2026

Copy link
Copy Markdown
Contributor Author

ClawSweeper assist: Yes. This PR adds a new config option, streaming.progress.commentary. From the supplied context, it is intentionally separate from existing toolProgress so commentary can be shown while tool rows remain hidden. Reusing toolProgress would not preserve that requested behavior.

Evidence:

  • src/config/types.base.ts adds commentary?: boolean under ChannelStreamingProgressConfig.
  • src/config/zod-schema.providers-core.ts adds commentary to the strict progress schema.
  • Discord docs add streaming.progress.commentary with default false.
  • The linked issue Discord progress drafts should support assistant commentary events #83307 explicitly asks for progress.commentary: true and says progress.toolProgress: false should hide tool rows without disabling commentary.
  • Tests cover commentary as independently enabled from tool progress.

Suggested next action: If you want a full design/correctness review of whether this option should exist versus reusing an existing setting, ask @clawsweeper review on #85200.


Source: #85200 (comment)
Assist model: gpt-5.5, reasoning low.

@bryanpearson

Copy link
Copy Markdown
Contributor

FYI: The current tests mock dispatchInboundMessage and call replyOptions.onItemEvent directly, so they bypass the dispatch progress-callback gate. In a live Discord channel with:

streaming.mode: progress
streaming.progress.commentary: true
streaming.progress.toolProgress: false
streaming.preview.toolProgress: false

the PR patch alone did not stream commentary. The callback was gated out because default/tool progress was suppressed. We needed to let Discord request quiet progress callbacks when commentary is enabled, while still hiding tool progress rows.

@BingqingLyu

This comment was marked as spam.

@steipete steipete self-assigned this May 29, 2026
@steipete steipete force-pushed the clawsweeper/automerge-openclaw-openclaw-85164 branch 3 times, most recently from 2f3daf0 to ff1788a Compare May 29, 2026 02:34
@clawsweeper clawsweeper Bot added the rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. label May 29, 2026
@steipete steipete force-pushed the clawsweeper/automerge-openclaw-openclaw-85164 branch from 9c82a74 to bec673c Compare May 29, 2026 02:54
@openclaw-barnacle openclaw-barnacle Bot added the agents Agent runtime and tooling label May 29, 2026
@steipete steipete force-pushed the clawsweeper/automerge-openclaw-openclaw-85164 branch from bec673c to d3ad30b Compare May 29, 2026 02:59
@openclaw-barnacle openclaw-barnacle Bot removed the agents Agent runtime and tooling label May 29, 2026
@clawsweeper clawsweeper Bot added the merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. label May 29, 2026
@steipete steipete force-pushed the clawsweeper/automerge-openclaw-openclaw-85164 branch from 76085db to dfbb1c2 Compare May 29, 2026 03:15
@openclaw-barnacle openclaw-barnacle Bot added the agents Agent runtime and tooling label May 29, 2026
@steipete

Copy link
Copy Markdown
Contributor

Verification for head dfbb1c2:

Behavior addressed: Discord progress drafts can opt into assistant commentary/preamble rows while final delivery and default hidden-commentary behavior stay unchanged.
Real environment tested: local macOS checkout plus GitHub Actions on openclaw/openclaw PR #85200.
Exact steps or command run after this patch: pnpm lint --threads=8; pnpm check:test-types; pnpm test extensions/discord/src/draft-stream.test.ts extensions/discord/src/monitor/message-handler.process.test.ts src/config/schema.test.ts src/plugin-sdk/channel-streaming.test.ts src/agents/models-config.uses-first-github-copilot-profile-env-tokens.test.ts; git diff --check; autoreview --mode local.
Evidence after fix: GitHub required checks are complete with no failures on dfbb1c2; local focused tests passed 4 Vitest shards with 169 tests.
Observed result after fix: commentary is stripped/sanitized for draft display, stale commentary rows are deleted without ending the active draft stream, and Discord-only config/schema metadata covers the new progress option.
What was not tested: live Discord API delivery was not exercised for this maintainer fixup; coverage is local unit/config/type/lint plus CI.

@steipete steipete merged commit 4df1fcf into main May 29, 2026
107 of 109 checks passed
@steipete steipete deleted the clawsweeper/automerge-openclaw-openclaw-85164 branch May 29, 2026 03:21
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request May 29, 2026
Adds opt-in Discord progress-draft commentary for assistant preambles while keeping commentary hidden by default and final delivery unchanged.
Keeps commentary config Discord-specific, strips directive tags/NO_REPLY, and clears stale commentary rows without stopping the active draft stream.
Thanks @bryanpearson.

Co-authored-by: bryanpearson <bryanmpearson@gmail.com>
anagnorisis2peripeteia added a commit to anagnorisis2peripeteia/openclaw that referenced this pull request May 30, 2026
…r + tests)

Real implementation, not scaffolding:

- transcript.ts: the channel-neutral body math, ported self-contained from the
  Telegram interleaved lane (openclaw#87072) — cumulative-snapshot delta-append with
  cross-stream overlap-fold dedup, computeSpill (per-channel maxChars), no-content
  guard, timestamped status lines, rolling-timer render with wall-clock stamp,
  defensive final-answer strip, tool-line resolution (name vs sanitized args).
- controller.ts: createProgressLane({sink,config}) — owns body, rollover offset,
  per-stream checkpoints, the 20s timer; wires the generic agent callbacks
  (onReasoning/onCommentary/onTool/onEvent/finalize) → a channel sink. Commentary
  is off by default (keeps reply prose out, the openclaw#87072 behavior).
- sink.ts: ProgressLaneSink (maxChars/render/update/spill) + superset
  ProgressLaneConfig (reasoning/commentary/toolRows/toolArgs/timer — nothing
  dropped from TG openclaw#87072 or Discord openclaw#85200). Body-string contract today;
  segment-structuring for card channels is a documented follow-up.
- controller.test.ts: 9 end-to-end cases (disabled gate, reasoning dedup,
  commentary gate, timestamped tool rows + toolArgs gate, timer stamp, spill
  under cap, no-empty-header, final-answer strip).

tsgo:core clean, oxlint clean, 9/9 green. Channel sinks (Telegram/Discord/
MSTeams/Feishu) wire next per the README roadmap; no existing behavior touched.
anagnorisis2peripeteia added a commit to anagnorisis2peripeteia/openclaw that referenced this pull request May 30, 2026
Adapts the channel-neutral ProgressLaneSink onto Discord's existing
createDiscordDraftStream: render is identity (the engine body is already
Discord markdown), update edits the durable message, spill rolls over via
forceNewMessage before the 2000-char cap. Additive and opt-in — does not
replace the line-based progress draft controller (openclaw#85200).

Split into a pure adapter seam (discordProgressLaneSinkFromStream) + a
real-stream factory so the adapter is unit-tested without Discord REST.
5 tests; tsgo:extensions + oxlint clean.
eleboucher pushed a commit to eleboucher/homelab that referenced this pull request May 31, 2026
…026.5.28) (#759)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/openclaw/openclaw](https://openclaw.ai) ([source](https://github.com/openclaw/openclaw)) | patch | `2026.5.27` → `2026.5.28` |

---

### Release Notes

<details>
<summary>openclaw/openclaw (ghcr.io/openclaw/openclaw)</summary>

### [`v2026.5.28`](https://github.com/openclaw/openclaw/blob/HEAD/CHANGELOG.md#2026528)

[Compare Source](openclaw/openclaw@v2026.5.27...v2026.5.28)

##### Highlights

- Agent and Codex runtime recovery is steadier: subagents keep cwd/workspace separation, hook context stays prompt-local, session locks release on timeout abort while live OpenClaw locks survive cleanup, stale restart continuations are avoided, and Codex app-server/helper failures no longer tear down shared runtime state. ([#&#8203;87218](openclaw/openclaw#87218), [#&#8203;86875](openclaw/openclaw#86875), [#&#8203;87409](openclaw/openclaw#87409), [#&#8203;87399](openclaw/openclaw#87399), [#&#8203;87375](openclaw/openclaw#87375), [#&#8203;88129](openclaw/openclaw#88129))
- Channel delivery and session identity got safer across outbound plugin hooks, Matrix room ids, iMessage reactions/approvals, Slack final replies, Discord recovered tool warnings, runtime-config message actions, WhatsApp profile auth roots, Telegram polling, and Microsoft Teams service URL trust checks. ([#&#8203;73706](openclaw/openclaw#73706), [#&#8203;75670](openclaw/openclaw#75670), [#&#8203;87366](openclaw/openclaw#87366), [#&#8203;87451](openclaw/openclaw#87451), [#&#8203;87334](openclaw/openclaw#87334), [#&#8203;84535](openclaw/openclaw#84535), [#&#8203;82492](openclaw/openclaw#82492), [#&#8203;83304](openclaw/openclaw#83304), [#&#8203;87160](openclaw/openclaw#87160))
- Mobile and chat surfaces got a broader refresh: the iOS Pro UI, hosted push relay default, realtime Talk tab playback, Gateway chat transport, onboarding, Talk permissions, WebChat reconnect delivery, and session picker behavior now preserve more state across reconnects and empty searches. ([#&#8203;87367](openclaw/openclaw#87367), [#&#8203;87531](openclaw/openclaw#87531), [#&#8203;87682](openclaw/openclaw#87682), [#&#8203;88096](openclaw/openclaw#88096), [#&#8203;88105](openclaw/openclaw#88105)) Thanks [@&#8203;ngutman](https://github.com/ngutman) and [@&#8203;BunsDev](https://github.com/BunsDev).
- Browser, channel, and automation inputs are stricter: Browser tool timeouts, viewport/tab indices, Gateway ports, cron retry handling, Discord component ids, schema array refs, Telegram callback pages, and channel progress callbacks now reject malformed values earlier and preserve the intended delivery context. ([#&#8203;82887](openclaw/openclaw#82887))
- Provider, media, and document coverage expands with Claude Opus 4.8, Fal Krea image schemas, NVIDIA featured models, MiniMax streaming music responses, encrypted PDF extraction, voice model catalogs, GitHub Copilot agent runtime support, and a Codex Supervisor plugin path for delegated Codex workflows. ([#&#8203;87845](openclaw/openclaw#87845), [#&#8203;87890](openclaw/openclaw#87890), [#&#8203;80775](openclaw/openclaw#80775), [#&#8203;84764](openclaw/openclaw#84764), [#&#8203;87751](openclaw/openclaw#87751), [#&#8203;87794](openclaw/openclaw#87794))
- CLI, auth, doctor, and provider paths fail faster and recover more clearly: malformed numeric/version options are rejected, workspace dotenv provider credentials are ignored, heartbeat defaults, OAuth/token lifetimes, and local service startup requests are bounded, agent auth health labels are clearer, legacy `api_key` auth profiles migrate to canonical form, and restart guidance is actionable. ([#&#8203;87398](openclaw/openclaw#87398), [#&#8203;86281](openclaw/openclaw#86281), [#&#8203;87361](openclaw/openclaw#87361), [#&#8203;88133](openclaw/openclaw#88133), [#&#8203;83655](openclaw/openclaw#83655), [#&#8203;87559](openclaw/openclaw#87559), [#&#8203;88088](openclaw/openclaw#88088), [#&#8203;85924](openclaw/openclaw#85924)) Thanks [@&#8203;vincentkoc](https://github.com/vincentkoc) and [@&#8203;giodl73-repo](https://github.com/giodl73-repo).
- Plugin and Gateway hot paths do less repeated work while preserving cache correctness for install records, config JSON parsing, tool search catalogs, session stores, manifest model rows, auto-enabled plugin config, browser tokens, viewer assets, and release-split external plugin packages. ([#&#8203;86699](openclaw/openclaw#86699))
- Release, QA, and E2E validation now bound more log, artifact, harness, and cross-OS waits so failing lanes produce proof instead of hanging or false-greening.

##### Changes

- Status: show active subagent details in status output.
- Diffs: split the default language pack and expand default Diffs language coverage while keeping the host floor aligned. ([#&#8203;87370](openclaw/openclaw#87370), [#&#8203;87372](openclaw/openclaw#87372)) Thanks [@&#8203;RomneyDa](https://github.com/RomneyDa).
- ClawHub: add plugin display names plus skill verification and trust surfaces. ([#&#8203;87354](openclaw/openclaw#87354), [#&#8203;86699](openclaw/openclaw#86699)) Thanks [@&#8203;thewilloftheshadow](https://github.com/thewilloftheshadow) and [@&#8203;Patrick-Erichsen](https://github.com/Patrick-Erichsen).
- iOS: refresh the dev app with Pro Command, Chat, Agents, Settings, hosted push relay defaults, and realtime Talk playback wired to gateway sessions, diagnostics, chat, and realtime Talk. ([#&#8203;87367](openclaw/openclaw#87367), [#&#8203;88096](openclaw/openclaw#88096), [#&#8203;88105](openclaw/openclaw#88105)) Thanks [@&#8203;Solvely-Colin](https://github.com/Solvely-Colin) and [@&#8203;ngutman](https://github.com/ngutman).
- Docs: clarify Codex computer-use setup, paste-token stdin auth setup, macOS gateway sleep troubleshooting, native Codex hook relay recovery, container model auth, install deployment cards, device-token admin gating, CLI setup flow compatibility, Notte cloud browser CDP setup, and backport targets. ([#&#8203;87313](openclaw/openclaw#87313), [#&#8203;63050](openclaw/openclaw#63050), [#&#8203;87685](openclaw/openclaw#87685)) Thanks [@&#8203;bdjben](https://github.com/bdjben), [@&#8203;liaoandi](https://github.com/liaoandi), and [@&#8203;thewilloftheshadow](https://github.com/thewilloftheshadow).
- PDF/tools: use ClawPDF for PDF extraction, support encrypted PDF extraction, and surface MCP structured content in agent tool results. ([#&#8203;87670](openclaw/openclaw#87670), [#&#8203;87751](openclaw/openclaw#87751))
- Providers: add Claude Opus 4.8 support, Fal Krea image model schemas, NVIDIA featured model catalogs, MiniMax streaming music responses, and provider-backed voice model catalogs. ([#&#8203;87845](openclaw/openclaw#87845), [#&#8203;87890](openclaw/openclaw#87890), [#&#8203;80775](openclaw/openclaw#80775), [#&#8203;84764](openclaw/openclaw#84764), [#&#8203;87794](openclaw/openclaw#87794)) Thanks [@&#8203;eleqtrizit](https://github.com/eleqtrizit) and [@&#8203;vincentkoc](https://github.com/vincentkoc).
- Codex/GitHub: add the GitHub Copilot agent runtime and the Codex Supervisor plugin package.
- Plugins: externalize GitHub Copilot and Tokenjuice as official install-on-demand plugins with npm and ClawHub publish metadata.
- Workboard: add agent coordination tools for tracking and handing off active agent work.
- Discord: show commentary in progress drafts so live Discord runs expose useful in-progress context. ([#&#8203;85200](openclaw/openclaw#85200))
- Plugin SDK: add a reply payload sending hook for plugins that need to deliver channel-owned replies and flatten package types for SDK declarations. ([#&#8203;82823](openclaw/openclaw#82823), [#&#8203;87165](openclaw/openclaw#87165)) Thanks [@&#8203;piersonr](https://github.com/piersonr) and [@&#8203;RomneyDa](https://github.com/RomneyDa).
- Policy: add policy comparison, ingress-channel conformance, and sandbox-posture conformance checks. ([#&#8203;85572](openclaw/openclaw#85572), [#&#8203;85744](openclaw/openclaw#85744), [#&#8203;86768](openclaw/openclaw#86768))

##### Fixes

- Agents: fall back to local config pruning when the optional `agents delete` Gateway probe cannot authenticate, so offline installs can still delete agents without removing shared workspaces.
- Tighten phone-control mutation authorization \[AI]. ([#&#8203;87150](openclaw/openclaw#87150)) Thanks [@&#8203;pgondhi987](https://github.com/pgondhi987).
- Clarify directive persistence authorization policy \[AI]. ([#&#8203;86369](openclaw/openclaw#86369)) Thanks [@&#8203;pgondhi987](https://github.com/pgondhi987).
- Agents/Codex: keep spawned agent cwd/workspace state separated, forward ACP spawn attachments, keep hook context prompt-local, release session locks on timeout abort and runtime teardown without deleting live OpenClaw-owned locks during cleanup, avoid session event queue self-wait, clean up exec abort listeners, stream assistant deltas incrementally, recover raw missing-thread compaction failures, preserve rotated compaction session identity, keep compaction-timeout snapshots continuable, preserve shared app-server state across startup or helper failures, keep native hook relay alive across restarts and prune stale bridge files, close native hook relay replacement races, keep Claude live tool progress visible for watchdog recovery, suppress abandoned requester completion handoff, route workspace memory through tools, resolve Codex runtime models first, report quarantined dynamic tools, format `skills` command output, bind node auto-review to prepared plans, retry Claude CLI transcript probes, and bound compaction/steering retries. ([#&#8203;87218](openclaw/openclaw#87218), [#&#8203;86875](openclaw/openclaw#86875), [#&#8203;86123](openclaw/openclaw#86123), [#&#8203;88129](openclaw/openclaw#88129), [#&#8203;87399](openclaw/openclaw#87399), [#&#8203;87375](openclaw/openclaw#87375), [#&#8203;72574](openclaw/openclaw#72574), [#&#8203;87383](openclaw/openclaw#87383), [#&#8203;87400](openclaw/openclaw#87400), [#&#8203;83022](openclaw/openclaw#83022), [#&#8203;87671](openclaw/openclaw#87671), [#&#8203;87738](openclaw/openclaw#87738), [#&#8203;87747](openclaw/openclaw#87747), [#&#8203;87706](openclaw/openclaw#87706), [#&#8203;87546](openclaw/openclaw#87546), [#&#8203;87541](openclaw/openclaw#87541), [#&#8203;81048](openclaw/openclaw#81048)) Thanks [@&#8203;mbelinky](https://github.com/mbelinky), [@&#8203;Alix-007](https://github.com/Alix-007), [@&#8203;luoyanglang](https://github.com/luoyanglang), [@&#8203;yetval](https://github.com/yetval), [@&#8203;sjf](https://github.com/sjf), [@&#8203;joshavant](https://github.com/joshavant), [@&#8203;benjamin1492](https://github.com/benjamin1492), [@&#8203;c19354837](https://github.com/c19354837), [@&#8203;fuller-stack-dev](https://github.com/fuller-stack-dev), [@&#8203;pfrederiksen](https://github.com/pfrederiksen), and [@&#8203;dodge1218](https://github.com/dodge1218).
- Codex Supervisor: keep real-home app-server MCP session listing on the loaded state path, bound stored history scans, and close WebSocket probes cleanly.
- Channels: thread canonical session keys into outbound hooks, preserve Matrix room-id case, keep fallback tool warnings mention-inert, retain delivered Slack final replies during late cleanup, continue iMessage polling after denied reactions, suppress duplicate native exec approvals, resolve Gateway message actions against the active runtime config, preserve Telegram SecretRef prompt config and polling keepalives, preserve WhatsApp profile auth roots, QR display, document filenames, and plugin hook config, suppress Discord recovered tool warnings, preserve the Discord voice outbound helper, cap Discord/Signal/Zalo channel request and container timeouts, and block untrusted Teams service URLs while keeping TeamsSDK patterns aligned. ([#&#8203;73706](openclaw/openclaw#73706), [#&#8203;75670](openclaw/openclaw#75670), [#&#8203;87366](openclaw/openclaw#87366), [#&#8203;87451](openclaw/openclaw#87451), [#&#8203;87465](openclaw/openclaw#87465), [#&#8203;87334](openclaw/openclaw#87334), [#&#8203;84535](openclaw/openclaw#84535), [#&#8203;76262](openclaw/openclaw#76262), [#&#8203;83304](openclaw/openclaw#83304), [#&#8203;82492](openclaw/openclaw#82492), [#&#8203;87581](openclaw/openclaw#87581), [#&#8203;77114](openclaw/openclaw#77114), [#&#8203;86426](openclaw/openclaw#86426), [#&#8203;85529](openclaw/openclaw#85529), [#&#8203;87160](openclaw/openclaw#87160)) Thanks [@&#8203;zeroaltitude](https://github.com/zeroaltitude), [@&#8203;lukeboyett](https://github.com/lukeboyett), [@&#8203;jarvis-mns1](https://github.com/jarvis-mns1), [@&#8203;xiaotian](https://github.com/xiaotian), [@&#8203;funmerlin](https://github.com/funmerlin), [@&#8203;joshavant](https://github.com/joshavant), [@&#8203;eleqtrizit](https://github.com/eleqtrizit), [@&#8203;heyitsaamir](https://github.com/heyitsaamir), [@&#8203;amittell](https://github.com/amittell), [@&#8203;lidge-jun](https://github.com/lidge-jun), [@&#8203;liorb-mountapps](https://github.com/liorb-mountapps), [@&#8203;masatohoshino](https://github.com/masatohoshino), [@&#8203;bladin](https://github.com/bladin), and [@&#8203;giodl73-repo](https://github.com/giodl73-repo).
- CLI/auth/doctor/providers: reject malformed numeric/timeout/subcommand-version inputs, ignore workspace dotenv provider credentials, wait for respawn child shutdown, bound heartbeat defaults plus Codex, GitHub Copilot, OpenAI, Anthropic, Google, Feishu, LM Studio, MiniMax, Xiaomi TTS, and local-provider OAuth/token/model requests, harden Codex auth probes, label auth health by agent, preserve explicit agentRuntime pins during Codex model migration, warm provider auth off the main thread, honor Codex response timeouts, stop migrating current Claude Haiku 4.5 profiles to Sonnet, bound local service startup, resolve GPT-5.5 without cached catalog, migrate legacy memory auto-provider config, rewrite non-canonical `api_key` auth profiles, and make doctor restart follow-ups actionable. ([#&#8203;87398](openclaw/openclaw#87398), [#&#8203;86281](openclaw/openclaw#86281), [#&#8203;87361](openclaw/openclaw#87361), [#&#8203;88133](openclaw/openclaw#88133), [#&#8203;83655](openclaw/openclaw#83655), [#&#8203;87559](openclaw/openclaw#87559), [#&#8203;87719](openclaw/openclaw#87719), [#&#8203;88088](openclaw/openclaw#88088), [#&#8203;85924](openclaw/openclaw#85924), [#&#8203;84362](openclaw/openclaw#84362)) Thanks [@&#8203;Patrick-Erichsen](https://github.com/Patrick-Erichsen), [@&#8203;samzong](https://github.com/samzong), [@&#8203;giodl73-repo](https://github.com/giodl73-repo), [@&#8203;alkor2000](https://github.com/alkor2000), [@&#8203;mmaps](https://github.com/mmaps), [@&#8203;nxmxbbd](https://github.com/nxmxbbd), and [@&#8203;vincentkoc](https://github.com/vincentkoc).
- Gateway/security/session state: expire browser tokens after auth rotation, scope assistant idempotency dedupe, drain probe client closes, avoid stale restart continuation reuse, preserve retry-after fallbacks and stale rate-limit cooldown probes, bound webchat image and artifact transcript scans, include seconds in inbound metadata timestamps, clear completed session active runs, clear stale chat stream buffers, and evict current plugin-state namespaces at row caps. ([#&#8203;87810](openclaw/openclaw#87810), [#&#8203;87833](openclaw/openclaw#87833), [#&#8203;75089](openclaw/openclaw#75089)) Thanks [@&#8203;joshavant](https://github.com/joshavant) and [@&#8203;litang9](https://github.com/litang9).
- Config/parsing/network: reject partial numeric parsing, parse provider/Discord retry headers and dates strictly, honor IPv6 and bare IPv6 `no_proxy` entries, preserve empty plugin allowlists, canonicalize secret target array indexes, and reject malformed media content lengths, inspected TCP ports, marketplace content lengths, cron epochs, sandbox stat fields, unsafe duration values, empty config path segments, noncanonical schema array refs, unsafe Telegram callback pages, and invalid Teams attachment-fetch DNS targets. ([#&#8203;87883](openclaw/openclaw#87883)) Thanks [@&#8203;zhangguiping-xydt](https://github.com/zhangguiping-xydt).
- Browser/input hardening: reject invalid tab indexes, excessive viewport resizes, explicit zero CDP ports, malformed geolocation options, unsafe screenshot or permission-grant timeouts, loose response-body limits, invalid cookie expiries, and non-finite Browser tool delays/timeouts.
- Cron/automation: retry recurring jobs after transient model rate limits before waiting for the next scheduled slot, and preflight model fallbacks before skipping scheduled work. ([#&#8203;82887](openclaw/openclaw#82887)) Thanks [@&#8203;chen-zhang-cs-code](https://github.com/chen-zhang-cs-code).
- Auto-reply/directives: respect provider and relayed channel metadata during directive persistence so channel-originated decisions keep their intended context. ([#&#8203;87683](openclaw/openclaw#87683))
- WhatsApp: resolve the auth directory from the active profile so profile-scoped WhatsApp installs do not drift to the wrong credential root. ([#&#8203;82492](openclaw/openclaw#82492)) Thanks [@&#8203;lidge-jun](https://github.com/lidge-jun).
- Gateway/session state: clear completed session active runs, avoid cold-loading providers for MCP inventory, cache single-session child indexes, cap handshake timers, and bound preauth, auth-guard, media, transcript, readiness, and port options.
- Channels/replies: preserve channel-owned progress callbacks when verbose output is off, keep group-room progress suppression intact, prefer external session delivery context, escape Discord component id delimiters, force final TUI chat repaints, show Slack reasoning previews, and normalize Discord/Matrix/Mattermost channel numeric options. ([#&#8203;87476](openclaw/openclaw#87476), [#&#8203;87423](openclaw/openclaw#87423))
- Agents/tool args: harden smart-quoted argument repair for edit arrays and exact escaped arguments so model-produced tool calls recover without corrupting valid input. ([#&#8203;86611](openclaw/openclaw#86611)) Thanks [@&#8203;ferminquant](https://github.com/ferminquant).
- Providers/agents: preserve seeded Anthropic signatures, preserve signed thinking payloads, concatenate signature-delta chunks, preserve DeepSeek `reasoning_content` replay across tier suffixes, apply OpenRouter strict9 ids to Mistral routes, promote Ollama plain-text tool calls, load NVIDIA featured model catalogs, stream MiniMax music generation responses, and recover empty preflight compaction. ([#&#8203;87593](openclaw/openclaw#87593), [#&#8203;87493](openclaw/openclaw#87493), [#&#8203;80775](openclaw/openclaw#80775), [#&#8203;84764](openclaw/openclaw#84764)) Thanks [@&#8203;Pluviobyte](https://github.com/Pluviobyte) and [@&#8203;eleqtrizit](https://github.com/eleqtrizit).
- Media/images: skip CLI image cache refs when resolving generated images, allow trusted generated HTML attachments, and bound generated video downloads so stale refs and slow providers fail cleanly. ([#&#8203;87523](openclaw/openclaw#87523), [#&#8203;87982](openclaw/openclaw#87982))
- File transfer: handle late tar stdin pipe errors after archive validation or unpacking has already settled.
- Performance: trust install-record caches between reloads, prefer native JSON parsing, reuse unchanged tool-search catalogs, reuse gateway session and plugin metadata paths, skip unchanged store serialization, patch single-entry session writes, add precomputed session patch writers, reduce store clone allocations, cache manifest model catalog rows and auto-enabled plugin config, avoid full session snapshots for entry reads, defer configured Slack full startup, prefer bundled plugin dist entries, and slim current metadata identity caches. ([#&#8203;87760](openclaw/openclaw#87760))
- Docker/release/QA: package runtime workspace templates, stream cross-OS served artifacts, preserve sparse Crabbox run artifacts, isolate npm plugin installs per package, reject incompatible package plugin API installs, drop the leftover root Sharp dependency from package manifests after the Rastermill migration, bound OpenClaw instance logs, plugin gauntlet relay logs, MCP channel buffers, kitchen-sink scans, agent-turn assertions, QA-Lab credential broker calls, QA Matrix substrate requests, and release scenario logs, and keep release/google live guards current. ([#&#8203;87647](openclaw/openclaw#87647), [#&#8203;87477](openclaw/openclaw#87477)) Thanks [@&#8203;rohitjavvadi](https://github.com/rohitjavvadi) and [@&#8203;vincentkoc](https://github.com/vincentkoc).
- Release/CI: bound manual git fetches, ClawHub verifier responses, ClawHub owner metadata, dependency-guard error bodies, Parallels limits, startup/test/memory budget parsing, and diffs viewer build warnings so release lanes fail with useful proof instead of hanging. ([#&#8203;87839](openclaw/openclaw#87839))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEwMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL3BhdGNoIl19-->

Reviewed-on: https://git.erwanleboucher.dev/eleboucher/homelab/pulls/759
SYU8384 pushed a commit to SYU8384/openclaw that referenced this pull request Jun 3, 2026
Adds opt-in Discord progress-draft commentary for assistant preambles while keeping commentary hidden by default and final delivery unchanged.
Keeps commentary config Discord-specific, strips directive tags/NO_REPLY, and clears stale commentary rows without stopping the active draft stream.
Thanks @bryanpearson.

Co-authored-by: bryanpearson <bryanmpearson@gmail.com>
sablehead pushed a commit to sablehead/openclaw that referenced this pull request Jun 10, 2026
Adds opt-in Discord progress-draft commentary for assistant preambles while keeping commentary hidden by default and final delivery unchanged.
Keeps commentary config Discord-specific, strips directive tags/NO_REPLY, and clears stale commentary rows without stopping the active draft stream.
Thanks @bryanpearson.

Co-authored-by: bryanpearson <bryanmpearson@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agents Agent runtime and tooling channel: discord Channel integration: discord clawsweeper:automerge Maintainer opted this PR into bounded ClawSweeper-reviewed automerge clawsweeper:human-review Needs maintainer review before ClawSweeper can continue clawsweeper Tracked by ClawSweeper automation docs Improvements or additions to documentation merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 message-delivery 🚨 May drop, duplicate, misroute, suppress, or wrongly target messages. P2 Normal backlog priority with limited blast radius. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. size: M status: 🚀 automerge armed This PR is in ClawSweeper's automerge lane.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Discord progress drafts should support assistant commentary events

4 participants