Skip to content

Share channel draft chunking resolver#91874

Merged
obviyus merged 1 commit into
mainfrom
codex/shared-draft-chunking
Jun 10, 2026
Merged

Share channel draft chunking resolver#91874
obviyus merged 1 commit into
mainfrom
codex/shared-draft-chunking

Conversation

@obviyus

@obviyus obviyus commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Summary:

  • Move duplicated Discord/Telegram draft chunk sizing into one channel-outbound SDK helper.
  • Keep channel wrappers as platform-cap shims and move shared behavior coverage to the SDK helper.

Proof:

  • node scripts/run-vitest.mjs src/plugin-sdk/channel-outbound.draft-chunking.test.ts extensions/discord/src/draft-chunking.test.ts extensions/telegram/src/bot.helpers.test.ts
  • OPENCLAW_LOCAL_CHECK_MODE=throttled node scripts/run-tsgo.mjs -p test/tsconfig/tsconfig.extensions.test.json --incremental --tsBuildInfoFile .artifacts/tsgo-cache/extensions-test-pr-91874.tsbuildinfo
  • node --max-old-space-size=8192 --import tsx scripts/generate-plugin-sdk-api-baseline.ts --check
  • pnpm exec oxfmt --check --threads=1 docs/plugins/sdk-channel-outbound.md extensions/discord/src/draft-chunking.test.ts extensions/discord/src/draft-chunking.ts extensions/telegram/src/bot.helpers.test.ts extensions/telegram/src/draft-chunking.ts src/channels/draft-streaming-chunking.ts src/plugin-sdk/channel-outbound.ts src/plugin-sdk/channel-outbound.draft-chunking.test.ts
  • git diff --check
  • Telegram bot-to-bot mock-SUT smoke before rebase: threaded SUT reply observed and mock OpenAI requests 1.

@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation channel: discord Channel integration: discord channel: slack Channel integration: slack channel: telegram Channel integration: telegram size: M maintainer Maintainer-authored PR labels Jun 10, 2026
@obviyus obviyus self-assigned this Jun 10, 2026
@clawsweeper

clawsweeper Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs real behavior proof before merge. Reviewed June 10, 2026, 3:41 AM ET / 07:41 UTC.

Summary
The PR moves Discord/Telegram draft streaming chunk-size resolution into a shared channel-outbound helper, updates SDK docs/tests, and adjusts Slack prepare-test session fixtures.

PR surface: Source +5, Tests +10, Docs 0. Total +15 across 10 files.

Reproducibility: yes. for the blocking SDK-baseline finding: source inspection shows the PR adds two public channel-outbound exports while the tracked baseline hash is not updated, and the baseline code enumerates exports before comparing hashes. I did not run the checker because this review is read-only.

Review metrics: 2 noteworthy metrics.

  • Public Plugin SDK Exports: 2 added. The PR adds one function and one type to openclaw/plugin-sdk/channel-outbound, so maintainers should explicitly accept the API contract before merge.
  • Tracked SDK API Baseline Updates: 0 PR files changed. A public SDK export change without the tracked hash update leaves the generated API baseline expected to drift.

Merge readiness
Overall: 🧂 unranked krab
Proof: 🧂 unranked krab
Patch quality: 🦐 gold shrimp
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 real behavior proof for Discord or Telegram draft chunking after the shared resolver change.
  • Get maintainer acceptance for the public channel-outbound helper name/signature, or keep the resolver internal.
  • Rebase on current main and regenerate the Plugin SDK API baseline hash after the API direction is settled.

Proof guidance:

  • [P1] Needs stronger real behavior proof before merge: The PR body lists tests and a mock-SUT smoke line, but no redacted logs, terminal output, screenshots, recording, or linked artifact shows the changed draft chunking behavior after the refactor; add proof with private details redacted, update the PR body to trigger re-review, or ask a maintainer to comment @clawsweeper re-review.

Mantis proof suggestion
A native Telegram proof would materially show that block preview chunking still clamps and honors account overrides after moving the resolver. 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 Telegram block preview chunking clamps to text limits and honors account overrides after the shared resolver.

Risk before merge

  • [P1] Adding a new channel-outbound function and type makes the helper name and signature part of the public Plugin SDK contract unless maintainers intentionally accept it.
  • [P1] The tracked Plugin SDK API baseline hash is not updated in the PR even though the public export surface changes, so the contract check is expected to drift until regenerated.
  • [P1] The PR body lists tests and a mock-SUT Telegram smoke line, but it does not show the changed Discord or Telegram draft chunking behavior in a real setup after the refactor.
  • [P1] Current main already changed the same Slack fixture rows, so the branch needs a rebase/conflict-resolution pass before merge.

Maintainer options:

  1. Accept The Public Helper
    If maintainers want this helper as Plugin SDK API, rebase on current main, regenerate docs/.generated/plugin-sdk-api-baseline.sha256, and land with real Discord/Telegram draft chunking proof.
  2. Keep The Resolver Internal
    If the helper name or signature is not ready as a public contract, remove the channel-outbound exports and keep the shared resolver behind bundled channel wrappers.
  3. Pause For Proof And Conflict Resolution
    Because the PR has a protected maintainer label, missing real proof, and overlapping current-main Slack fixture changes, maintainers can leave it waiting rather than asking automation to choose the API direction.

Next step before merge

  • [P1] Manual review is needed because the protected maintainer-labeled PR changes a public Plugin SDK contract and lacks contributor-visible real behavior proof; automation should not decide the API direction.

Security
Cleared: The diff touches TypeScript source, docs, and tests only; no dependency, workflow, lockfile, secret, install, release, or package-execution surface change was found.

Review findings

  • [P1] Regenerate the SDK API baseline — src/plugin-sdk/channel-outbound.ts:48-49
Review details

Best possible solution:

Make the resolver public only after maintainer API acceptance with a regenerated SDK baseline and real channel proof; otherwise keep it internal behind the bundled channel wrappers while preserving current behavior.

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

Yes for the blocking SDK-baseline finding: source inspection shows the PR adds two public channel-outbound exports while the tracked baseline hash is not updated, and the baseline code enumerates exports before comparing hashes. I did not run the checker because this review is read-only.

Is this the best way to solve the issue?

No as-is. The shared resolver is a plausible cleanup, but the PR first needs maintainer acceptance for the public SDK surface, a regenerated baseline, real channel behavior proof, and rebase review.

Full review comments:

  • [P1] Regenerate the SDK API baseline — src/plugin-sdk/channel-outbound.ts:48-49
    This PR adds resolveChannelDraftStreamingChunking and ChannelDraftStreamingChunking to the public channel-outbound SDK barrel, but it does not update docs/.generated/plugin-sdk-api-baseline.sha256. The baseline builder enumerates public SDK exports and check mode compares the rendered hash, so the contract check should drift until the baseline is regenerated after maintainers accept the new API.
    Confidence: 0.95

Overall correctness: patch is incorrect
Overall confidence: 0.91

AGENTS.md: found and applied where relevant.

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

Label changes

Label justifications:

  • P2: This is a normal-priority SDK/channel cleanup with concrete pre-merge blockers but no evidence of an urgent shipped runtime regression.
  • merge-risk: 🚨 compatibility: Adding public channel-outbound exports changes the supported third-party Plugin SDK contract and needs API acceptance plus baseline proof before merge.
  • rating: 🧂 unranked krab: Overall readiness is 🧂 unranked krab; proof is 🧂 unranked krab and patch quality is 🦐 gold shrimp.
  • 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 lists tests and a mock-SUT smoke line, but no redacted logs, terminal output, screenshots, recording, or linked artifact shows the changed draft chunking behavior after the refactor; add proof with private details redacted, update the PR body to trigger re-review, or ask a maintainer to comment @clawsweeper re-review.
  • mantis: telegram-visible-proof: Mantis should capture Telegram visible proof. The PR touches Telegram draft streaming chunking, which is visible as preview/edit behavior and can be demonstrated with a short Telegram Desktop proof.
Evidence reviewed

PR surface:

Source +5, Tests +10, Docs 0. Total +15 across 10 files.

View PR surface stats
Area Files Added Removed Net
Source 5 73 68 +5
Tests 4 107 97 +10
Docs 1 1 1 0
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 10 181 166 +15

What I checked:

  • Repository policy applied: Root AGENTS.md and the scoped docs, extensions, channels, and plugin-sdk guides were read; the plugin-sdk guide makes public SDK subpath changes compatibility-sensitive and requires docs, export/baseline alignment, and maintainer-visible contract handling. (src/plugin-sdk/AGENTS.md:81, 9408380ae729)
  • PR adds public SDK exports: The diff adds resolveChannelDraftStreamingChunking and ChannelDraftStreamingChunking to openclaw/plugin-sdk/channel-outbound, promoting the helper as Plugin SDK API. (src/plugin-sdk/channel-outbound.ts:48, a30373e5041e)
  • Baseline checker hashes exported SDK surface: Current main builds the Plugin SDK API baseline by enumerating module exports and comparing the rendered hash file in check mode, so new public exports need a regenerated tracked hash after API acceptance. (src/plugin-sdk/api-baseline.ts:451, 9408380ae729)
  • Tracked API baseline is not part of the PR diff: The PR file list changes source, docs, and tests but does not include docs/.generated/plugin-sdk-api-baseline.sha256, while current main tracks only that hash file for the generated API baseline. Public docs: docs/.generated/plugin-sdk-api-baseline.sha256. (docs/.generated/plugin-sdk-api-baseline.sha256:1, 9408380ae729)
  • Current duplicated resolver target is real: Current main still has duplicated Telegram draft chunking logic using text limit resolution, account lookup, preview chunk config, and the same min/max clamp behavior that this PR centralizes. (extensions/telegram/src/draft-chunking.ts:20, 9408380ae729)
  • Current main overlaps the Slack fixture change: Current main already added canonical sessionId values to the same Slack session-store fixture rows, so the PR's helper-based version needs rebase/conflict review rather than a blind merge. (extensions/slack/src/monitor/message-handler/prepare.test.ts:1737, 9408380ae729)

Likely related people:

  • shakkernerd: Current line blame for the duplicated Discord/Telegram draft chunking resolvers and the nearby channel-outbound SDK barrel points to recent channel/SDK work under this account. (role: recent area contributor; confidence: high; commits: 09854d9de740; files: extensions/discord/src/draft-chunking.ts, extensions/telegram/src/draft-chunking.ts, src/plugin-sdk/channel-outbound.ts)
  • vincentkoc: Current main commit 0a3aa5f278606d95605a9f314975dcab4ac244a7 independently added canonical sessionId values to the Slack prepare-test fixtures this PR also edits. (role: recent adjacent contributor; confidence: high; commits: 0a3aa5f27860; files: extensions/slack/src/monitor/message-handler/prepare.test.ts)
  • steipete: Commit b5265a07d7e0d049925e9c1578892f84b5a2fc86 introduced the SHA-based Plugin SDK API baseline mechanism that is relevant to the missing baseline update finding. (role: adjacent contract contributor; confidence: medium; commits: b5265a07d7e0; files: src/plugin-sdk/api-baseline.ts, docs/.generated/plugin-sdk-api-baseline.sha256)
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: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. 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. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. labels Jun 10, 2026
@clawsweeper clawsweeper Bot temporarily deployed to qa-live-shared June 10, 2026 07:34 Inactive
@obviyus obviyus force-pushed the codex/shared-draft-chunking branch from a30373e to ba2fad8 Compare June 10, 2026 07:40
@openclaw-barnacle openclaw-barnacle Bot removed the channel: slack Channel integration: slack label Jun 10, 2026
@obviyus obviyus force-pushed the codex/shared-draft-chunking branch from ba2fad8 to 9c0b264 Compare June 10, 2026 07:56
@obviyus obviyus merged commit b9095bf into main Jun 10, 2026
158 of 159 checks passed
@obviyus obviyus deleted the codex/shared-draft-chunking branch June 10, 2026 08:05
@obviyus

obviyus commented Jun 10, 2026

Copy link
Copy Markdown
Contributor Author

Landed via rebase onto main.

Proof:

  • Focused channel/SDK tests: node scripts/run-vitest.mjs src/plugin-sdk/channel-outbound.draft-chunking.test.ts extensions/discord/src/draft-chunking.test.ts extensions/telegram/src/bot.helpers.test.ts
  • Former CI failure repro after rebasing on e3fe6715af: node scripts/run-vitest.mjs src/agents/main-session-restart-recovery.test.ts
  • Extension test types: OPENCLAW_LOCAL_CHECK_MODE=throttled node scripts/run-tsgo.mjs -p test/tsconfig/tsconfig.extensions.test.json --incremental --tsBuildInfoFile .artifacts/tsgo-cache/extensions-test-pr-91874.tsbuildinfo
  • SDK API baseline: node --max-old-space-size=8192 --import tsx scripts/generate-plugin-sdk-api-baseline.ts --check
  • Format/diff: pnpm exec oxfmt --check --threads=1 ... and git diff --check
  • Branch autoreview: .agents/skills/autoreview/scripts/autoreview --mode branch --base origin/main clean, patch correct 0.82
  • Real Telegram bot-to-bot proof before final rebase: threaded SUT reply observed, mock OpenAI requests 1

Known unrelated CI:

  • build-artifacts failed in test/scripts/package-acceptance-workflow.test.ts expecting QA run_mock_parity on blacksmith-8vcpu-ubuntu-2404 while the current workflow uses blacksmith-16vcpu-ubuntu-2404.
  • This PR diff did not touch .github/** or that test file; local repro of the same test failed on the merged checkout.

Landed commit: b9095bf70d81f35bdb2c7497913670974c00f430.

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

channel: discord Channel integration: discord channel: telegram Channel integration: telegram docs Improvements or additions to documentation maintainer Maintainer-authored PR mantis: telegram-visible-proof Mantis should capture Telegram visible proof. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. P2 Normal backlog priority with limited blast radius. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. size: M status: 📣 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.

1 participant