Skip to content

fix(telegram): restore /compact on generic message ingress#89588

Merged
obviyus merged 6 commits into
openclaw:mainfrom
joelnishanth:fix/telegram-compact-command-source
Jun 9, 2026
Merged

fix(telegram): restore /compact on generic message ingress#89588
obviyus merged 6 commits into
openclaw:mainfrom
joelnishanth:fix/telegram-compact-command-source

Conversation

@joelnishanth

@joelnishanth joelnishanth commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

Summary

Telegram native /compact command runs compaction successfully but produces no visible bot reply. The root cause: the full dispatch pipeline (dispatchReplyWithBufferedBlockDispatcher) has multiple layers — foreground reply fence, dispatch operation busy checks, plugin hooks — that can silently cancel or drop simple status-notice replies before they reach the Telegram sendMessage API.

Fix

For native commands that produce status notices (/compact, /status, etc.), bypass the dispatch pipeline entirely:

  1. Call getReplyFromConfig directly to resolve the command reply
  2. Detect status notices (isStatusNotice or ⚙️-prefixed text)
  3. Deliver directly via deliverReplies — no fence, no operation claims, no hooks
  4. Non-status commands (LLM-triggering) still use the full dispatch pipeline for streaming/tools

Additionally:

  • Mark command replies with deliverDespiteSourceReplySuppression metadata so message_tool_only config doesn't suppress them
  • Add shouldBypassForegroundReplyFenceCancellation check in the dispatch fence layer
  • Add native-command-ack-fallback module for defense-in-depth

Fixes #89525

Verification

pnpm test extensions/telegram/src/bot.create-telegram-bot.test.ts
pnpm test extensions/telegram/src/native-command-ack-fallback.test.ts
pnpm test src/auto-reply/reply/commands-compact.test.ts
pnpm test src/auto-reply/reply/get-reply-native-slash-fast-path.test.ts

Real behavior proof (required for external PRs)

  • Behavior or issue addressed: Telegram native /compact command runs compaction but never delivers the ack reply to the user. Other commands (/new, /stop) work. Root cause: dispatch pipeline silently drops status-notice payloads via foreground fence cancellation or operation-busy abort after the reply resolver returns.
  • Real environment tested: macOS 15.5, Node 22.22, OpenClaw 2026.6.2 local build (fix/telegram-compact-command-source), Telegram bot @oclawfourthreefourbot, DM chat, ollama/minimax-m3:cloud model.
  • Exact steps or command run after this patch: Rebuilt with pnpm build, restarted gateway via node dist/index.js gateway restart, sent /compact in Telegram DM.
  • Evidence after fix (screenshot):

Before (bug): /compact produces no reply

before

After (fix): /compact immediately delivers the ack reply

after

  • Observed result after fix: /compact now immediately replies with "⚙ Compaction skipped: nothing compactable in this session yet • Context ?/?" (empty session) or "⚙ Compacted • Context 23k/524k (4%)" (after conversation). Both cases deliver the ack in <1 second.
  • What was not tested: Group chat /compact, forum topic /compact, Crabbox remote proof.
  • Proof limitations or environment constraints: Local macOS proof with real Telegram bot; no Crabbox session available for this run.

Risks and mitigations

  • Risk: Calling getReplyFromConfig outside the dispatch pipeline may miss session-side-effect hooks for status notices — mitigated: status notices are read-only feedback and don't produce model responses or session state changes beyond the compaction itself.
  • Risk: Double-execution if command falls through to dispatch pipeline — mitigated: the replyResolver in the dispatch path returns the already-computed directReply value (no re-execution).

Joel Nishanth · offlyn.AI

@openclaw-barnacle openclaw-barnacle Bot added channel: telegram Channel integration: telegram size: XS triage: mock-only-proof Candidate: PR proof only shows tests, mocks, snapshots, lint, typecheck, or CI. labels Jun 2, 2026
@clawsweeper

clawsweeper Bot commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs real behavior proof before merge. Reviewed June 8, 2026, 2:37 PM ET / 18:37 UTC.

Summary
The PR routes Telegram generic /compact messages as text slash commands, marks terminal command/status notices for delivery despite source suppression, avoids aborting queued reply operations during manual compaction, and broadcasts webchat status notices.

PR surface: Source +39, Tests +358. Total +397 across 19 files.

Reproducibility: yes. from source for the reported path: current main lacks command metadata on generic Telegram control-command ingress and can suppress unmarked terminal command replies; the supplied screenshots show the user-visible DM failure and improvement, but not current-head proof.

Review metrics: none identified.

Merge readiness
Overall: 🦐 gold shrimp
Proof: 🦐 gold shrimp
Patch quality: 🐚 platinum hermit
Result: blocked until stronger real behavior proof is added.

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

Rank-up moves:

  • [P1] Add redacted current-head Telegram screenshot or recording for 259e3ba262f216a4bec66f97d11d1dbcb5b297bd after rebuilding.
  • [P1] Add group or forum-topic proof, or get maintainer acceptance that DM-only coverage is sufficient.

Proof guidance:

  • [P1] Needs stronger real behavior proof before merge: The PR body contains useful real Telegram DM screenshots, but they predate the latest head and do not show the current merge candidate's behavior. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.

Mantis proof suggestion
A short Telegram Desktop proof would directly cover the changed visible /compact acknowledgement path and reduce message-delivery risk. 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 /compact sends a visible acknowledgement in Telegram DM and, if configured, a group or forum topic without misrouting replies.

Risk before merge

  • [P1] The attached Telegram screenshots prove a real DM path but not the latest 259e3ba262f216a4bec66f97d11d1dbcb5b297bd merge candidate after maintainer force-pushes.
  • [P1] The patch changes Telegram command classification and shared status-notice delivery; group and forum-topic routing are not shown in the current proof even though Telegram topic handling is transport-sensitive.

Maintainer options:

  1. Refresh current-head Telegram proof (recommended)
    Add redacted proof from the current head showing /compact acknowledgement delivery after rebuilding, ideally including DM plus group or forum-topic coverage if those scopes are supported.
  2. Accept DM-only transport proof
    Maintainers can choose to accept the existing DM evidence if they explicitly decide group and forum-topic coverage is outside this PR's merge gate.
  3. Pause until transport scope is settled
    If group or forum-topic routing must be proven first, keep the PR open until that proof is available rather than merging on unit tests alone.

Next step before merge

  • [P1] Remaining action is validation and maintainer review of Telegram proof scope, not an automated code repair.

Security
Cleared: The diff changes TypeScript runtime and tests only, with no workflows, dependencies, lockfiles, package scripts, secrets, or downloaded code execution paths.

Review details

Best possible solution:

Land the dispatcher-based fix after current-head Telegram visible proof confirms /compact acknowledgements deliver without misrouting in the supported chat scopes.

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

Yes from source for the reported path: current main lacks command metadata on generic Telegram control-command ingress and can suppress unmarked terminal command replies; the supplied screenshots show the user-visible DM failure and improvement, but not current-head proof.

Is this the best way to solve the issue?

Likely yes: using existing command-turn metadata and reply payload suppression metadata is narrower than bypassing Telegram dispatch; remaining uncertainty is live transport proof for current head and chat-scope coverage.

AGENTS.md: found and applied where relevant.

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

Label changes

Label justifications:

  • P2: This is a normal-priority Telegram command/message-delivery regression with limited blast radius rather than a core outage.
  • merge-risk: 🚨 message-delivery: The PR changes Telegram command ingress plus shared status-notice delivery, so merge safety depends on proving acknowledgements are neither dropped nor misrouted.
  • rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🦐 gold shrimp and patch quality is 🐚 platinum hermit.
  • status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs stronger real behavior proof before merge: The PR body contains useful real Telegram DM screenshots, but they predate the latest head and do not show the current merge candidate's behavior. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
  • proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence. The PR body contains useful real Telegram DM screenshots, but they predate the latest head and do not show the current merge candidate's behavior.
  • mantis: telegram-visible-proof: Mantis should capture Telegram visible proof. The PR changes user-visible Telegram command acknowledgement behavior that is straightforward to demonstrate in Telegram Desktop.
Evidence reviewed

PR surface:

Source +39, Tests +358. Total +397 across 19 files.

View PR surface stats
Area Files Added Removed Net
Source 13 122 83 +39
Tests 6 359 1 +358
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 19 481 84 +397

Acceptance criteria:

  • [P1] Refresh real Telegram proof against head 259e3ba262f216a4bec66f97d11d1dbcb5b297bd.
  • [P1] Review group/forum-topic delivery expectations before merge if those scopes are supported.

What I checked:

  • AGENTS policy read: Root AGENTS.md and relevant scoped guides were read; Telegram maintainer notes require real Telegram proof for Telegram-visible PRs and treat native slash-command delivery as transport-sensitive. (AGENTS.md:1, 105d77d486bf)
  • Current main generic ingress: Current main only forwards options?.commandSource while nearby body parsing already reports authorized control commands, so generic Telegram text /compact can reach dispatch without text-slash command metadata. (extensions/telegram/src/bot-message-context.session.ts:437, 105d77d486bf)
  • Existing suppression contract: Current dispatch-from-config already supports delivering explicitly marked command replies despite source-reply suppression for explicit command turns or non-room events, so the PR's payload-marking approach uses an existing delivery contract instead of adding a parallel transport path. (src/auto-reply/reply/dispatch-from-config.ts:2881, 105d77d486bf)
  • Compaction active-run source path: Current main treats queued reply operations as active for compaction abort checks; the PR narrows compaction abortability so the queued command reply operation is not aborted before compaction can answer. (src/auto-reply/reply/reply-run-registry.ts:517, 105d77d486bf)
  • Webchat status notice surface: The PR also changes gateway chat reply projection so final status notices can be broadcast as agent-run payloads without transcript source mirrors, expanding the changed surface beyond Telegram tests. (src/gateway/server-methods/chat.ts:3963, 259e3ba262f2)
  • Real behavior proof: The PR body includes before/after Telegram DM screenshots showing /compact goes from no visible reply to visible compaction acknowledgements, but those screenshots predate the latest force-pushed head and do not cover group or forum-topic delivery. (259e3ba262f2)

Likely related people:

  • @steipete: Recent history shows repeated work across Telegram inbound/native command handling, compact command behavior, and gateway chat paths relevant to this patch. (role: recent area contributor; confidence: high; commits: 1507a970, b4dfa950, aada44f; files: extensions/telegram/src/bot-message-context.session.ts, extensions/telegram/src/bot-native-commands.ts, src/auto-reply/reply/commands-compact.ts)
  • @obviyus: Recent Telegram room-event/session-state work touches adjacent behavior, and this account pushed the current maintainer revisions to the PR branch. (role: recent Telegram/session-state contributor and branch maintainer; confidence: high; commits: 56cc150, ceee4c6, 259e3ba262f2; files: extensions/telegram/src/bot-message-context.session.ts, src/gateway/server-methods/chat.ts)
  • @vincentkoc: Recent gateway chat and command-flow commits are adjacent to the status-notice broadcast behavior changed by the PR. (role: gateway chat and command-flow contributor; confidence: medium; commits: c682919; files: src/gateway/server-methods/chat.ts, src/auto-reply/reply/get-reply-native-slash-fast-path.ts)
  • @yaanfpv: History includes Telegram native command picker work near the native slash-command surface involved in this PR. (role: adjacent Telegram native-command contributor; confidence: medium; commits: 400be62; files: extensions/telegram/src/bot-native-commands.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

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

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

@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. mantis: telegram-visible-proof Mantis should capture Telegram visible proof. P2 Normal backlog priority with limited blast radius. labels Jun 2, 2026
@openclaw-barnacle openclaw-barnacle Bot added agents Agent runtime and tooling size: L and removed size: XS labels Jun 3, 2026
@joelnishanth

joelnishanth commented Jun 3, 2026

Copy link
Copy Markdown
Contributor Author

Real behavior proof — Before/After Screenshots

Before (bug): /compact produces no reply

At 8:32 AM, /compact receives no bot reply, while /new → "✅ New session started." and hi → "Hey 👋 What can I help you with today?" work normally. The compaction runs internally (visible in gateway logs) but the dispatch pipeline silently drops the ack before it reaches sendMessage.

After (fix): /compact delivers ack immediately

At 9:16 AM, /compact on empty session → "⚙ Compaction skipped: nothing compactable in this session yet • Context ?/?"
At 9:19 AM, /compact after conversation → "⚙ Compacted • Context 23k/524k (4%)"

Both replies deliver in <1 second. Regular messages also continue working normally.


Environment: macOS 15.5, Node 22.22, OpenClaw 2026.6.2, Telegram @oclawfourthreefourbot DM, ollama/minimax-m3:cloud

Screenshots to be attached below (GitHub CLI does not support image upload; drag-drop via web UI).

Joel Nishanth · offlyn.AI

@clawsweeper clawsweeper Bot added the proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. label Jun 3, 2026
@joelnishanth

Copy link
Copy Markdown
Contributor Author

Screenshots
before
image

After

image

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. merge-risk: 🚨 message-delivery 🚨 May drop, duplicate, misroute, suppress, or wrongly target messages. merge-risk: 🚨 availability 🚨 May cause crashes, hangs, restart loops, stalls, or process outages. and removed status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jun 3, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the triage: mock-only-proof Candidate: PR proof only shows tests, mocks, snapshots, lint, typecheck, or CI. label Jun 3, 2026
@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. labels Jun 3, 2026
@openclaw-barnacle openclaw-barnacle Bot added triage: mock-only-proof Candidate: PR proof only shows tests, mocks, snapshots, lint, typecheck, or CI. and removed proof: sufficient ClawSweeper judged the real behavior proof convincing. labels Jun 3, 2026
@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. labels Jun 3, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the triage: mock-only-proof Candidate: PR proof only shows tests, mocks, snapshots, lint, typecheck, or CI. label Jun 3, 2026
@obviyus obviyus force-pushed the fix/telegram-compact-command-source branch from 3ede669 to ab4757c Compare June 8, 2026 15:54
@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. and removed proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. merge-risk: 🚨 availability 🚨 May cause crashes, hangs, restart loops, stalls, or process outages. labels Jun 8, 2026
@openclaw-barnacle openclaw-barnacle Bot added app: web-ui App: web-ui gateway Gateway runtime labels Jun 8, 2026
@obviyus obviyus force-pushed the fix/telegram-compact-command-source branch from 1121649 to 509fbd0 Compare June 8, 2026 18:01
@clawsweeper clawsweeper Bot added rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. labels Jun 8, 2026
@obviyus obviyus force-pushed the fix/telegram-compact-command-source branch from 509fbd0 to e690d4a Compare June 8, 2026 18:13
@obviyus obviyus force-pushed the fix/telegram-compact-command-source branch 2 times, most recently from 77ee53d to 259e3ba Compare June 8, 2026 18:29
joelnishanth and others added 6 commits June 9, 2026 07:32
Generic message ingress lacked commandSource, so /compact and other
authorized control commands were dropped when they missed bot.command.
Derive text-slash command metadata like Mattermost/iMessage.

Fixes openclaw#89525
…ch pipeline

The dispatch pipeline (foreground fence, operation-busy checks, hooks)
silently dropped status-notice replies for /compact. Resolve the command
reply directly via getReplyFromConfig and deliver status notices through
deliverReplies without entering the full dispatch pipeline. Non-status
commands still use the buffered dispatch for streaming/tools.

Adds deliverDespiteSourceReplySuppression metadata for command replies,
a dedicated native-command-ack-fallback module, and regression tests.

Fixes openclaw#89525

Co-authored-by: Cursor <cursoragent@cursor.com>
- Remove unused import normalizeOptionalLowercaseString from commands-compact.ts
- Remove unused type import ReplyPayload from bot-native-commands.ts
- Replace spread-in-map with Object.assign to satisfy oxlint
- Delete orphaned native-command-ack-fallback.ts and its test (superseded by direct delivery)
- Add isStatusNotice to ReplyPayloadLike test type
- Update test to verify status notices bypass dispatch pipeline
Co-authored-by: Cursor <cursoragent@cursor.com>
@obviyus obviyus force-pushed the fix/telegram-compact-command-source branch from 259e3ba to 8948c04 Compare June 9, 2026 02:07
@obviyus obviyus merged commit aa935dd into openclaw:main Jun 9, 2026
158 checks passed
@obviyus

obviyus commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Landed via rebase onto main.

  • Scoped tests: OPENCLAW_LOCAL_CHECK_MODE=throttled node scripts/run-vitest.mjs src/auto-reply/reply/commands-compact.test.ts src/auto-reply/reply/reply-run-registry.test.ts src/agents/embedded-agent-runner/runs.test.ts src/gateway/server-methods/chat.directive-tags.test.ts src/auto-reply/reply/get-reply-native-slash-fast-path.test.ts extensions/telegram/src/bot.create-telegram-bot.test.ts; node scripts/run-tsgo.mjs -p test/tsconfig/tsconfig.core.test.json --incremental --tsBuildInfoFile .artifacts/tsgo-cache/core-test.tsbuildinfo; node scripts/run-tsgo.mjs -p test/tsconfig/tsconfig.extensions.test.json --incremental --tsBuildInfoFile .artifacts/tsgo-cache/extensions-test.tsbuildinfo
  • Live proof: ephemeral gateway on :19888, real Codex CLI-backed chat.send turn returned READY_FOR_COMPACT, then /compact returned a visible non-empty compaction status instead of an empty final. Local compaction backend stopped at this machine's OpenAI auth/profile config, but the chat delivery regression is fixed.
  • Changelog: not updated; release changelog is generated from merged PRs/direct commits.
  • Land commit: 8948c04270715431908f113e6dc4e34613c0c8bd
  • Merge commit: aa935ddeb23fcc4a8cfaccf7197b86a827644201

Thanks @joelnishanth!

eleboucher pushed a commit to eleboucher/homelab that referenced this pull request Jun 12, 2026
…26.6.6) (#1040)

This PR contains the following updates:

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

---

### Release Notes

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

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

[Compare Source](openclaw/openclaw@v2026.6.5...v2026.6.6)

##### Highlights

- Security boundaries are substantially tighter across transcripts, sandbox binds, host environment inheritance, MCP stdio, Codex HTTP access, native search policy, elevated sender checks, deleted-agent ACP bypasses, loopback tools, Discord moderation, and Teams group actions; exec approvals now fail closed on timeout. ([#&#8203;91529](openclaw/openclaw#91529), [#&#8203;91618](openclaw/openclaw#91618), [#&#8203;91615](openclaw/openclaw#91615), [#&#8203;91619](openclaw/openclaw#91619), [#&#8203;91741](openclaw/openclaw#91741), [#&#8203;91745](openclaw/openclaw#91745), [#&#8203;91746](openclaw/openclaw#91746), [#&#8203;91748](openclaw/openclaw#91748), [#&#8203;91749](openclaw/openclaw#91749), [#&#8203;91750](openclaw/openclaw#91750), [#&#8203;91751](openclaw/openclaw#91751), [#&#8203;91752](openclaw/openclaw#91752), [#&#8203;91763](openclaw/openclaw#91763), [#&#8203;89938](openclaw/openclaw#89938)) Thanks [@&#8203;joshavant](https://github.com/joshavant), [@&#8203;pgondhi987](https://github.com/pgondhi987), [@&#8203;mmaps](https://github.com/mmaps), [@&#8203;eleqtrizit](https://github.com/eleqtrizit), [@&#8203;shakkernerd](https://github.com/shakkernerd), and [@&#8203;drobison00](https://github.com/drobison00).
- Telegram delivery is safer and more coherent: account-scoped topics route to the right agent, streamed text survives tool calls, `/compact` works on generic ingress, callback handling uses concrete APIs, draft chunking is shared, durable dispatch dedupe moved into the SDK, and unauthorized DM text stays out of cache and prompt context. ([#&#8203;91189](openclaw/openclaw#91189), [#&#8203;88682](openclaw/openclaw#88682), [#&#8203;89588](openclaw/openclaw#89588), [#&#8203;90212](openclaw/openclaw#90212), [#&#8203;91876](openclaw/openclaw#91876), [#&#8203;91874](openclaw/openclaw#91874), [#&#8203;91904](openclaw/openclaw#91904), [#&#8203;91478](openclaw/openclaw#91478), [#&#8203;91915](openclaw/openclaw#91915)) Thanks [@&#8203;codysai001](https://github.com/codysai001), [@&#8203;alexzhu0](https://github.com/alexzhu0), [@&#8203;joelnishanth](https://github.com/joelnishanth), [@&#8203;snowzlm](https://github.com/snowzlm), [@&#8203;obviyus](https://github.com/obviyus), and [@&#8203;sallyom](https://github.com/sallyom).
- iMessage recovery and delivery now cover always-on inbound restart, durable echo markers, block streaming, idle approval discovery, hardened outbound transport, and actionable inbound startup diagnostics. ([#&#8203;91335](openclaw/openclaw#91335), [#&#8203;91449](openclaw/openclaw#91449), [#&#8203;88969](openclaw/openclaw#88969), [#&#8203;88530](openclaw/openclaw#88530), [#&#8203;91783](openclaw/openclaw#91783), [#&#8203;91785](openclaw/openclaw#91785)) Thanks [@&#8203;omarshahine](https://github.com/omarshahine), [@&#8203;jmissig](https://github.com/jmissig), and [@&#8203;colmbrogan](https://github.com/colmbrogan).
- Browser and MCP connectivity gained existing-session CDP support, discovered WebSocket validation, default-profile `cdpUrl` handling, safer browser-output boundaries, Streamable HTTP loopback transport, corrected OAuth/SSE authorization handling, and broader schema compatibility. ([#&#8203;91422](openclaw/openclaw#91422), [#&#8203;89851](openclaw/openclaw#89851), [#&#8203;91736](openclaw/openclaw#91736), [#&#8203;91747](openclaw/openclaw#91747), [#&#8203;91451](openclaw/openclaw#91451), [#&#8203;80143](openclaw/openclaw#80143)) Thanks [@&#8203;pgondhi987](https://github.com/pgondhi987), [@&#8203;anagnorisis2peripeteia](https://github.com/anagnorisis2peripeteia), [@&#8203;lifuyue](https://github.com/lifuyue), [@&#8203;eleqtrizit](https://github.com/eleqtrizit), [@&#8203;LiuwqGit](https://github.com/LiuwqGit), and [@&#8203;HemantSudarshan](https://github.com/HemantSudarshan).
- Control UI startup and first-reply latency are lower through cached model metadata, removal of the startup catalog wait, lazy slash-command loading, and first-event tracing with slow-reply diagnostics. ([#&#8203;91531](openclaw/openclaw#91531), [#&#8203;91538](openclaw/openclaw#91538), [#&#8203;91568](openclaw/openclaw#91568), [#&#8203;91583](openclaw/openclaw#91583), [#&#8203;91598](openclaw/openclaw#91598))
- Provider support expands with OpenRouter OAuth onboarding and Claude Fable 5 adaptive thinking, while Codex sessions keep correct compaction ownership, local models skip guardian review, dynamic tool progress normalizes cleanly, and Gemma 4 reasoning replay is preserved. ([#&#8203;91830](openclaw/openclaw#91830), [#&#8203;91882](openclaw/openclaw#91882), [#&#8203;91590](openclaw/openclaw#91590), [#&#8203;88630](openclaw/openclaw#88630), [#&#8203;88768](openclaw/openclaw#88768), [#&#8203;91696](openclaw/openclaw#91696)) Thanks [@&#8203;Patrick-Erichsen](https://github.com/Patrick-Erichsen), [@&#8203;joshavant](https://github.com/joshavant), [@&#8203;bdjben](https://github.com/bdjben), and [@&#8203;Coder-Wangyankun](https://github.com/Coder-Wangyankun).

##### Changes

- CLI progress: emit Claude CLI commentary progress events and bridge inter-tool commentary into channel progress without exposing internal protocol scaffolding. ([#&#8203;89834](openclaw/openclaw#89834), [#&#8203;90883](openclaw/openclaw#90883)) Thanks [@&#8203;anagnorisis2peripeteia](https://github.com/anagnorisis2peripeteia).
- Observability: allow trusted diagnostics channels to capture tool input/output content, add first-assistant-event traces, and warn on slow initial replies. ([#&#8203;91256](openclaw/openclaw#91256), [#&#8203;91568](openclaw/openclaw#91568), [#&#8203;91583](openclaw/openclaw#91583)) Thanks [@&#8203;amknight](https://github.com/amknight).
- Plugins/ClawHub: dogfood reusable package publishing, let dry runs skip publish approval, allow declared installed trusted hooks, report managed plugin version drift, and warn instead of failing on retired Skill Workshop configuration. ([#&#8203;91574](openclaw/openclaw#91574), [#&#8203;91591](openclaw/openclaw#91591), [#&#8203;90004](openclaw/openclaw#90004), [#&#8203;90927](openclaw/openclaw#90927), [#&#8203;90838](openclaw/openclaw#90838)) Thanks [@&#8203;Patrick-Erichsen](https://github.com/Patrick-Erichsen), [@&#8203;brokemac79](https://github.com/brokemac79), and [@&#8203;lonexreb](https://github.com/lonexreb).
- Memory/providers: move the local llama.cpp runtime into its provider plugin, batch embeddings across files, persist the agent model catalog cache, and keep QMD JSON search one-shot while filtering stale REM recall previews. ([#&#8203;91324](openclaw/openclaw#91324), [#&#8203;89138](openclaw/openclaw#89138), [#&#8203;90457](openclaw/openclaw#90457), [#&#8203;91837](openclaw/openclaw#91837), [#&#8203;91851](openclaw/openclaw#91851)) Thanks [@&#8203;osolmaz](https://github.com/osolmaz), [@&#8203;mushuiyu886](https://github.com/mushuiyu886), [@&#8203;ai-hpc](https://github.com/ai-hpc), and [@&#8203;TurboTheTurtle](https://github.com/TurboTheTurtle).
- Channels/mobile: add the QQBot group mention toggle, improve iPad and iPhone control surfaces, and expose the active connection host in the TUI footer. ([#&#8203;91423](openclaw/openclaw#91423), [#&#8203;91557](openclaw/openclaw#91557), [#&#8203;89909](openclaw/openclaw#89909)) Thanks [@&#8203;cxyhhhhh](https://github.com/cxyhhhhh), [@&#8203;Solvely-Colin](https://github.com/Solvely-Colin), and [@&#8203;baskduf](https://github.com/baskduf).
- Performance: prewarm TUI runtime plugins, deduplicate plugin auto-enable fanout, trim dense text-delta snapshots, and reuse prepared startup model metadata. ([#&#8203;90782](openclaw/openclaw#90782), [#&#8203;89978](openclaw/openclaw#89978), [#&#8203;91580](openclaw/openclaw#91580), [#&#8203;91531](openclaw/openclaw#91531)) Thanks [@&#8203;RomneyDa](https://github.com/RomneyDa) and [@&#8203;ai-hpc](https://github.com/ai-hpc).

##### Fixes

- Agent/session recovery: drop stale approval follow-ups after session rebind, remove drained reply-queue items by identity, recover stale main and visible replies, preserve Codex context-engine compaction ownership, lower the default compaction timeout to 180 seconds while respecting explicit configuration, and keep provider-failure terminal lifecycle state correct. ([#&#8203;85679](openclaw/openclaw#85679), [#&#8203;91450](openclaw/openclaw#91450), [#&#8203;91566](openclaw/openclaw#91566), [#&#8203;91840](openclaw/openclaw#91840), [#&#8203;91590](openclaw/openclaw#91590), [#&#8203;91361](openclaw/openclaw#91361), [#&#8203;91895](openclaw/openclaw#91895)) Thanks [@&#8203;openperf](https://github.com/openperf), [@&#8203;yetval](https://github.com/yetval), [@&#8203;joshavant](https://github.com/joshavant), [@&#8203;wangmiao0668000666](https://github.com/wangmiao0668000666), and [@&#8203;TurboTheTurtle](https://github.com/TurboTheTurtle).
- User-visible content boundaries: suppress Codex/Harmony protocol artifacts, neutralize browser and LanceDB memory media directives, redact transcript images, and preserve native `/compact` replies through source suppression. ([#&#8203;89151](openclaw/openclaw#89151), [#&#8203;91422](openclaw/openclaw#91422), [#&#8203;91425](openclaw/openclaw#91425), [#&#8203;91529](openclaw/openclaw#91529), [#&#8203;90212](openclaw/openclaw#90212)) Thanks [@&#8203;joelnishanth](https://github.com/joelnishanth), [@&#8203;pgondhi987](https://github.com/pgondhi987), [@&#8203;joshavant](https://github.com/joshavant), and [@&#8203;snowzlm](https://github.com/snowzlm).
- Channel delivery: keep WhatsApp captured replies attached to the successor controller after restart, retry Feishu rate limits, preserve Mattermost thread replies, canonicalize LINE webhook paths, restore Discord reply hydration and runtime timeout exports, and show OpenAI Realtime WebRTC assistant transcripts. ([#&#8203;85823](openclaw/openclaw#85823), [#&#8203;89659](openclaw/openclaw#89659), [#&#8203;91684](openclaw/openclaw#91684), [#&#8203;91649](openclaw/openclaw#91649), [#&#8203;90263](openclaw/openclaw#90263), [#&#8203;91686](openclaw/openclaw#91686), [#&#8203;90426](openclaw/openclaw#90426)) Thanks [@&#8203;itsuzef](https://github.com/itsuzef), [@&#8203;ladygege](https://github.com/ladygege), [@&#8203;jacobtomlinson](https://github.com/jacobtomlinson), [@&#8203;fuller-stack-dev](https://github.com/fuller-stack-dev), and [@&#8203;shushushv](https://github.com/shushushv).
- Cron: cancel active task runs cleanly, preserve terminal timeout/cancel state, and recover no-deliver tool warnings instead of silently losing the outcome. ([#&#8203;90666](openclaw/openclaw#90666), [#&#8203;90678](openclaw/openclaw#90678)) Thanks [@&#8203;ai-hpc](https://github.com/ai-hpc).
- Gateway/config/auth: share the approval runtime socket token, replace arrays explicitly in `config.patch`, skip the deleted-agent guard only for valid ACP harness sessions, surface headless LaunchAgent state, verify SQLite auth migration before cleanup, and arm QMD startup maintenance. ([#&#8203;87105](openclaw/openclaw#87105), [#&#8203;91551](openclaw/openclaw#91551), [#&#8203;91219](openclaw/openclaw#91219), [#&#8203;91614](openclaw/openclaw#91614), [#&#8203;91740](openclaw/openclaw#91740), [#&#8203;91978](openclaw/openclaw#91978)) Thanks [@&#8203;fuller-stack-dev](https://github.com/fuller-stack-dev) and [@&#8203;scotthuang](https://github.com/scotthuang).
- Providers/Codex: clarify quota errors, restore the Codex synthetic usage line, canonicalize Codex protocol assets, require API-key auth for realtime voice, normalize ACP model refs, preserve Gemma 4 `reasoning_content`, and avoid guardian review for local models. ([#&#8203;91390](openclaw/openclaw#91390), [#&#8203;91709](openclaw/openclaw#91709), [#&#8203;91507](openclaw/openclaw#91507), [#&#8203;91567](openclaw/openclaw#91567), [#&#8203;88630](openclaw/openclaw#88630), [#&#8203;91696](openclaw/openclaw#91696)) Thanks [@&#8203;hxy91819](https://github.com/hxy91819), [@&#8203;brokemac79](https://github.com/brokemac79), [@&#8203;RomneyDa](https://github.com/RomneyDa), [@&#8203;joshavant](https://github.com/joshavant), and [@&#8203;Coder-Wangyankun](https://github.com/Coder-Wangyankun).
- Updates/builds: recover package Gateway restarts after refresh failure, expose plugin convergence repair, fall back to Corepack in PATH-less pnpm environments, seed the correct Docker store packages, and keep ClawHub dry-run and publish paths reusable. ([#&#8203;91581](openclaw/openclaw#91581), [#&#8203;91599](openclaw/openclaw#91599), [#&#8203;91547](openclaw/openclaw#91547), [#&#8203;91591](openclaw/openclaw#91591)) Thanks [@&#8203;fuller-stack-dev](https://github.com/fuller-stack-dev), [@&#8203;sallyom](https://github.com/sallyom), and [@&#8203;Patrick-Erichsen](https://github.com/Patrick-Erichsen).
- UI: require explicit user intent before opening chat sessions and drain restored chat queues after session switches. ([#&#8203;91480](openclaw/openclaw#91480)) Thanks [@&#8203;TurboTheTurtle](https://github.com/TurboTheTurtle).
- Android: avoid the `dataSync` foreground-service type for persistent nodes. ([#&#8203;80082](openclaw/openclaw#80082)) Thanks [@&#8203;davelutztx](https://github.com/davelutztx).
- Native hooks: bound relay lifetimes so abandoned native hook connections cannot linger indefinitely. ([#&#8203;91550](openclaw/openclaw#91550)) Thanks [@&#8203;joshavant](https://github.com/joshavant).

</details>

---

### Configuration

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

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

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

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

---

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

---

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

Reviewed-on: https://git.erwanleboucher.dev/eleboucher/homelab/pulls/1040
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agents Agent runtime and tooling app: web-ui App: web-ui channel: telegram Channel integration: telegram gateway Gateway runtime mantis: telegram-visible-proof Mantis should capture Telegram visible proof. merge-risk: 🚨 message-delivery 🚨 May drop, duplicate, misroute, suppress, or wrongly target messages. P2 Normal backlog priority with limited blast radius. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. proof: supplied External PR includes structured after-fix real behavior proof. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. size: L status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Telegram channel drops / compact slash command - never appears in commands.log

2 participants