Skip to content

Preserve queued Telegram topic followups#83827

Merged
clawsweeper[bot] merged 2 commits into
openclaw:mainfrom
VACInc:telegram-topic-followup-queue-rca
May 19, 2026
Merged

Preserve queued Telegram topic followups#83827
clawsweeper[bot] merged 2 commits into
openclaw:mainfrom
VACInc:telegram-topic-followup-queue-rca

Conversation

@VACInc

@VACInc VACInc commented May 19, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Detach accepted queued user_request followups from the source-channel abort signal after they enter the reply queue.
  • Keep room_event followups tied to their source abort signal so ambient/current-event work can still be canceled by the admission fence.
  • Stop queued followup execution from falling back to the original source opts.abortSignal; queued execution now uses only the abort metadata carried on the queued item.

Supersedes #83790. This replacement PR keeps the same focused fix and folds the RCA, before/after proof, queue-mode proof, live Telegram-topic logs, and blocked proof attempts into the PR body.

Root Cause

Telegram topic user turns share the generic queued-followup path. Before this patch, runPreparedReply always placed opts.abortSignal onto the queued followup payload, even for user_request turns. For Telegram topics, that signal is the reply-fence signal for the source dispatch; later user turns can supersede that fence while an earlier turn is still active.

That meant a user message that had already been accepted into the followup queue could later look aborted before it drained. The queued runner also reintroduced the same source signal with queued.abortSignal ?? opts?.abortSignal, so simply omitting abortSignal from the queued item was not enough. This PR fixes both halves of the RCA:

  • src/auto-reply/reply/get-reply-run.ts:1047 attaches queued abort metadata only for room_event followups.
  • src/auto-reply/reply/followup-runner.ts:422, :657, and :745 pass only queued.abortSignal into queued reply/CLI/embedded execution.

Queue-Mode Proof

Queue mode is still respected. The patch does not change which turns are enqueued, interrupted, dropped, steered, collected, or followed up.

  • src/auto-reply/reply/get-reply-run.ts:992 resolves activeRunQueueAction before constructing the queued followup payload.
  • src/auto-reply/reply/agent-runner.ts:1178 resolves the same queue policy for active agent runs.
  • src/auto-reply/reply/agent-runner.ts:1205 calls enqueueFollowupRun(...) only after the queue policy chooses enqueue-followup, and it passes the existing resolvedQueue through unchanged.
  • This PR changes only the abort metadata attached to an already accepted queued item and the abort signal used while draining that item.

Telegram Config Context (Redacted)

Source reviewed: active local OpenClaw config for the operator gateway. Personal/private values are intentionally omitted: bot token value, secret-provider command details, allowlist entries, approver identity, agent filter values, sender IDs, chat IDs, group names, usernames, phone numbers, exact topic URLs, and message contents.

  • Telegram channel is enabled; the Telegram plugin entry is enabled; the local telegram-delivery skill is enabled.
  • Bot token is supplied through an exec-backed secret provider. The token value is not stored in the PR body and was not copied into proof output.
  • No named Telegram account configs are present in the active config object; the active gateway uses the runtime default account path.
  • Global message queue mode is collect.
  • Telegram DM policy is pairing; Telegram group policy is allowlist.
  • One DM allow rule and one group allow rule are configured; rule values are redacted.
  • Three Telegram group config entries are present. Two explicitly require mentions; one inherits/defaults. One group has per-sender tool restrictions; sender IDs and restricted tool names are redacted.
  • No explicit per-topic config entries are present in the active config. Forum topics and DM topics use the generic Telegram thread/session routing path rather than topic-specific config policy.
  • Telegram thread bindings are enabled with spawned sessions enabled; configured idle/max-age values are 0/0.
  • Telegram streaming mode is progress, with tool progress enabled and command progress text set to status.
  • Telegram reaction level is minimal; heartbeat showOk is disabled.
  • Telegram exec approvals are enabled for both command and tool flows, with one approver and one agent filter configured; values are redacted.
  • Telegram network settings use dnsResultOrder: ipv4first and autoSelectFamily: false.
  • Telegram DM and group history limits are configured as effectively unbounded in the active config.

Real Behavior Proof

Behavior addressed: Telegram topic user messages accepted while another turn is active should remain queued and run after the active turn, even if the source reply fence is later superseded. room_event followups should still preserve abort metadata and skip when already aborted.

Real environment tested: temp worktree /tmp/openclaw-topic-followups.hEwtrg for the patch and focused tests; current live local Telegram gateway for live topic proof; runtime logs from /tmp/openclaw/openclaw-2026-05-18.log; topic trajectory summaries from ~/.openclaw/agents/main/sessions.

Exact steps or command run after this patch:

node scripts/run-vitest.mjs src/auto-reply/reply/get-reply-run.media-only.test.ts src/auto-reply/reply/followup-runner.test.ts src/auto-reply/reply/queue.collect.test.ts extensions/telegram/src/bot-message-dispatch.test.ts
jq -r 'select((.message // "") | test("topic:<redacted-live-topic>|threadId=<redacted-live-topic>")) | select(.time >= "2026-05-18T19:40:00") | [.time, .message] | @tsv' /tmp/openclaw/openclaw-2026-05-18.log
jq -r 'select((.message // "") | test("topic:<redacted-later-topic>|threadId=<redacted-later-topic>|client closed")) | select(.time >= "2026-05-18T19:53:00") | [.time, .message] | @tsv' /tmp/openclaw/openclaw-2026-05-18.log

Evidence before fix: checked out parent d761b98adc6ff2c824b95d0b2a7a54dfa1177d18 in a separate temp worktree, applied only the new regression tests, and ran:

node scripts/run-vitest.mjs src/auto-reply/reply/get-reply-run.media-only.test.ts src/auto-reply/reply/followup-runner.test.ts

Result on old code:

Test Files  2 failed (2)
Tests  2 failed | 110 passed (112)

FAIL ... followup-runner.test.ts > does not inherit source abort signals for queued user followups
AssertionError: expected AbortSignal { aborted: true } to be undefined

FAIL ... get-reply-run.media-only.test.ts > detaches queued user requests from superseded source abort signals
AssertionError: expected AbortSignal { aborted: false } to be undefined

Evidence after fix: on PR head 695478dc167f6cd54cfe318fe037837494bf832a, the same two-file regression command passed:

Test Files  2 passed (2)
Tests  112 passed (112)

The broader focused touched-surface command also passed:

node scripts/run-vitest.mjs src/auto-reply/reply/get-reply-run.media-only.test.ts src/auto-reply/reply/followup-runner.test.ts src/auto-reply/reply/queue.collect.test.ts extensions/telegram/src/bot-message-dispatch.test.ts
Test Files  4 passed (4)
Tests  220 passed (220)

Current live Telegram topic proof from the active patched gateway shows topic messages receiving replies back into the same Telegram topic after the patch:

2026-05-18T19:41:31.880-04:00  Inbound message telegram:group:-<redacted>:topic:<redacted-live-topic> -> @vacs_tars_bot (group, 12 chars)
2026-05-18T19:41:51.482-04:00  telegram outbound send ok accountId=default chatId=-<redacted> messageId=100708 operation=sendMessage deliveryKind=text threadId=<redacted-live-topic> chunkCount=1
2026-05-18T19:43:23.393-04:00  Inbound message telegram:group:-<redacted>:topic:<redacted-live-topic> -> @vacs_tars_bot (group, 42 chars)
2026-05-18T19:46:27.188-04:00  telegram outbound send ok accountId=default chatId=-<redacted> messageId=100749 operation=sendMessage deliveryKind=text threadId=<redacted-live-topic> chunkCount=1
2026-05-18T19:46:28.027-04:00  telegram outbound send ok accountId=default chatId=-<redacted> messageId=100750 operation=sendMessage deliveryKind=text threadId=<redacted-live-topic> chunkCount=1

The active live runtime also contains the patched abort contract:

dist/get-reply-DqVR3pSa.js: queuedFollowupAbortSignal = inboundEventKind === "room_event" ? opts?.abortSignal : void 0
dist/agent-runner.runtime-CAMJHMX1.js: upstreamAbortSignal: queued.abortSignal
dist/agent-runner.runtime-CAMJHMX1.js: abortSignal: queued.abortSignal

Redacted runtime log excerpt from the original real OpenClaw Telegram-topic failure window showed multiple topic inbounds while active queued work was present, prompt-stage app-server closures, and queued topic diagnostics:

2026-05-18T17:42:08.017-04:00  Inbound message telegram:group:-<redacted>:topic:<redacted-topic-A> -> <redacted>
2026-05-18T17:43:07.782-04:00  Inbound message telegram:group:-<redacted>:topic:<redacted-topic-A> -> <redacted>
2026-05-18T17:43:28.862-04:00  Inbound message telegram:group:-<redacted>:topic:<redacted-topic-C> -> <redacted>
2026-05-18T17:43:43.340-04:00  embedded run failover decision runId=11c4451e-4ab6-4dad-b6ef-edfde684a0cd stage=prompt aborted=false rawErrorPreview="codex app-server client closed before turn completed"
2026-05-18T17:43:43.379-04:00  embedded run failover decision runId=df0003ed-4b49-4be0-8a12-71e1b450eee7 stage=prompt aborted=false rawErrorPreview="codex app-server client closed before turn completed"
2026-05-18T17:44:55.514-04:00  liveness warning ... active=...topic:<redacted-topic-A>(processing/embedded_run,q=2,...)|...topic:<redacted-topic-C>(processing/embedded_run,q=1,...) queued=...topic:<redacted-topic-A>(processing/embedded_run,q=2,...)
2026-05-18T17:59:02.652-04:00  long-running session ... topic:<redacted-topic-D> state=processing queueDepth=1 reason=queued_behind_active_work classification=long_running

Additional redacted trajectory evidence showed repeated Telegram topic abort endings matching the loss mode this patch removes for queued user requests:

externalAbort=true / "Reply operation aborted by user" counts by Telegram topic trajectory:
11 topic:<redacted-topic-A>
9  topic:<redacted-topic-B>
6  topic:<redacted-topic-C>
4  topic:<redacted-topic-D>
4  topic:<redacted-later-topic>
4  topic:<redacted-topic-E>

Later live observation for redacted Telegram redacted later topic: both the original message and the resend reached OpenClaw, but the original did not produce a Telegram reply because that turn ended with a separate app-server client-close failure. This is not counted as fixed-path proof for this PR; it is included so reviewers do not confuse that later live failure with the queued-abort RCA.

2026-05-18T19:53:27.194-04:00  Inbound message telegram:group:-<redacted>:topic:<redacted-later-topic> -> @vacs_tars_bot (group, 275 chars)
2026-05-18T19:56:37.401-04:00  codex app-server client closed before turn completed
2026-05-18T19:56:37.402-04:00  codex app-server client closed before turn completed
2026-05-18T19:56:37.403-04:00  codex app-server client closed before turn completed
2026-05-18T19:56:46.958-04:00  Inbound message telegram:group:-<redacted>:topic:<redacted-later-topic> -> @vacs_tars_bot (group, 275 chars)

Trajectory summary for the same later live observation:

2026-05-18T23:53:29.093Z  session.started
2026-05-18T23:56:37.401Z  turn.client_closed
2026-05-18T23:56:37.406Z  session.ended  error
2026-05-18T23:56:58.928Z  session.started
2026-05-18T23:56:58.937Z  prompt.submitted

Observed result after fix: queued user_request followups no longer carry or inherit the supersedable source abort signal; queued room_event followups still preserve their abort signal and continue to be skipped when already aborted. Focused regression tests pass, queue-mode routing remains unchanged, and the current live Telegram topic chat shows post-patch inbound topic messages receiving outbound replies from the active patched gateway.

What was not tested: Mantis Telegram Desktop visible proof did not capture because the Telegram bot connection was conflicted and proof messages did not reach OpenClaw. No video/artifact proof from Mantis or Crabbox is attached. Discord was not retested beyond the reporter's confirmation that a Discord server channel was not reproducing the same issue. The later topic:<redacted-later-topic> live observation exposed a separate codex app-server client closed before turn completed failure, and is not presented as proof that this PR fixes that separate app-server/client-close path. The current live Telegram log proof is from the operator's active gateway, not a controlled baseline/candidate A/B desktop recording.

Verification

  • pnpm install --frozen-lockfile to install dependencies in the temp worktree after the Vitest wrapper could not resolve vitest/package.json.
  • git diff --check
  • node scripts/run-vitest.mjs src/auto-reply/reply/get-reply-run.media-only.test.ts src/auto-reply/reply/followup-runner.test.ts src/auto-reply/reply/queue.collect.test.ts extensions/telegram/src/bot-message-dispatch.test.ts -> Test Files 4 passed (4), Tests 220 passed (220).
  • Rebased onto current origin/main (d761b98adc6ff2c824b95d0b2a7a54dfa1177d18) and reran the same focused test command -> Test Files 4 passed (4), Tests 220 passed (220).
  • Current live gateway log inspection for redacted live topic showed inbound Telegram topic messages followed by outbound threadId=<redacted-live-topic> replies from the active patched runtime.
  • Current live gateway log inspection for redacted later topic showed the later report reached OpenClaw, then failed through codex app-server client closed before turn completed; the resend then reached OpenClaw and started a new session. That observation is included as a separate failure classification, not proof of the queued-abort fix.
  • AUTOREVIEW_AUTO_TESTS=0 .agents/skills/autoreview/scripts/autoreview --mode local reported findings against untouched files (src/auto-reply/inbound-debounce.ts, extensions/telegram/src/sequential-key.ts). I rejected those as not applicable after git diff --name-only showed this branch only touches reply-runner files. Manual review did find the followup-runner fallback path, which is fixed here. A second autoreview rerun was stopped after about five minutes because it again expanded into broad unrelated GitHub search instead of completing a local-diff review.

What Was Not Tested

  • Mantis Telegram Desktop visible proof / Crabbox proof was attempted but blocked by a conflicted Telegram bot connection.
  • Broad pnpm check was not run from this Codex worktree.

@openclaw-barnacle openclaw-barnacle Bot added the proof: supplied External PR includes structured after-fix real behavior proof. label May 19, 2026
@VACInc

VACInc commented May 19, 2026

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented May 19, 2026

Copy link
Copy Markdown
Contributor

Codex review: passed.

Workflow note: Future ClawSweeper reviews update this same comment in place.

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.

Summary
This PR changes queued reply followups so user_request items no longer carry or inherit a source abort signal, preserves room_event abort signals, adds focused regression coverage, and updates CHANGELOG.md.

Reproducibility: yes. at source level. Current main attaches and later falls back to opts.abortSignal for queued followups, and the PR body reports before-fix regression failures for the two implicated paths; I did not execute tests in this read-only review.

PR rating
Overall: 🐚 platinum hermit
Proof: 🐚 platinum hermit
Patch quality: 🦞 diamond lobster
Summary: Good mergeable PR: the patch is narrow and well-covered, with sufficient real proof despite the lack of a controlled Mantis recording.

Rank-up moves:

  • Optionally capture controlled Telegram Desktop proof if maintainers want to retire the remaining live-transport uncertainty before merge.
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.

PR egg
✨ Hatched: 🥚 common Brave Proofling

       _..------.._          
    .-'  .-.  .-.  '-.       
   /    ( * )( * )    \      
  |        .--.        |     
  |   <\   ====   />   |     
   \    '.______.'    /      
    '-._   ____   _.-'       
        `-.____.-'           
       __/|_||_|\__          
      /__.'    '.__\         
       .-----------.         
      '-------------'        

Rarity: 🥚 common.
Trait: stacks clean commits.
Share on X: post this hatch
Copy: My PR egg hatched a 🥚 common Brave Proofling 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.
  • How to hatch it: reach status: 👀 ready for maintainer look or status: 🚀 automerge armed; that usually means sufficient real-behavior proof, no blocking P0/P1/P2 findings, no security attention needed, and clean correctness.
  • 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.

Real behavior proof
Sufficient (logs): The PR body supplies before/after regression output, redacted live Telegram logs showing same-thread inbound/outbound activity, and an inspected Telegram screenshot showing a queued follow-up response after the active chat flow.

Mantis proof suggestion
A native Telegram Desktop recording would materially show that queued same-topic user turns still receive replies after the active turn drains. A maintainer can ask Mantis to capture proof by posting a new PR comment that starts with the OpenClaw Mantis account mention, followed by:

telegram desktop proof: verify that two user messages sent in one Telegram forum topic while a turn is active both receive replies in that topic after the active turn drains.

Risk before merge
Why this matters: - Merging intentionally changes message-delivery semantics: accepted queued user_request followups can survive later source-fence supersession, while queued room_event followups remain cancellable.

  • The proof is strong enough for review, but it is regression output plus redacted live logs and a screenshot rather than a controlled Mantis Telegram Desktop before/after recording.

Maintainer options:

  1. Merge the durable queued-user contract (recommended)
    Accept the supplied regression tests, live logs, and screenshot as enough proof that accepted queued user_request turns should not be canceled by later source-fence supersession.
  2. Ask for controlled Telegram Desktop proof
    Pause before merge only if maintainers want a native Telegram Desktop recording showing two same-topic queued messages both receive replies after the active turn drains.

Next step before merge
No repair lane is needed; the PR is already automerge-opted with no blocking findings, so the exact-head checks and automerge lane can decide merge.

Security
Cleared: The diff touches reply-queue abort handling, focused tests, and the changelog only; I found no concrete security or supply-chain regression.

Review details

Best possible solution:

Land the focused queued-followup abort contract with the regression tests, while keeping room_event cancellation and topic routing semantics intact.

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

Yes, at source level. Current main attaches and later falls back to opts.abortSignal for queued followups, and the PR body reports before-fix regression failures for the two implicated paths; I did not execute tests in this read-only review.

Is this the best way to solve the issue?

Yes. The patch removes the source-fence fallback at the queued-run boundary and preserves room_event abort metadata, which is narrower than changing Telegram routing or queue policy.

Label justifications:

  • P1: The PR addresses a real Telegram topic message-delivery loss mode for accepted queued user turns in active conversations.
  • merge-risk: 🚨 message-delivery: The diff changes when queued followups are canceled, which can affect whether Telegram topic messages are delivered or suppressed after source-fence supersession.

What I checked:

  • Current main attaches source abort metadata to all queued followups: Current main builds followupRun with abortSignal: opts?.abortSignal regardless of inbound event kind, which matches the reported root cause for accepted queued user_request turns inheriting the Telegram reply fence. (src/auto-reply/reply/get-reply-run.ts:1052, f169e0aafde8)
  • Current main reuses the source abort fallback while draining queued items: createFollowupRunner currently passes queued.abortSignal ?? opts?.abortSignal into the reply operation and both CLI/embedded execution paths, so omitting queued abort metadata alone would not detach queued user_request runs. (src/auto-reply/reply/followup-runner.ts:422, f169e0aafde8)
  • PR source narrows abort metadata to room_event followups: The proposed code computes queuedFollowupAbortSignal only when inboundEventKind is room_event and omits abortSignal from queued user_request followups. (src/auto-reply/reply/get-reply-run.ts:1047, 260b7362b819)
  • PR source drains queued items using queued metadata only: The proposed runner passes queued.abortSignal directly to createReplyOperation, runCliAgentWithLifecycle, and runEmbeddedPiAgent, so source opts.abortSignal is not reintroduced during queued execution. (src/auto-reply/reply/followup-runner.ts:422, 260b7362b819)
  • Regression coverage checks both sides of the contract: The PR adds tests proving queued room_event followups retain abort signals while queued user_request followups detach from a source abort signal before enqueue and during runner execution. (src/auto-reply/reply/get-reply-run.media-only.test.ts:1647, 260b7362b819)
  • Maintainer Telegram proof standard is met well enough for review: The Telegram maintainer note requires real Telegram proof for topic/reply-context behavior; the PR body supplies redacted live Telegram logs and the inspected screenshot shows a follow-up response after an active Telegram chat sequence. (.agents/maintainer-notes/telegram.md:35, f169e0aafde8)

Likely related people:

  • VACInc: Authored the recent merged Telegram forum-topic parallel-flow fix that touches the same user-visible topic delivery surface, and this PR is a focused follow-up to that area rather than a one-off proposal. (role: recent Telegram topic contributor; confidence: high; commits: f526d96c98ab; files: extensions/telegram/src/bot-message-context.ts, extensions/telegram/src/sequential-key.ts, src/auto-reply/reply/get-reply-run.ts)
  • nitinjwadhawan: git blame attributes the current queued followup abortSignal assignment and fallback execution lines to the commit that introduced the local main version of these reply files. (role: introduced current main behavior by local blame; confidence: medium; commits: 9995e1b4d542; files: src/auto-reply/reply/get-reply-run.ts, src/auto-reply/reply/followup-runner.ts)
  • Peter Steinberger: Recently changed adjacent channel route/session delivery state, which is close to the reply routing surface involved in queued topic followups. (role: recent adjacent route/session contributor; confidence: medium; commits: 02f8fb7147c0; files: src/auto-reply/reply/session.ts, src/auto-reply/reply/session-delivery.ts)
  • Takhoffman: Approved the related Telegram forum-topic flow merge in commit metadata and explicitly armed automerge for this PR in the discussion. (role: reviewer and automerge requester; confidence: medium; commits: f526d96c98ab; files: extensions/telegram/src/bot-message-context.ts, extensions/telegram/src/bot-handlers.runtime.ts)

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

@clawsweeper

clawsweeper Bot commented May 19, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@VACInc VACInc marked this pull request as ready for review May 19, 2026 00:48
@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. 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. mantis: telegram-visible-proof Mantis should capture Telegram visible proof. P1 High-priority user-facing bug, regression, or broken workflow. merge-risk: 🚨 message-delivery 🚨 May drop, duplicate, misroute, suppress, or wrongly target messages. labels May 19, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 19, 2026
@VACInc

VACInc commented May 19, 2026

Copy link
Copy Markdown
Contributor Author

Fix Proof SS: image

@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 19, 2026
@Takhoffman

Copy link
Copy Markdown
Contributor

@clawsweeper automerge

@clawsweeper clawsweeper Bot added the clawsweeper:automerge Maintainer opted this PR into bounded ClawSweeper-reviewed automerge label May 19, 2026
@clawsweeper

clawsweeper Bot commented May 19, 2026

Copy link
Copy Markdown
Contributor

🦞✅
ClawSweeper merged this PR after the passing review.

Source: clawsweeper[bot]
Feedback: structured ClawSweeper verdict: pass (sha=96fa0f69bacbe13a7915c46caf7956abaffdf52a)
Merge status: merged by ClawSweeper automerge
Merged at: 2026-05-19T02:13:05Z
Merge commit: a559ccc0844a

What merged:

  • This PR changes queued reply followups so user_request items no longer carry or inherit a source abort signal, preserves room_event abort signals, adds focused regression coverage, and updates CHANGELOG.md.
  • Reproducibility: yes. at source level. Current main attaches and later falls back to opts.abortSignal for qu ... ore-fix regression failures for the two implicated paths; I did not execute tests in this read-only review.

Automerge notes:

  • PR branch already contained follow-up commit before automerge: Preserve queued Telegram topic followups

The automerge loop is complete.

Automerge progress:

  • 2026-05-19 01:38:18 UTC review queued 695478dc167f (queued)
  • 2026-05-19 01:55:36 UTC review queued 96fa0f69bacb (after repair)
  • 2026-05-19 02:12:50 UTC review passed 96fa0f69bacb (structured ClawSweeper verdict: pass (sha=96fa0f69bacbe13a7915c46caf7956abaffdf...)
  • 2026-05-19 02:05:45 UTC review queued 96fa0f69bacb (queued)
  • 2026-05-19 02:13:08 UTC merged 96fa0f69bacb (merged by ClawSweeper automerge)

@clawsweeper clawsweeper Bot force-pushed the telegram-topic-followup-queue-rca branch from 695478d to 96fa0f6 Compare May 19, 2026 01:55
@clawsweeper clawsweeper Bot added status: 🚀 automerge armed This PR is in ClawSweeper's automerge lane. and removed status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. labels May 19, 2026
@clawsweeper clawsweeper Bot merged commit a559ccc into openclaw:main May 19, 2026
107 of 109 checks passed
eleboucher pushed a commit to eleboucher/homelab that referenced this pull request May 20, 2026
…026.5.19) (#583)

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.18` → `2026.5.19` |

---

### Release Notes

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

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

[Compare Source](https://github.com/openclaw/openclaw/compare/v2026.5.18...v2026.5.19)

##### Changes

- Agents: clarify that fixes should default to clean bounded refactors, lean internals, and explicit plugin SDK/API deprecation paths.
- Dependencies: update `@openclaw/proxyline` to 0.3.3.
- Dependencies: update Pi packages to 0.75.1 and raise the minimum supported Node.js 22 line to 22.19.
- Docker/Podman: add `OPENCLAW_IMAGE_APT_PACKAGES` as the runtime-neutral image build arg for extra apt packages while keeping `OPENCLAW_DOCKER_APT_PACKAGES` as a legacy fallback. ([#&#8203;62431](https://github.com/openclaw/openclaw/issues/62431)) Thanks [@&#8203;urtabajev](https://github.com/urtabajev).
- Gateway/ACPX: attribute startup probe, config, runtime, and resource-count costs in restart traces without changing readiness behavior. ([#&#8203;83300](https://github.com/openclaw/openclaw/issues/83300)) Thanks [@&#8203;samzong](https://github.com/samzong).
- Gateway: overlap startup logging and plugin-service startup with channel sidecars to reduce restart ready latency while preserving `/readyz` sidecar gating. ([#&#8203;83301](https://github.com/openclaw/openclaw/issues/83301)) Thanks [@&#8203;samzong](https://github.com/samzong).
- Plugins/admin-http-rpc: allow trusted admin HTTP RPC clients to start and wait for web QR login flows. ([#&#8203;83259](https://github.com/openclaw/openclaw/issues/83259)) Thanks [@&#8203;liorb-mountapps](https://github.com/liorb-mountapps).
- Mac app: redesign Settings pages with consistent card layouts, cached navigation, cleaner permissions/voice/skills/cron/exec/debug panes, and steadier spacing around the native sidebar.
- Mac app: refine Voice & Talk recognition-language and wake-phrase settings so they use the same compact card rows as the rest of Settings.
- Skills: rename the repo-local Codex closeout review skill and helper to `autoreview` while preserving the Codex-first fallback behavior.
- Skills: add a meme-maker skill for curated template search, local SVG/PNG rendering, Imgflip hosted rendering, and Know Your Meme provenance links.
- Skills CLI: allow `openclaw skills install` and `openclaw skills update` to target shared managed skills with `--global`. ([#&#8203;74466](https://github.com/openclaw/openclaw/issues/74466)) Thanks [@&#8203;Marvae](https://github.com/Marvae).
- Browser: surface pending and recently handled modal dialogs in snapshots, return `blockedByDialog` when an action opens a modal, and allow `browser dialog --dialog-id` to answer pending dialogs.
- Browser CLI: add `openclaw browser evaluate --timeout-ms` so long-running page functions can extend both the evaluate action and request timeout budgets. ([#&#8203;83447](https://github.com/openclaw/openclaw/issues/83447)) Thanks [@&#8203;eefreenyc](https://github.com/eefreenyc).
- Codex app-server: scope OpenClaw prompt guidance by runtime surface so native Codex keeps Codex-owned base/personality instructions while OpenClaw contributes only runtime context, delivery guidance, and explicitly scoped command hints. ([#&#8203;83454](https://github.com/openclaw/openclaw/issues/83454)) Thanks [@&#8203;100yenadmin](https://github.com/100yenadmin).
- Docker/Podman: add `OPENCLAW_IMAGE_PIP_PACKAGES` for opt-in Python package installation in local image builds. ([#&#8203;83771](https://github.com/openclaw/openclaw/issues/83771)) Thanks [@&#8203;stephenredmond-straiteis](https://github.com/stephenredmond-straiteis).
- Agents/tools: shorten built-in tool descriptions and schema hints across media, messaging, sessions, cron, Gateway, web, image/PDF, TTS, nodes, and plan tools while preserving routing guardrails.
- Skills: add node inspector debugging, fused diagram generation, and throwaway spike workflow skills.
- CLI/plugins: add `defineToolPlugin` plus `openclaw plugins build`, `validate`, and `init` for typed simple tool plugins with generated manifest metadata, optional tool declarations, and context factories.
- Agents/skills: tighten bundled skill prompts and metadata, quote skill descriptions, refresh current CLI/API guidance, and update embedded sherpa-onnx runtime downloads.
- Skills: update the Obsidian skill to target the official `obsidian` CLI and require its registered binary instead of the third-party `obsidian-cli`.
- Skills: add a Python debugging skill for pdb, breakpoint(), post-mortem inspection, and debugpy remote attach.
- Codex: add `/codex plugins list`, `enable`, and `disable` for managing configured native Codex plugins from chat without editing config by hand.
- Plugins/messages: add presentation capability limits for channel renderers, adapt rich message controls before native rendering, and mark legacy `interactive`/Slack directive producer APIs as deprecated.
- Plugins/subagents: store channel delivery routes as canonical session metadata and deprecate ad hoc subagent hook delivery-origin fields in favor of core route projection.
- Proxy: support HTTPS managed forward-proxy endpoints and scoped `proxy.tls.caFile` CA trust for proxy endpoint TLS. ([#&#8203;79171](https://github.com/openclaw/openclaw/issues/79171)) Thanks [@&#8203;jesse-merhi](https://github.com/jesse-merhi).
- QA-Lab: add first-hour 20-turn and optional 100-turn runtime parity scenarios, with tier metadata for standard and soak QA gates. Fixes [#&#8203;80338](https://github.com/openclaw/openclaw/issues/80338); refs [#&#8203;80337](https://github.com/openclaw/openclaw/issues/80337). Thanks [@&#8203;100yenadmin](https://github.com/100yenadmin).
- QA-Lab: add `openclaw qa suite --runtime-parity-tier` and wire the standard Codex-vs-Pi tier into release checks separately from optional/live-only/soak lanes. Fixes [#&#8203;80337](https://github.com/openclaw/openclaw/issues/80337). Thanks [@&#8203;100yenadmin](https://github.com/100yenadmin).
- QA-Lab: add a live-only Codex Pi-shaped Read vocabulary canary so runtime parity catches native workspace-read prompt compatibility drift. ([#&#8203;80323](https://github.com/openclaw/openclaw/issues/80323)) Thanks [@&#8203;100yenadmin](https://github.com/100yenadmin).
- QA-Lab: add live-only harness self-health scenarios for plugin hook crashes, manifest contract errors, and WebChat direct-reply self-message routing. ([#&#8203;80323](https://github.com/openclaw/openclaw/issues/80323)) Thanks [@&#8203;100yenadmin](https://github.com/100yenadmin).
- QA-Lab: add runtime tool fixture scenarios and coverage reporting for Codex-native workspace tools, OpenClaw dynamic tools, and optional plugin-backed tools. Fixes [#&#8203;80173](https://github.com/openclaw/openclaw/issues/80173). Thanks [@&#8203;100yenadmin](https://github.com/100yenadmin).
- QA-Lab: expose runtime tool fixture coverage through `openclaw qa coverage --tools`, with optional suite-summary evaluation for parity gate artifacts. Thanks [@&#8203;100yenadmin](https://github.com/100yenadmin).
- QA-Lab: schedule a live-frontier Codex-vs-Pi runtime token-efficiency artifact lane in the all-lanes QA workflow. Fixes [#&#8203;80175](https://github.com/openclaw/openclaw/issues/80175). Thanks [@&#8203;100yenadmin](https://github.com/100yenadmin).
- QA-Lab: hard-gate required OpenClaw dynamic runtime-tool drift in the standard Codex-vs-Pi tier with a blocking release-check verifier and publish the tool coverage report artifact. Fixes [#&#8203;80339](https://github.com/openclaw/openclaw/issues/80339); refs [#&#8203;80319](https://github.com/openclaw/openclaw/issues/80319). Thanks [@&#8203;100yenadmin](https://github.com/100yenadmin).
- QA-Lab: add the personal-agent approval-denial scenario so the benchmark pack verifies denied local reads stop cleanly without tool progress or fixture leaks. ([#&#8203;83150](https://github.com/openclaw/openclaw/issues/83150)) Thanks [@&#8203;iFiras-Max1](https://github.com/iFiras-Max1).
- QA-Lab: extend the personal-agent benchmark pack with a local task followthrough scenario for proof-backed pending, blocked, and done status reporting. Thanks [@&#8203;iFiras-Max1](https://github.com/iFiras-Max1).
- QA-Lab: add a report-only dreaming shadow-trial scenario so candidate memory promotion can be evaluated without mutating `MEMORY.md`. Thanks [@&#8203;iFiras-Max1](https://github.com/iFiras-Max1).
- Gateway/performance: add `pnpm test:restart:gateway` benchmark tooling for repeated restart readiness, downtime, trace, and resource-slope evidence. ([#&#8203;83299](https://github.com/openclaw/openclaw/issues/83299)) Thanks [@&#8203;samzong](https://github.com/samzong).
- Android: switch Talk Mode to realtime Gateway relay voice sessions with streaming mic input, realtime audio playback, tool-result bridging, and on-screen transcripts. ([#&#8203;83130](https://github.com/openclaw/openclaw/issues/83130)) Thanks [@&#8203;sliekens](https://github.com/sliekens).
- Gateway/config: expose config lookup reload metadata so tools can distinguish restart-required, hot-reloadable, and no-op fields before applying config edits. Fixes [#&#8203;81409](https://github.com/openclaw/openclaw/issues/81409). ([#&#8203;81612](https://github.com/openclaw/openclaw/issues/81612)) Thanks [@&#8203;LLagoon3](https://github.com/LLagoon3).
- Telegram: add allowlisted native DM draft previews for transient tool progress while keeping final answers on the normal persistent delivery path. ([#&#8203;83622](https://github.com/openclaw/openclaw/issues/83622)) Thanks [@&#8203;akrimm702](https://github.com/akrimm702).
- QA-Lab: add a personal-agent share-safe diagnostics artifact scenario so support handoffs keep useful status while omitting raw personal content. Thanks [@&#8203;iFiras-Max1](https://github.com/iFiras-Max1).
- QA-Lab: add a personal-agent no-fake-progress scenario so completion claims stay tied to local evidence instead of unsupported external progress. ([#&#8203;83824](https://github.com/openclaw/openclaw/issues/83824)) Thanks [@&#8203;iFiras-Max1](https://github.com/iFiras-Max1).

##### Fixes

- CLI: reject explicit port numbers above 65535 before they reach Gateway or Node bind paths. Fixes [#&#8203;83900](https://github.com/openclaw/openclaw/issues/83900). ([#&#8203;84008](https://github.com/openclaw/openclaw/issues/84008)) Thanks [@&#8203;hclsys](https://github.com/hclsys).
- Codex app-server: preserve plugin tool auth profiles when Codex owns model transport so OpenClaw dynamic tools can resolve their provider credentials. ([#&#8203;83603](https://github.com/openclaw/openclaw/issues/83603)) Thanks [@&#8203;rubencu](https://github.com/rubencu).
- Memory/search: scan the JS-side fallback vector path (used when the sqlite-vec index is unavailable or has a mismatched dimension) in bounded rowid batches and yield to the event loop between batches so large chunk tables can no longer pin the Node.js main thread for multi-second windows. Also keeps the SQL prepared statement rooted in a local so node:sqlite cannot finalize it mid-scan under heap pressure. Fixes [#&#8203;81172](https://github.com/openclaw/openclaw/issues/81172). Thanks [@&#8203;dev23xyz-oss](https://github.com/dev23xyz-oss).
- Memory Wiki: preserve fs-safe diagnostics when bridge source page writes fail for non-symlink filesystem safety reasons, so directory collisions are reported with the underlying error code. ([#&#8203;83776](https://github.com/openclaw/openclaw/issues/83776)) Thanks [@&#8203;TurboTheTurtle](https://github.com/TurboTheTurtle).
- Telegram: keep forum topics from blocking sibling topic traffic by routing inbound serialization, media/text buffers, and account API queues on topic-aware lanes. ([#&#8203;83829](https://github.com/openclaw/openclaw/issues/83829))
- Telegram: keep queued forum-topic follow-up messages from inheriting superseded source abort signals, so later same-topic user turns can still run and reply after an active turn is replaced. ([#&#8203;83827](https://github.com/openclaw/openclaw/issues/83827)) Thanks [@&#8203;VACInc](https://github.com/VACInc).
- CLI/update: bypass npm freshness filters consistently during managed package and plugin installs so freshly published release plugins remain installable. Thanks [@&#8203;jalehman](https://github.com/jalehman).
- CLI/update: guide root-owned npm install EACCES recovery by stopping the managed Gateway before manual package replacement, then reinstalling and restarting the service. Fixes [#&#8203;83747](https://github.com/openclaw/openclaw/issues/83747). ([#&#8203;83757](https://github.com/openclaw/openclaw/issues/83757)) Thanks [@&#8203;brokemac79](https://github.com/brokemac79).
- Twitch: register refreshing chat tokens with Twurple's chat intent so automatic token refresh keeps chat access available. ([#&#8203;83750](https://github.com/openclaw/openclaw/issues/83750)) Thanks [@&#8203;TurboTheTurtle](https://github.com/TurboTheTurtle).
- Agents/subagents: keep collect-mode announce queues batching unresolved-origin items with compatible same-route messages and resume collection after a true cross-channel drain when a later compatible batch remains. Fixes [#&#8203;83577](https://github.com/openclaw/openclaw/issues/83577).
- Skills: refresh existing session skill snapshots when watched skill roots change, so changed extra skill directories take effect without starting a new session. Fixes [#&#8203;83782](https://github.com/openclaw/openclaw/issues/83782). ([#&#8203;83800](https://github.com/openclaw/openclaw/issues/83800)) Thanks [@&#8203;hclsys](https://github.com/hclsys).
- Providers/Anthropic: preserve native image input for current Claude model rows when stale local catalog data marks them text-only. ([#&#8203;83756](https://github.com/openclaw/openclaw/issues/83756)) Thanks [@&#8203;TurboTheTurtle](https://github.com/TurboTheTurtle).
- Providers/Anthropic: preserve Claude 4 image capability when configured model refs resolve through a stale local catalog row. ([#&#8203;83756](https://github.com/openclaw/openclaw/issues/83756)) Thanks [@&#8203;TurboTheTurtle](https://github.com/TurboTheTurtle).
- Providers/DeepSeek: normalize MCP tool schemas with `anyOf`/`oneOf` unions before normal and compaction requests reach DeepSeek, preventing union-shaped parameters from being rejected. ([#&#8203;83766](https://github.com/openclaw/openclaw/issues/83766)) Thanks [@&#8203;TurboTheTurtle](https://github.com/TurboTheTurtle).
- Control UI: render live tool progress from session-scoped `session.tool` Gateway events so externally started runs show their tool cards in the active session. ([#&#8203;83734](https://github.com/openclaw/openclaw/issues/83734)) Thanks [@&#8203;TurboTheTurtle](https://github.com/TurboTheTurtle).
- Outbound: resolve send-capable channel plugins from the active runtime registry when the pinned startup registry only has setup metadata. ([#&#8203;83733](https://github.com/openclaw/openclaw/issues/83733)) Thanks [@&#8203;TurboTheTurtle](https://github.com/TurboTheTurtle).
- Discord: preserve streamed reply previews when recovered tool-warning finals are delivered before or after the assistant's final reply. ([#&#8203;84169](https://github.com/openclaw/openclaw/issues/84169)) Thanks [@&#8203;neeravmakwana](https://github.com/neeravmakwana).
- Control UI: keep the chat delete confirmation popover clamped inside the visible viewport on small screens. ([#&#8203;83804](https://github.com/openclaw/openclaw/issues/83804)) Thanks [@&#8203;ThiagoCAltoe](https://github.com/ThiagoCAltoe).
- Browser: enforce current-tab URL allowlist checks for `/act` evaluate/batch actions and `/highlight` routes while leaving tab-management actions unblocked. ([#&#8203;78523](https://github.com/openclaw/openclaw/issues/78523))
- CI: require real-behavior-proof verdict markers to come from the ClawSweeper GitHub App before accepting exact-head proof. ([#&#8203;83692](https://github.com/openclaw/openclaw/issues/83692))
- Models: show the effective OpenAI/Codex auth profile in `/models` provider headers instead of falling back to the OpenAI env-key label. ([#&#8203;83697](https://github.com/openclaw/openclaw/issues/83697)) Thanks [@&#8203;yu-xin-c](https://github.com/yu-xin-c).
- CLI: include active bundled loopback MCP tools in CLI system prompts and reset provider-side CLI sessions when that prompt-visible tool surface changes. ([#&#8203;83785](https://github.com/openclaw/openclaw/issues/83785)) Thanks [@&#8203;TurboTheTurtle](https://github.com/TurboTheTurtle).
- Browser: keep a profile `cdpPort` when its `cdpUrl` omits a port, while still letting explicitly written URL ports win. ([#&#8203;82166](https://github.com/openclaw/openclaw/issues/82166)) Thanks [@&#8203;Marvae](https://github.com/Marvae).
- Agents/image generation: allow distinct `image_generate` prompts to start separate session-backed background tasks while same-prompt retries still return the active task status. ([#&#8203;83614](https://github.com/openclaw/openclaw/issues/83614)) Thanks [@&#8203;Elarwei001](https://github.com/Elarwei001).
- Gateway/WebChat: honor configured `channels.webchat.textChunkLimit` and `chunkMode` overrides when chunking WebChat replies. ([#&#8203;83713](https://github.com/openclaw/openclaw/issues/83713))
- Control UI: stop the chat reading indicator from sticking after an assistant response finishes. ([#&#8203;83515](https://github.com/openclaw/openclaw/issues/83515)) Thanks [@&#8203;njuboy11](https://github.com/njuboy11).
- Skills: reject empty or whitespace-only skill names and descriptions during quick validation. ([#&#8203;27061](https://github.com/openclaw/openclaw/issues/27061))
- Sessions: skip trailing custom transcript entries when checking tail assistant replies so embedded CLI gap-fill does not duplicate canonical assistant output. ([#&#8203;83635](https://github.com/openclaw/openclaw/issues/83635)) Thanks [@&#8203;yaoyi1222](https://github.com/yaoyi1222).
- Memory Wiki: keep `wiki_lint` tool output path-safe by reporting vault-internal lint reports as relative paths in tool text and details while preserving absolute report paths for CLI/file callers. ([#&#8203;83439](https://github.com/openclaw/openclaw/issues/83439)) Thanks [@&#8203;LLagoon3](https://github.com/LLagoon3).
- Telegram: keep verbose tool progress visible without mirroring non-final progress into active session transcripts, preventing embedded provider replies from aborting mid-run. ([#&#8203;83631](https://github.com/openclaw/openclaw/issues/83631)) Thanks [@&#8203;kurplunkin](https://github.com/kurplunkin).
- Telegram: log successful outbound text and media deliveries with account, chat, message, operation, thread, reply, silent, and chunk metadata while keeping message bodies out of logs. Fixes [#&#8203;83196](https://github.com/openclaw/openclaw/issues/83196). ([#&#8203;83247](https://github.com/openclaw/openclaw/issues/83247)) Thanks [@&#8203;jrwrest](https://github.com/jrwrest).
- Cron: link isolated scheduled task runs to their stable cron session so task status and cleanup can follow the backing agent run. ([#&#8203;83606](https://github.com/openclaw/openclaw/issues/83606)) Thanks [@&#8203;jai](https://github.com/jai).
- Codex app-server: mark Codex-native subagent task mirrors terminal when blocked or failed spawn-agent calls arrive with stale initializing child state, preventing task registry entries from staying running. Fixes [#&#8203;83852](https://github.com/openclaw/openclaw/issues/83852). ([#&#8203;83945](https://github.com/openclaw/openclaw/issues/83945)) Thanks [@&#8203;joshavant](https://github.com/joshavant).
- CLI: enforce the documented Node.js 22.19 runtime floor in the source launcher.
- Release stability: repair broad-gate regressions in requester-agent completion handoff, QA-Lab mock spawn attribution, Slack monitor test isolation, plugin uninstall peer fixtures, and Node-floor launcher contract coverage.
- Agents/replies: persist queued follow-up user messages and assistant error stubs only once across model-fallback retries, preventing repeated provider rejections from corrupted same-role session transcripts. Fixes [#&#8203;83404](https://github.com/openclaw/openclaw/issues/83404). ([#&#8203;83417](https://github.com/openclaw/openclaw/issues/83417)) Thanks [@&#8203;yetval](https://github.com/yetval).
- Telegram: preserve reply-target context for bare mention replies on runtime-only turns so the model sees the replied-to message body. Fixes [#&#8203;83767](https://github.com/openclaw/openclaw/issues/83767). ([#&#8203;83953](https://github.com/openclaw/openclaw/issues/83953)) Thanks [@&#8203;joshavant](https://github.com/joshavant).
- ClawHub: preserve configured base URL path prefixes when building API request URLs, so self-hosted ClawHub instances mounted under a subpath keep routing correctly. ([#&#8203;83982](https://github.com/openclaw/openclaw/issues/83982)) Thanks [@&#8203;ThiagoCAltoe](https://github.com/ThiagoCAltoe).
- Slack: persist delivered inbound message IDs and fail closed when same-channel thread replies lose their thread context, preventing delayed duplicate replies and accidental channel-root posts. Fixes [#&#8203;83521](https://github.com/openclaw/openclaw/issues/83521). Thanks [@&#8203;shannon0430](https://github.com/shannon0430).
- Codex app-server: complete OpenClaw dynamic tool diagnostics at the request boundary so successful, failed, timed out, aborted, and blocked tool calls do not leave active tool state behind. Fixes [#&#8203;83474](https://github.com/openclaw/openclaw/issues/83474). Thanks [@&#8203;rozmiarD](https://github.com/rozmiarD).
- Gateway/config: keep config writes from failing on unrelated unresolved auth-profile SecretRefs while preserving live auth-profile runtime snapshots.
- Gateway/sessions: clear stored CLI provider resume bindings on non-subagent `/reset` so the next turn starts a fresh provider-side CLI conversation instead of resuming old context. ([#&#8203;83448](https://github.com/openclaw/openclaw/issues/83448)) Thanks [@&#8203;jasonyliu](https://github.com/jasonyliu).
- Doctor: preserve legacy whole-agent Claude CLI intent by moving matching Anthropic model selections to model-scoped runtime policy before removing stale runtime pins. Fixes [#&#8203;83491](https://github.com/openclaw/openclaw/issues/83491). Thanks [@&#8203;danielcrick](https://github.com/danielcrick).
- Discord/OpenAI: keep realtime Discord voice sessions hearing follow-up turns with OpenAI realtime and prebuffer assistant playback to avoid choppy starts. ([#&#8203;80505](https://github.com/openclaw/openclaw/issues/80505)) Thanks [@&#8203;Solvely-Colin](https://github.com/Solvely-Colin).
- LM Studio: resolve env-template API keys like `${LMSTUDIO_API_KEY}` through the standard SecretInput path instead of sending the raw template as the bearer token, and preserve header-auth and discovery-key precedence when the template is unset. Fixes [#&#8203;80495](https://github.com/openclaw/openclaw/issues/80495). ([#&#8203;80568](https://github.com/openclaw/openclaw/issues/80568)) Thanks [@&#8203;MonkeyLeeT](https://github.com/MonkeyLeeT).
- Discord/subagents: route the initial reply from thread-bound delegated sessions into the bound Discord thread instead of the parent channel. Fixes [#&#8203;83170](https://github.com/openclaw/openclaw/issues/83170). ([#&#8203;83172](https://github.com/openclaw/openclaw/issues/83172)) Thanks [@&#8203;100menotu001](https://github.com/100menotu001).
- Gateway/sessions: rotate failed agent sessions when their transcript file is missing instead of wedging per-channel lanes. Fixes [#&#8203;83488](https://github.com/openclaw/openclaw/issues/83488). ([#&#8203;83553](https://github.com/openclaw/openclaw/issues/83553)) Thanks [@&#8203;LLagoon3](https://github.com/LLagoon3).
- Agents: refresh final-delivery routing from fresh session state before declaring a no-send failure, keeping recovered runs on the normal durable delivery path. ([#&#8203;83835](https://github.com/openclaw/openclaw/issues/83835)) Thanks [@&#8203;joshavant](https://github.com/joshavant).
- Agents: guard final-delivery fresh session routing against mismatched logical sessions before reusing recovered delivery context. ([#&#8203;83928](https://github.com/openclaw/openclaw/issues/83928)) Thanks [@&#8203;joshavant](https://github.com/joshavant).
- Media: prevent image metadata probing from invoking external decoder delegates on unrecognized image bytes, and stop fallback chaining after real processing errors.
- Media: install Sharp with the root package and fall back to sips, Windows native imaging, ImageMagick, GraphicsMagick, or ffmpeg for image resizing/conversion when Sharp is unavailable. Fixes [#&#8203;83401](https://github.com/openclaw/openclaw/issues/83401). Thanks [@&#8203;scotthuang](https://github.com/scotthuang).
- Telegram: deliver generated media completions back into forum topics by preserving topic IDs across requester-agent handoff. ([#&#8203;83556](https://github.com/openclaw/openclaw/issues/83556)) Thanks [@&#8203;fuller-stack-dev](https://github.com/fuller-stack-dev).
- Gateway: defer update-check startup until after readiness so package update checks no longer block sidecar-ready startup, while preserving update broadcasts and shutdown cleanup. ([#&#8203;83520](https://github.com/openclaw/openclaw/issues/83520)) Thanks [@&#8203;samzong](https://github.com/samzong).
- Telegram: keep `/btw` and read-only status commands from aborting active runs, and avoid retaining raw update payloads in timed-out spool tombstones. Refs [#&#8203;83272](https://github.com/openclaw/openclaw/issues/83272).
- Agents: log strict-agentic execution contract diagnostics only when the planning-only retry path actually triggers.
- Agents: stop embedded session takeover and session write-lock errors from consuming model fallbacks while preserving provider fallback metadata. Fixes [#&#8203;83510](https://github.com/openclaw/openclaw/issues/83510). Thanks [@&#8203;luyao618](https://github.com/luyao618).
- Agents/video: hide `video_generate` reference-audio parameters unless a registered video provider supports audio inputs.
- Plugins: fall back to npm for official ClawHub updates when artifact downloads are unavailable, including beta-to-default fallback and dry-run version reporting.
- Plugins/xAI: echo PKCE challenge fields during OAuth authorization-code token exchange for xAI token-endpoint compatibility. ([#&#8203;83499](https://github.com/openclaw/openclaw/issues/83499)) Thanks [@&#8203;fuller-stack-dev](https://github.com/fuller-stack-dev).
- Codex app-server: hydrate current inbound image attachments before queued runs so Responses-backed agents receive Discord and other channel images as native vision input. Fixes [#&#8203;83466](https://github.com/openclaw/openclaw/issues/83466). Thanks [@&#8203;iannwu](https://github.com/iannwu).
- Codex app-server: keep native code mode available without forcing code-mode-only so OpenClaw dynamic tool turns complete through the app-server tool bridge. Fixes [#&#8203;83109](https://github.com/openclaw/openclaw/issues/83109). Thanks [@&#8203;daswass](https://github.com/daswass).
- Codex app-server: expose OpenClaw's sandbox-routed shell as `sandbox_exec`/`sandbox_process` for non-Docker sandbox backends so SSH sandbox agents keep a correctly routed shell path without shadowing Codex native shell. Fixes [#&#8203;80322](https://github.com/openclaw/openclaw/issues/80322). Thanks [@&#8203;keramblock](https://github.com/keramblock).
- Release stability: recover stale session diagnostics and Codex OAuth fallback state so stuck runs and reused refresh tokens clear without blocking follow-up work. ([#&#8203;83503](https://github.com/openclaw/openclaw/issues/83503)) Thanks [@&#8203;100yenadmin](https://github.com/100yenadmin).
- Messages/TTS: apply TTS directives before message-tool sends reach core, gateway, or plugin delivery so opt-in message-tool rooms and proactive sends attach voice notes instead of leaking raw tags. Fixes [#&#8203;81598](https://github.com/openclaw/openclaw/issues/81598). Thanks [@&#8203;CG-Intelligence-Agent-Jack](https://github.com/CG-Intelligence-Agent-Jack) and [@&#8203;CoronovirusG10](https://github.com/CoronovirusG10).
- Messages/Codex: keep Codex direct/source chats on message-tool visible delivery by default while documenting and testing `messages.visibleReplies: "automatic"` as the old-mode opt-out; channel wildcard model overrides now apply to direct chats before harness delivery defaults.
- Memory/QMD: keep archived session transcript hits visible after QMD export while preserving normal `.md` session ids that only resemble archive names. ([#&#8203;83518](https://github.com/openclaw/openclaw/issues/83518); fixes [#&#8203;83506](https://github.com/openclaw/openclaw/issues/83506)) Thanks [@&#8203;tanshanshan](https://github.com/tanshanshan).
- Codex app-server: preserve network access for sandboxed Codex code-mode turns when the OpenClaw sandbox allows outbound egress. Fixes [#&#8203;83347](https://github.com/openclaw/openclaw/issues/83347). Thanks [@&#8203;YusukeIt0](https://github.com/YusukeIt0).
- Codex app-server: honor writable Docker bind mounts for sandboxed workspace-write turns while disabling native Code Mode when container-path aliases or read-only bind shadows cannot be represented safely host-side. Fixes [#&#8203;83737](https://github.com/openclaw/openclaw/issues/83737). ([#&#8203;83849](https://github.com/openclaw/openclaw/issues/83849)) Thanks [@&#8203;joshavant](https://github.com/joshavant).
- QA-Lab: keep the OTLP smoke decoder independent of removed OpenTelemetry generated-root internals.
- Messages: default group/channel visible replies to automatic final delivery again, keeping `message_tool` opt-in for ambient/shared rooms and tool-reliable models.
- CLI/TUI: force standalone `/exit` runs to terminate after `runTui` returns so onboarding-launched TUI children do not stay alive invisibly. ([#&#8203;83501](https://github.com/openclaw/openclaw/issues/83501)) Thanks [@&#8203;fuller-stack-dev](https://github.com/fuller-stack-dev).
- Agents/code mode: honor per-agent code-mode config in schema, runtime catalog activation, and model payload filtering. Fixes [#&#8203;83388](https://github.com/openclaw/openclaw/issues/83388). Thanks [@&#8203;Kaspre](https://github.com/Kaspre).
- Agents/code mode: preserve agent, session, run, and channel context in `before_tool_call` hooks for top-level `exec`/`wait` dispatches. Fixes [#&#8203;83387](https://github.com/openclaw/openclaw/issues/83387).
- QQBot: shorten C2C typing indicators to a 10-second window renewed every 5 seconds, capped to keep a final passive-reply slot available. ([#&#8203;83469](https://github.com/openclaw/openclaw/issues/83469))
- Replies: keep final payload delivery after live preview updates so channels can finalize or send the completed answer instead of losing preview-only drafts. ([#&#8203;83468](https://github.com/openclaw/openclaw/issues/83468))
- Discord: deliver final replies in progress-mode preview streams instead of deduplicating the final visible message. ([#&#8203;83443](https://github.com/openclaw/openclaw/issues/83443)) Thanks [@&#8203;compoodment](https://github.com/compoodment).
- Providers/Xiaomi: replay MiMo Anthropic-compatible `reasoning_content` as provider-required thinking blocks even when OpenClaw thinking is disabled, fixing follow-up tool turns for `mimo-v2-flash`. Fixes [#&#8203;83407](https://github.com/openclaw/openclaw/issues/83407). Thanks [@&#8203;Xgenious7](https://github.com/Xgenious7).
- Agents/exec approvals: forward approval-runtime credentials on agent-owned Gateway approval calls so approved async commands complete through the existing runtime path instead of stalling on unauthenticated follow-up calls. Thanks [@&#8203;IWhatsskill](https://github.com/IWhatsskill), [@&#8203;Patrick-Erichsen](https://github.com/Patrick-Erichsen), and [@&#8203;jesse-merhi](https://github.com/jesse-merhi).
- Gateway/skills: preflight remote macOS skill-bin refreshes with a WebSocket connectivity check so stale node sessions skip quickly instead of logging slow `system.which` timeout warnings.
- CLI/config: keep broken discovered plugins that are not referenced by active config from failing `openclaw config validate`, while preserving fatal errors for explicitly configured plugin entries.
- GitHub Copilot: drop unsafe native Responses reasoning replay items with non-replayable IDs before dispatch, preventing affected Copilot sessions from failing with `invalid_request_body`. Fixes [#&#8203;83220](https://github.com/openclaw/openclaw/issues/83220). Thanks [@&#8203;galiniliev](https://github.com/galiniliev).
- Agents/Codex: fail closed when an explicitly requested Codex harness is not registered instead of silently trying configured model fallbacks. Fixes [#&#8203;83349](https://github.com/openclaw/openclaw/issues/83349). Thanks [@&#8203;r2-vibes](https://github.com/r2-vibes).
- QA-Lab: make runtime tool coverage fail on missing required tool exercise instead of treating pass/pass parity envelope drift as missing coverage.
- Core/plugins: harden clawpatch-reported edge cases across gateway auth cleanup, Claude session id paths, plugin activation policy, apply-patch hunk handling, diagnostic redaction, and plugin metadata validation.
- UI: show reasoning choices as plain labels instead of leaking internal override wording in session and chat pickers.
- Mac app: avoid repeating the Configuration heading inside channel quick settings.
- Mac app: keep the Settings sidebar always visible and remove the redundant titlebar hide/show control.
- Mac app: normalize Settings pane content margins so pages share the same left and right rail.
- Mac app: prefer explicit private/Tailscale/LAN Gateway endpoints over SSH tunnels, preserve legacy loopback tunnel configs, persist transport choices, and show captured SSH stderr when tunneling really fails.
- Gateway/sessions: keep ACP/acpx and runtime child sessions visible in configured-only session lists when their owner or parent session belongs to a configured agent.
- Mac app: keep app-level menu commands and Dashboard failure states reachable when the remote Gateway is disconnected.
- Mac app: allow longer Gateway and Context errors to wrap in the menu instead of truncating the useful failure detail.
- Mac app: tighten remote Gateway fields in Settings so the Connection pane keeps readable labels and full action button text.
- Mac app: keep custom Settings card rows left-aligned and full-width so Discovery and status sections no longer appear centered or detached.
- Mac app: align Location permission controls to the same trailing column as the rest of Settings.
- Mac app: add Dashboard, Chat, Canvas, and Settings shortcuts to the Dock icon menu.
- Mac app: replace the Settings window's native split-view sidebar with an explicit layout so page content keeps its leading gutter when the sidebar is shown or hidden.
- Mac app: render channel quick config as aligned Settings rows and hide schema-only variants that cannot be edited safely from the quick pane.
- Gateway/webchat: hide internal runtime-context and other `display: false` transcript messages from Chat history and live message events. Fixes [#&#8203;83216](https://github.com/openclaw/openclaw/issues/83216). Thanks [@&#8203;EmpireCreator](https://github.com/EmpireCreator).
- CLI/help: keep `gateway`, `doctor`, `status`, and `health` help registration out of action/runtime imports so subcommand `--help` stays lightweight in constrained terminals. Fixes [#&#8203;83228](https://github.com/openclaw/openclaw/issues/83228). Thanks [@&#8203;dfguerrerom](https://github.com/dfguerrerom).
- CLI/help: show plugin-owned command help based on the active memory slot so LanceDB memory users see `ltm` instead of unavailable `memory` commands. Fixes [#&#8203;83745](https://github.com/openclaw/openclaw/issues/83745). ([#&#8203;83841](https://github.com/openclaw/openclaw/issues/83841)) Thanks [@&#8203;joshavant](https://github.com/joshavant).
- Cron/Discord: keep explicit announce runs in message-tool-only source-reply mode so scheduled agent turns post once instead of also echoing through automatic visible replies. Fixes [#&#8203;83261](https://github.com/openclaw/openclaw/issues/83261). Thanks [@&#8203;Theralley](https://github.com/Theralley).
- Telegram: preserve forum-topic origin targets in inbound, audio-preflight, and skipped-message hook contexts so follow-up delivery stays bound to the originating topic. Fixes [#&#8203;83302](https://github.com/openclaw/openclaw/issues/83302). Thanks [@&#8203;M00zyx](https://github.com/M00zyx).
- Telegram: retry HTTP 421 Misdirected Request send failures on a fresh fallback transport so transient edge-node routing errors no longer drop outbound replies. Fixes [#&#8203;48892](https://github.com/openclaw/openclaw/issues/48892). ([#&#8203;48908](https://github.com/openclaw/openclaw/issues/48908)) Thanks [@&#8203;MarsDoge](https://github.com/MarsDoge).
- Telegram: fail topic sends closed when Telegram reports `message thread not found` instead of retrying without `message_thread_id` into the base chat. Refs [#&#8203;83302](https://github.com/openclaw/openclaw/issues/83302).
- Config/subagents: remove ignored agent-model `timeoutMs` keys, keep subagent model config to primary/fallback selection, and clean shipped stale config through doctor. Fixes [#&#8203;83291](https://github.com/openclaw/openclaw/issues/83291). Thanks [@&#8203;giodl73-repo](https://github.com/giodl73-repo).
- Mac app: align the Sessions settings pane with the standard Settings page gutter and row spacing.
- OpenAI/Codex: stop rejecting available `openai-codex` GPT-5.1, GPT-5.2, and GPT-5.3 model refs during config validation, while keeping removed Spark aliases suppressed. Fixes [#&#8203;83303](https://github.com/openclaw/openclaw/issues/83303).
- Plugins/xAI: complete OAuth-backed xAI login and sidecar auth fixes, including guarded loopback callback CORS handling, video generation polling/defaults, and native-host User-Agent attribution. ([#&#8203;83322](https://github.com/openclaw/openclaw/issues/83322)) Thanks [@&#8203;Jaaneek](https://github.com/Jaaneek).
- Codex app-server: preserve streamed native command output in mirrored transcripts and trajectory exports when final snapshots omit aggregated output. ([#&#8203;83200](https://github.com/openclaw/openclaw/issues/83200)) Thanks [@&#8203;rozmiarD](https://github.com/rozmiarD).
- Codex app-server: fail closed when chat or sender policy denies tools, disabling native code, app, environment, and user MCP surfaces for restricted turns. ([#&#8203;82374](https://github.com/openclaw/openclaw/issues/82374)) Thanks [@&#8203;VACInc](https://github.com/VACInc).
- Codex app-server: keep recent context-engine messages when oversized projected history is truncated, so short follow-ups in long channel sessions do not fall back to stale earlier turns. ([#&#8203;83127](https://github.com/openclaw/openclaw/issues/83127)) Thanks [@&#8203;VACInc](https://github.com/VACInc).
- Codex app-server: keep OpenClaw session spawning searchable while steering Codex-native delegation through native subagents, avoiding duplicate direct subagent surfaces. ([#&#8203;83329](https://github.com/openclaw/openclaw/issues/83329)) Thanks [@&#8203;fuller-stack-dev](https://github.com/fuller-stack-dev).
- Codex app-server: recover stale childless Codex-native subagent task mirrors during maintenance and allow their registry rows to be cancelled without an OpenClaw child session. ([#&#8203;82836](https://github.com/openclaw/openclaw/issues/82836)) Thanks [@&#8203;yshimadahrs-ship-it](https://github.com/yshimadahrs-ship-it) and [@&#8203;joshavant](https://github.com/joshavant).
- Feishu: return bound subagent delivery origins from session thread setup so Feishu subagent completions route back to the same DM or topic. ([#&#8203;83190](https://github.com/openclaw/openclaw/issues/83190)) Thanks [@&#8203;100menotu001](https://github.com/100menotu001).
- CLI/update: tailor post-update Gateway recovery hints by platform, showing systemd, LaunchAgent, Scheduled Task, or generic service-manager guidance instead of macOS-only recovery text. ([#&#8203;83096](https://github.com/openclaw/openclaw/issues/83096)) Thanks [@&#8203;rubencu](https://github.com/rubencu).
- Plugins: apply a default 15-second timeout to legacy `before_agent_start` hooks so hung plugin handlers no longer block agent startup. Fixes [#&#8203;48534](https://github.com/openclaw/openclaw/issues/48534). ([#&#8203;83136](https://github.com/openclaw/openclaw/issues/83136)) Thanks [@&#8203;therahul-yo](https://github.com/therahul-yo).
- Feishu: refresh inbound session delivery context for DM, group, and broadcast turns so later replies do not inherit stale WebChat routing. Fixes [#&#8203;78274](https://github.com/openclaw/openclaw/issues/78274).
- Agents/subagents: require the initial subagent registry save before reporting spawn accepted, returning a spawn error instead of losing an untracked run when the registry write fails. ([#&#8203;83146](https://github.com/openclaw/openclaw/issues/83146)) Thanks [@&#8203;yetval](https://github.com/yetval).
- QA-Lab/qa-channel: attach redacted agent tool-start traces to outbound `QaBusMessage` records so scenarios can assert actual tool use instead of relying only on reply text. Fixes [#&#8203;67637](https://github.com/openclaw/openclaw/issues/67637). Thanks [@&#8203;100yenadmin](https://github.com/100yenadmin).
- QA-Lab: fail live runtime parity reports when assistant-message usage is missing, preventing `0 vs 0` live token rows from being reported as passing proof. Fixes [#&#8203;80411](https://github.com/openclaw/openclaw/issues/80411). Thanks [@&#8203;100yenadmin](https://github.com/100yenadmin).
- QA-Lab: add a runtime token-efficiency sidecar report that classifies Codex savings separately from regressions and fails only positive Codex-over-Pi live token deltas above threshold. Fixes [#&#8203;81093](https://github.com/openclaw/openclaw/issues/81093). Thanks [@&#8203;100yenadmin](https://github.com/100yenadmin).
- QA-Lab: fail Codex-backed OpenAI live runtime-pair runs before launching isolated workers when no portable Codex auth is available, while staging API-key fallbacks and configured Codex keys for isolated QA agents. Fixes [#&#8203;80412](https://github.com/openclaw/openclaw/issues/80412). Thanks [@&#8203;100yenadmin](https://github.com/100yenadmin).
- QA-Lab: refresh parity gates, mock frontier fixtures, model scenarios, and workflow artifact lanes to compare GPT-5.5 against Claude Opus 4.7. Fixes [#&#8203;74262](https://github.com/openclaw/openclaw/issues/74262). Thanks [@&#8203;100yenadmin](https://github.com/100yenadmin).
- QA-Lab: make mock parity dispatch provider-aware for source discovery and subagent scenarios so OpenAI and Anthropic lanes no longer share identical canned plans. Fixes [#&#8203;64879](https://github.com/openclaw/openclaw/issues/64879). Thanks [@&#8203;100yenadmin](https://github.com/100yenadmin).
- QA-Lab: stop returning Control UI bearer tokens from unauthenticated bootstrap payloads and bind Docker harness ports to loopback-only host addresses. ([#&#8203;66355](https://github.com/openclaw/openclaw/issues/66355)) Thanks [@&#8203;pgondhi987](https://github.com/pgondhi987).
- Mac app: avoid a SwiftUI metadata crash when rendering the Cron Jobs settings pane.
- Agents/subagents: preserve run-mode keep subagent registry entries past the session sweep TTL, so kept subagent runs remain visible after cleanup completes. Fixes [#&#8203;83132](https://github.com/openclaw/openclaw/issues/83132). ([#&#8203;83168](https://github.com/openclaw/openclaw/issues/83168)) Thanks [@&#8203;yetval](https://github.com/yetval).
- Agents/OpenAI streams: yield via `setTimeout(0)` instead of `setImmediate` between bursty Responses chunks so abort timers can fire during the yield, keeping cancel-on-timeout responsive on hot streams. Refs [#&#8203;82462](https://github.com/openclaw/openclaw/issues/82462).
- Agents/Codex: keep legacy `oauthRef`-backed OAuth profiles usable while `openclaw doctor --fix` migrates them back to inline credentials, without creating new sidecar credentials. ([#&#8203;83312](https://github.com/openclaw/openclaw/issues/83312)) Thanks [@&#8203;joshavant](https://github.com/joshavant).
- Agents/Codex: load the selected provider owner alongside the Codex harness runtime so `openai-codex` models resolve when plugin allowlists scope runtime loading. Fixes [#&#8203;83380](https://github.com/openclaw/openclaw/issues/83380). ([#&#8203;83519](https://github.com/openclaw/openclaw/issues/83519)) Thanks [@&#8203;joshavant](https://github.com/joshavant).
- Telegram: fail stalled isolated-ingress handlers into tombstones and abort same-lane reply work before restarting, so later same-chat updates drain after a hung turn. Fixes [#&#8203;83272](https://github.com/openclaw/openclaw/issues/83272). ([#&#8203;83505](https://github.com/openclaw/openclaw/issues/83505)) Thanks [@&#8203;joshavant](https://github.com/joshavant).
- CLI/config: send SecretRef diagnostics to stderr so JSON command stdout remains parseable.
- CLI/doctor: seed Control UI allowed origins when migrating legacy non-loopback gateway bind host aliases like `0.0.0.0`. Fixes [#&#8203;83286](https://github.com/openclaw/openclaw/issues/83286). Thanks [@&#8203;giodl73-repo](https://github.com/giodl73-repo).
- CLI/plugins: ship the bundled memory CLI as a package entry so package-installed `openclaw memory` commands register correctly.
- CLI/update: defer doctor-time plugin package installs during package swaps and seed post-core repair from the updated install registry, preventing duplicate reinstall failures.
- CLI/update: preserve old-parent-readable config metadata during legacy package handoffs, fall back only to official `@openclaw/*` npm plugin packages when ClawHub plugin artifacts are unavailable, and keep managed service package roots authoritative during updates.
- Feishu: detect SecretRef top-level credentials as a configured default account instead of treating object-backed app secrets as missing.
- Gateway/restart: keep ordinary unmanaged SIGUSR1/config restarts in-process instead of detach-spawning an orphaned child, preserving custom supervisor PID tracking while leaving update restarts on the fresh-process path. Fixes [#&#8203;65668](https://github.com/openclaw/openclaw/issues/65668).
- CLI/completion: resolve concrete PowerShell profile paths and reload commands during setup and doctor completion installation. Fixes [#&#8203;44296](https://github.com/openclaw/openclaw/issues/44296). ([#&#8203;83059](https://github.com/openclaw/openclaw/issues/83059)) Thanks [@&#8203;yu-xin-c](https://github.com/yu-xin-c).
- Telegram: keep isolated long polling below the hard `getUpdates` request guard so idle bot accounts with high `timeoutSeconds` do not false-disconnect and restart-loop. Fixes [#&#8203;83264](https://github.com/openclaw/openclaw/issues/83264). Thanks [@&#8203;riccodecarvalho](https://github.com/riccodecarvalho).
- Providers/Google: preserve and recover Gemini 3 tool-call thought signatures during native replay so function-calling turns no longer fail with missing `thought_signature` 400s. Fixes [#&#8203;72879](https://github.com/openclaw/openclaw/issues/72879). ([#&#8203;80358](https://github.com/openclaw/openclaw/issues/80358)) Thanks [@&#8203;abnershang](https://github.com/abnershang).
- Telegram: skip transcript-only delivery mirrors and gateway-injected rows when resolving latest assistant text, preventing retained previews from replacing final replies with stale fragments. Fixes [#&#8203;83159](https://github.com/openclaw/openclaw/issues/83159). ([#&#8203;83362](https://github.com/openclaw/openclaw/issues/83362)) Thanks [@&#8203;joshavant](https://github.com/joshavant).
- Memory/QMD: keep lexical search on raw hyphenated queries while normalizing semantic QMD sub-searches, avoiding fallback to the builtin index for dashed identifiers and dates. Fixes [#&#8203;81328](https://github.com/openclaw/openclaw/issues/81328).
- Memory-core: distinguish sqlite-vec load failures from missing semantic vector embeddings in degraded `memory index` warnings, so vector recall diagnostics point at unresolved dimensions instead of blaming sqlite-vec when the store is ready. Fixes [#&#8203;75624](https://github.com/openclaw/openclaw/issues/75624). ([#&#8203;83056](https://github.com/openclaw/openclaw/issues/83056)) Thanks [@&#8203;xuruiray](https://github.com/xuruiray) and [@&#8203;Noah3521](https://github.com/Noah3521).
- Agents/subagents: preserve sandbox-peer controller ownership while routing completion announcements back to the originating run session, keeping subagent control and completion delivery scoped correctly. Fixes [#&#8203;80201](https://github.com/openclaw/openclaw/issues/80201). ([#&#8203;80242](https://github.com/openclaw/openclaw/issues/80242)) Thanks [@&#8203;Jerry-Xin](https://github.com/Jerry-Xin).
- Gateway: continue restarting remaining channels when one hot-reload channel restart fails, while still reporting aggregate reload failure and rolling back plugin pre-replace stops. Fixes [#&#8203;83054](https://github.com/openclaw/openclaw/issues/83054). Thanks [@&#8203;zqchris](https://github.com/zqchris).
- Gateway/plugins: bind admin HTTP RPC dispatch to the accepting gateway instance so multi-gateway processes cannot execute plugin HTTP control-plane calls against another live gateway. Fixes [#&#8203;83486](https://github.com/openclaw/openclaw/issues/83486). ([#&#8203;83487](https://github.com/openclaw/openclaw/issues/83487)) Thanks [@&#8203;coygeek](https://github.com/coygeek).
- Telegram: keep hot-reload restarts from marking polling accounts manually stopped and restart isolated ingress cleanly after worker shutdown, preserving Telegram replies across config reloads. Fixes [#&#8203;83008](https://github.com/openclaw/openclaw/issues/83008). ([#&#8203;83410](https://github.com/openclaw/openclaw/issues/83410)) Thanks [@&#8203;joshavant](https://github.com/joshavant).
- Telegram/Ollama: pass current Telegram image attachments into native PI/Ollama vision turns so live photo prompts reach Ollama as native images. Fixes [#&#8203;83023](https://github.com/openclaw/openclaw/issues/83023). ([#&#8203;83516](https://github.com/openclaw/openclaw/issues/83516)) Thanks [@&#8203;joshavant](https://github.com/joshavant).
- Gateway/secrets: split the lightweight secrets runtime state and auth-store cache from the full secrets runtime and take a startup fast path when the gateway startup config has no SecretRef values, speeding up secrets startup while preserving cleanup and refresh semantics.
- Codex app-server: rotate oversized native Codex threads before resume and cap dynamic tool-result text entering native Codex sessions, preventing stale oversized context from surviving OpenClaw compaction. ([#&#8203;82981](https://github.com/openclaw/openclaw/issues/82981)) Thanks [@&#8203;hansolo949](https://github.com/hansolo949).
- Gateway/restart: drain pending replies and active chat runs during restart shutdown before sockets and channels close, aborting timed-out chat runs through the normal cleanup path. ([#&#8203;69121](https://github.com/openclaw/openclaw/issues/69121)) Thanks [@&#8203;alexlomt](https://github.com/alexlomt).
- Agents/Codex: use the Codex runtime context window for OpenAI-model preflight compaction and memory flush checks, so GPT-5.5 Codex sessions compact before hitting the smaller native context limit. Fixes [#&#8203;82982](https://github.com/openclaw/openclaw/issues/82982). Thanks [@&#8203;vliuyt](https://github.com/vliuyt).
- QA-Lab: clean orphaned gateway temp roots when a suite parent exits and wait on gateway plus transport readiness after config restarts, reducing stale `qa-channel` noise from interrupted runs. Fixes [#&#8203;65506](https://github.com/openclaw/openclaw/issues/65506). Thanks [@&#8203;100yenadmin](https://github.com/100yenadmin).
- QA-Lab: wake qa-bus long polls that arrive with stale future cursors after a bus restart, preserving reconnect readiness for harness clients. ([#&#8203;67142](https://github.com/openclaw/openclaw/issues/67142)) Thanks [@&#8203;hxy91819](https://github.com/hxy91819).
- QA-Lab: stage Multipass transfer scripts under OpenClaw's preferred temp root instead of raw OS temp paths, keeping the VM runner inside temp-path guardrails. ([#&#8203;64098](https://github.com/openclaw/openclaw/issues/64098)) Thanks [@&#8203;ImLukeF](https://github.com/ImLukeF).
- Agents/replies: keep surviving reply media and append a warning when other media references fail, so partial media normalization no longer drops failures silently. Thanks [@&#8203;Jerry-Xin](https://github.com/Jerry-Xin).
- Config/models: accept `thinkingFormat: "together"` in model compat config so Together routes can opt into the Together-specific thinking response shape.
- Plugins/tokenjuice: bump the bundled tokenjuice runtime to 0.7.1, bringing Codex hook approval compatibility, pre-tool command wrapping fixes, and Rolldown/Vitest output compaction improvements into the OpenClaw plugin.
- Agents/OpenAI: stop post-processing GPT-5 final replies with hardcoded brevity caps, preserving full channel responses instead of appending synthetic ellipses, and log when strict-agentic GPT-5 execution activates. Fixes [#&#8203;82910](https://github.com/openclaw/openclaw/issues/82910).
- Mac app: refine the Settings General and Connection panes with cleaner status panels, card rows, and a single native titlebar sidebar toggle.
- Agents/media: deliver failed async image, music, and video generation completions directly when requester-session completion handoff fails, so channel users see provider errors instead of silent fallback stalls.
- Browser/CDP: keep loopback proxy bypass active across both `NO_PROXY` casings and redact home-relative Chrome MCP profile paths in attach-failure diagnostics.
- Agents/music: steer song, jingle, beat, anthem, and instrumental requests toward `music_generate` audio creation instead of lyric-only replies, and reserve `lyrics` for exact sung words.
- Codex app-server: record native Codex tool calls and results into trajectory artifacts so debug/trajectory exports capture the full Codex-native tool history, not just OpenClaw-bridged turns. Thanks [@&#8203;vyctorbrzezowski](https://github.com/vyctorbrzezowski).
- Codex/app-server: keep bound conversation sessions on the owning agent runtime so native Codex control and follow-up turns do not fall back to the default agent client. Fixes [#&#8203;82954](https://github.com/openclaw/openclaw/issues/82954). ([#&#8203;82993](https://github.com/openclaw/openclaw/issues/82993))
- CLI/infer: run gateway model probes in fresh explicit sessions so one-shot provider checks do not inherit default agent transcript state. ([#&#8203;82861](https://github.com/openclaw/openclaw/issues/82861)) Thanks [@&#8203;Kaspre](https://github.com/Kaspre).
- Providers/Together: send video-generation requests to Together's v2 video API even when shared text-model config still points at the v1 base URL. ([#&#8203;82992](https://github.com/openclaw/openclaw/issues/82992))
- Browser CLI: preserve browser-level options on nested commands, skip option values during lazy command registration, and keep long-running wait/download/dialog hooks open for their advertised wait window.
- CLI/sessions: accept `openclaw sessions list` as an alias for `openclaw sessions`, matching other list-style commands. Fixes [#&#8203;81139](https://github.com/openclaw/openclaw/issues/81139). ([#&#8203;81163](https://github.com/openclaw/openclaw/issues/81163)) Thanks [@&#8203;YB0y](https://github.com/YB0y).
- Channels/stream previews: widen compact progress draft lines and cut prose at word boundaries while preserving command/path suffixes, with `streaming.progress.maxLineChars` for channel-specific tuning.
- CLI/plugins: have `openclaw plugins doctor` warn when a configured runtime needs a missing owner plugin, sharing the same install mapping as `openclaw doctor --fix`. Fixes [#&#8203;81326](https://github.com/openclaw/openclaw/issues/81326). ([#&#8203;81674](https://github.com/openclaw/openclaw/issues/81674)) Thanks [@&#8203;Zavianx](https://github.com/Zavianx).
- Agents/Codex: route OpenAI runs that resolve to `openai-codex` through the Codex provider and bootstrap OpenClaw's stored OAuth profile into the Codex harness when the harness owns transport, so `openai/*` model refs no longer fail with `No API key found for openai-codex` despite an existing Codex OAuth profile. ([#&#8203;82864](https://github.com/openclaw/openclaw/issues/82864)) Thanks [@&#8203;ragesaq](https://github.com/ragesaq).
- Agents/ACP: distinguish prompt-submitted and runtime-active child stalls from true interactive waits, including redacted proxy-env diagnostics for Codex ACP no-output runs. Fixes [#&#8203;44810](https://github.com/openclaw/openclaw/issues/44810).
- Agents/memory: explain that memory-triggered compaction exposes only `read` and append-only `write` when configured core tools are unavailable in `tools.allow` warnings. Fixes [#&#8203;82941](https://github.com/openclaw/openclaw/issues/82941). Thanks [@&#8203;galiniliev](https://github.com/galiniliev).
- Agents/OpenAI: preserve deterministic tool payload ordering for prompt-cache reuse across OpenAI Responses and chat completions calls. ([#&#8203;82940](https://github.com/openclaw/openclaw/issues/82940)) Thanks [@&#8203;galiniliev](https://github.com/galiniliev).
- ACP/Codex: honor terminal ACP turn results so failed Codex/acpx runs are not recorded as successful after only progress text. Fixes [#&#8203;79522](https://github.com/openclaw/openclaw/issues/79522). Thanks [@&#8203;dudaefj](https://github.com/dudaefj).
- Telegram: warn when a media group drops photos that fail to download, including albums where every photo is skipped. Fixes [#&#8203;55216](https://github.com/openclaw/openclaw/issues/55216). ([#&#8203;82987](https://github.com/openclaw/openclaw/issues/82987)) Thanks [@&#8203;eldar702](https://github.com/eldar702).
- Agents/diagnostics: treat repeated same-handle embedded-run cleanup as idempotent while preserving true replacement-handle mismatch diagnostics. Fixes [#&#8203;82959](https://github.com/openclaw/openclaw/issues/82959). ([#&#8203;82960](https://github.com/openclaw/openclaw/issues/82960)) Thanks [@&#8203;galiniliev](https://github.com/galiniliev).
- Agents/subagents: preserve high-priority `AGENTS.md` policy in bootstrap context when oversized files are trimmed, and warn agents to read the full policy file before relying on scoped rules. Fixes [#&#8203;82920](https://github.com/openclaw/openclaw/issues/82920). ([#&#8203;82921](https://github.com/openclaw/openclaw/issues/82921)) Thanks [@&#8203;galiniliev](https://github.com/galiniliev).
- Agents/skills: apply the full effective tool policy pipeline to inline `command-dispatch: tool` skill dispatch before owner-only filtering, preserving configured allow, deny, sandbox, sender, group, and subagent restrictions. ([#&#8203;78525](https://github.com/openclaw/openclaw/issues/78525))
- Codex: avoid spawning native hook relay subprocesses for post-tool/finalize events with no registered hook handlers while preserving pre-tool safety and approval relays. Fixes [#&#8203;76552](https://github.com/openclaw/openclaw/issues/76552). ([#&#8203;78004](https://github.com/openclaw/openclaw/issues/78004)) Thanks [@&#8203;evgyur](https://github.com/evgyur).
- Channel accounts: keep top-level default channel accounts visible when named accounts are added alongside default credential material, so mixed legacy/new account configs keep resolving `default` instead of silently dropping it.
- Agents/CLI: reject empty successful CLI subprocess replies as `empty_response` and keep them out of shared auth-profile health, so blank Claude CLI results no longer become green no-payload turns. Fixes [#&#8203;83231](https://github.com/openclaw/openclaw/issues/83231). ([#&#8203;83421](https://github.com/openclaw/openclaw/issues/83421)) Thanks [@&#8203;joshavant](https://github.com/joshavant).
- Codex/Telegram: synthesize native Codex tool progress from final turn snapshots so Telegram `/verbose` stays visible when command events arrive only at completion.
- Codex/Telegram: deliver Codex verbose tool summaries in direct message-tool-only turns while suppressing message-send and activity-log noise. ([#&#8203;83186](https://github.com/openclaw/openclaw/issues/83186)) Thanks [@&#8203;kurplunkin](https://github.com/kurplunkin).
- Mac app: make Channels settings open faster by deferring config-schema work, avoiding startup channel probes, caching decoded channel status rows, and showing only compact quick settings instead of the full generated channel schema.
- Control UI: include the Control UI and Gateway protocol versions in protocol-mismatch errors so stale app/dashboard pairings identify which side needs rebuilding or restarting.
- Gateway/protocol: restore Gateway WS protocol v4 and keep `message.action` room-event metadata on the existing `inboundTurnKind` wire field while preserving internal inbound-event classification.
- Agents/tools: prefer non-webchat session-key routes when the message tool has stale webchat context, so message-tool-only replies keep delivering to the originating channel. Fixes [#&#8203;82911](https://github.com/openclaw/openclaw/issues/82911). ([#&#8203;83004](https://github.com/openclaw/openclaw/issues/83004)) Thanks [@&#8203;joshavant](https://github.com/joshavant).
- Channels: keep direct-message last-route writes on isolated `per-channel-peer` sessions instead of contaminating the agent main session with channel delivery context. Fixes [#&#8203;36614](https://github.com/openclaw/openclaw/issues/36614). Thanks [@&#8203;aspenas](https://github.com/aspenas).
- Mac app: move the Settings sidebar toggle into the native titlebar and tighten the General pane width.
- Mac app: keep visited Settings panes mounted so switching tabs no longer blanks and reloads their content.
- Mac app: make Config settings open from shallow schema lookups and load selected paths on demand instead of fetching and rendering the full generated config schema up front.
- Codex: sanitize inline image payloads before Codex app-server and OpenAI Responses replay, and clear poisoned Codex thread bindings after invalid image errors. Fixes [#&#8203;82878](https://github.com/openclaw/openclaw/issues/82878).
- Providers/GitHub Copilot: request identity-encoded Copilot API responses across token exchange, catalog, model calls, usage, and embeddings so compressed Business-account error payloads no longer reach JSON parsers as gzip bytes. Fixes [#&#8203;82871](https://github.com/openclaw/openclaw/issues/82871). Thanks [@&#8203;tonyfe01](https://github.com/tonyfe01).
- Telegram: redact nested raw-update identifiers and user metadata before verbose raw update logging, preserving useful update/message ids without exposing chat, user, command, or profile details. ([#&#8203;82945](https://github.com/openclaw/openclaw/issues/82945)) Thanks [@&#8203;galiniliev](https://github.com/galiniliev) and [@&#8203;joshavant](https://github.com/joshavant).
- Telegram: preserve replied-to bot messages, captions, and media metadata in group reply chains so follow-up replies understand what the user is reacting to. ([#&#8203;82863](https://github.com/openclaw/openclaw/issues/82863))
- Providers/Together: update PI runtime packages to 0.74.1 and emit Together-style `reasoning.enabled`/`max_tokens` controls for reasoning-capable OpenAI-completions models.
- Agents/diagnostics: split slow embedded-run `attempt-dispatch` startup summaries into workspace, prompt, runtime-plan, and final dispatch subspans so traces identify the delayed setup phase. Fixes [#&#8203;82782](https://github.com/openclaw/openclaw/issues/82782). ([#&#8203;82783](https://github.com/openclaw/openclaw/issues/82783)) Thanks [@&#8203;galiniliev](https://github.com/galiniliev).
- Agents/Codex: flatten nested tool-result middleware blocks into bounded text so successful message sends are no longer replaced with `Tool output unavailable due to post-processing error`. Fixes [#&#8203;82912](https://github.com/openclaw/openclaw/issues/82912). Thanks [@&#8203;joeykrug](https://github.com/joeykrug).
- CLI/media: accept HTTP(S) URLs in `openclaw infer image describe --file`, fetching remote images through the guarded media path instead of treating URLs as local files. Fixes [#&#8203;82837](https://github.com/openclaw/openclaw/issues/82837). ([#&#8203;82854](https://github.com/openclaw/openclaw/issues/82854)) Thanks [@&#8203;neeravmakwana](https://github.com/neeravmakwana).
- Agents/subagents: keep session-backed parent runs active when the child wait call times out before the child session has actually settled, so late subagent completions are reconciled instead of being lost. Fixes [#&#8203;82787](https://github.com/openclaw/openclaw/issues/82787). …
markfietje pushed a commit to markfietje/openclaw that referenced this pull request May 20, 2026
Summary:
- This PR changes queued reply followups so user_request items no longer carry or inherit a source abort signal, preserves room_event abort signals, adds focused regression coverage, and updates CHANGELOG.md.
- Reproducibility: yes. at source level. Current main attaches and later falls back to opts.abortSignal for qu ... ore-fix regression failures for the two implicated paths; I did not execute tests in this read-only review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: Preserve queued Telegram topic followups

Validation:
- ClawSweeper review passed for head 96fa0f69bacbe13a7915c46caf7956abaffdf52a.
- Required merge gates passed before the squash merge.

Prepared head SHA: 96fa0f69bacbe13a7915c46caf7956abaffdf52a
Review: openclaw/openclaw#83827 (comment)

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
markfietje pushed a commit to markfietje/openclaw that referenced this pull request May 20, 2026
Summary:
- This PR changes queued reply followups so user_request items no longer carry or inherit a source abort signal, preserves room_event abort signals, adds focused regression coverage, and updates CHANGELOG.md.
- Reproducibility: yes. at source level. Current main attaches and later falls back to opts.abortSignal for qu ... ore-fix regression failures for the two implicated paths; I did not execute tests in this read-only review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: Preserve queued Telegram topic followups

Validation:
- ClawSweeper review passed for head 96fa0f69bacbe13a7915c46caf7956abaffdf52a.
- Required merge gates passed before the squash merge.

Prepared head SHA: 96fa0f69bacbe13a7915c46caf7956abaffdf52a
Review: openclaw/openclaw#83827 (comment)

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
SebTardif pushed a commit to SebTardif/openclaw that referenced this pull request May 24, 2026
Summary:
- This PR changes queued reply followups so user_request items no longer carry or inherit a source abort signal, preserves room_event abort signals, adds focused regression coverage, and updates CHANGELOG.md.
- Reproducibility: yes. at source level. Current main attaches and later falls back to opts.abortSignal for qu ... ore-fix regression failures for the two implicated paths; I did not execute tests in this read-only review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: Preserve queued Telegram topic followups

Validation:
- ClawSweeper review passed for head 96fa0f6.
- Required merge gates passed before the squash merge.

Prepared head SHA: 96fa0f6
Review: openclaw#83827 (comment)

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
SebTardif pushed a commit to SebTardif/openclaw that referenced this pull request May 24, 2026
Summary:
- This PR changes queued reply followups so user_request items no longer carry or inherit a source abort signal, preserves room_event abort signals, adds focused regression coverage, and updates CHANGELOG.md.
- Reproducibility: yes. at source level. Current main attaches and later falls back to opts.abortSignal for qu ... ore-fix regression failures for the two implicated paths; I did not execute tests in this read-only review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: Preserve queued Telegram topic followups

Validation:
- ClawSweeper review passed for head 96fa0f6.
- Required merge gates passed before the squash merge.

Prepared head SHA: 96fa0f6
Review: openclaw#83827 (comment)

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
SebTardif pushed a commit to SebTardif/openclaw that referenced this pull request May 24, 2026
Summary:
- This PR changes queued reply followups so user_request items no longer carry or inherit a source abort signal, preserves room_event abort signals, adds focused regression coverage, and updates CHANGELOG.md.
- Reproducibility: yes. at source level. Current main attaches and later falls back to opts.abortSignal for qu ... ore-fix regression failures for the two implicated paths; I did not execute tests in this read-only review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: Preserve queued Telegram topic followups

Validation:
- ClawSweeper review passed for head 96fa0f6.
- Required merge gates passed before the squash merge.

Prepared head SHA: 96fa0f6
Review: openclaw#83827 (comment)

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request May 24, 2026
Summary:
- This PR changes queued reply followups so user_request items no longer carry or inherit a source abort signal, preserves room_event abort signals, adds focused regression coverage, and updates CHANGELOG.md.
- Reproducibility: yes. at source level. Current main attaches and later falls back to opts.abortSignal for qu ... ore-fix regression failures for the two implicated paths; I did not execute tests in this read-only review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: Preserve queued Telegram topic followups

Validation:
- ClawSweeper review passed for head 96fa0f6.
- Required merge gates passed before the squash merge.

Prepared head SHA: 96fa0f6
Review: openclaw#83827 (comment)

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
galiniliev pushed a commit to galiniliev/openclaw that referenced this pull request May 25, 2026
Summary:
- This PR changes queued reply followups so user_request items no longer carry or inherit a source abort signal, preserves room_event abort signals, adds focused regression coverage, and updates CHANGELOG.md.
- Reproducibility: yes. at source level. Current main attaches and later falls back to opts.abortSignal for qu ... ore-fix regression failures for the two implicated paths; I did not execute tests in this read-only review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: Preserve queued Telegram topic followups

Validation:
- ClawSweeper review passed for head 96fa0f6.
- Required merge gates passed before the squash merge.

Prepared head SHA: 96fa0f6
Review: openclaw#83827 (comment)

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
SebTardif pushed a commit to SebTardif/openclaw that referenced this pull request May 26, 2026
Summary:
- This PR changes queued reply followups so user_request items no longer carry or inherit a source abort signal, preserves room_event abort signals, adds focused regression coverage, and updates CHANGELOG.md.
- Reproducibility: yes. at source level. Current main attaches and later falls back to opts.abortSignal for qu ... ore-fix regression failures for the two implicated paths; I did not execute tests in this read-only review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: Preserve queued Telegram topic followups

Validation:
- ClawSweeper review passed for head 96fa0f6.
- Required merge gates passed before the squash merge.

Prepared head SHA: 96fa0f6
Review: openclaw#83827 (comment)

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
SebTardif pushed a commit to SebTardif/openclaw that referenced this pull request May 26, 2026
Summary:
- This PR changes queued reply followups so user_request items no longer carry or inherit a source abort signal, preserves room_event abort signals, adds focused regression coverage, and updates CHANGELOG.md.
- Reproducibility: yes. at source level. Current main attaches and later falls back to opts.abortSignal for qu ... ore-fix regression failures for the two implicated paths; I did not execute tests in this read-only review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: Preserve queued Telegram topic followups

Validation:
- ClawSweeper review passed for head 96fa0f6.
- Required merge gates passed before the squash merge.

Prepared head SHA: 96fa0f6
Review: openclaw#83827 (comment)

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
SebTardif pushed a commit to SebTardif/openclaw that referenced this pull request May 26, 2026
Summary:
- This PR changes queued reply followups so user_request items no longer carry or inherit a source abort signal, preserves room_event abort signals, adds focused regression coverage, and updates CHANGELOG.md.
- Reproducibility: yes. at source level. Current main attaches and later falls back to opts.abortSignal for qu ... ore-fix regression failures for the two implicated paths; I did not execute tests in this read-only review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: Preserve queued Telegram topic followups

Validation:
- ClawSweeper review passed for head 96fa0f6.
- Required merge gates passed before the squash merge.

Prepared head SHA: 96fa0f6
Review: openclaw#83827 (comment)

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
@VACInc

VACInc commented May 28, 2026

Copy link
Copy Markdown
Contributor Author

@clawsweeper hatch

@clawsweeper

clawsweeper Bot commented May 28, 2026

Copy link
Copy Markdown
Contributor

🦞👀
ClawSweeper could not hatch this PR egg yet.

Reason: hatch requires an open pull request.

jameslcowan pushed a commit to jameslcowan/openclaw that referenced this pull request Jun 2, 2026
Summary:
- This PR changes queued reply followups so user_request items no longer carry or inherit a source abort signal, preserves room_event abort signals, adds focused regression coverage, and updates CHANGELOG.md.
- Reproducibility: yes. at source level. Current main attaches and later falls back to opts.abortSignal for qu ... ore-fix regression failures for the two implicated paths; I did not execute tests in this read-only review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: Preserve queued Telegram topic followups

Validation:
- ClawSweeper review passed for head 96fa0f6.
- Required merge gates passed before the squash merge.

Prepared head SHA: 96fa0f6
Review: openclaw#83827 (comment)

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
SYU8384 pushed a commit to SYU8384/openclaw that referenced this pull request Jun 3, 2026
Summary:
- This PR changes queued reply followups so user_request items no longer carry or inherit a source abort signal, preserves room_event abort signals, adds focused regression coverage, and updates CHANGELOG.md.
- Reproducibility: yes. at source level. Current main attaches and later falls back to opts.abortSignal for qu ... ore-fix regression failures for the two implicated paths; I did not execute tests in this read-only review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: Preserve queued Telegram topic followups

Validation:
- ClawSweeper review passed for head 96fa0f6.
- Required merge gates passed before the squash merge.

Prepared head SHA: 96fa0f6
Review: openclaw#83827 (comment)

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
sablehead pushed a commit to sablehead/openclaw that referenced this pull request Jun 10, 2026
Summary:
- This PR changes queued reply followups so user_request items no longer carry or inherit a source abort signal, preserves room_event abort signals, adds focused regression coverage, and updates CHANGELOG.md.
- Reproducibility: yes. at source level. Current main attaches and later falls back to opts.abortSignal for qu ... ore-fix regression failures for the two implicated paths; I did not execute tests in this read-only review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: Preserve queued Telegram topic followups

Validation:
- ClawSweeper review passed for head 96fa0f6.
- Required merge gates passed before the squash merge.

Prepared head SHA: 96fa0f6
Review: openclaw#83827 (comment)

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

clawsweeper:automerge Maintainer opted this PR into bounded ClawSweeper-reviewed automerge mantis: telegram-visible-proof Mantis should capture Telegram visible proof. merge-risk: 🚨 message-delivery 🚨 May drop, duplicate, misroute, suppress, or wrongly target messages. P1 High-priority user-facing bug, regression, or broken workflow. proof: sufficient ClawSweeper judged the real behavior proof convincing. proof: supplied External PR includes structured after-fix real behavior proof. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. size: S status: 🚀 automerge armed This PR is in ClawSweeper's automerge lane.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants