Sync: merge upstream openclaw 2026.4.3#117
Conversation
…59384) Merged via squash. Prepared head SHA: 981aa35 Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com> Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com> Reviewed-by: @gumadeiras
* fix: normalize kimi anthropic tool payloads * fix: normalize kimi anthropic tool payloads (openclaw#59440)
* fix(browser): keep static helper seams cold * fix(browser): narrow sandbox helper facade imports * fix(browser): harden host inspection helpers
* fix(providers): centralize stream request headers * Update src/agents/provider-request-config.ts Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> --------- Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
…ation (openclaw#59112) * fix(exec): strip invalid security/ask enum values during config normalization * fix(exec): narrow invalid approvals config cleanup --------- Co-authored-by: scoootscooob <zhentongfan@gmail.com>
* fix: keep acp prompts alive across gateway reconnects * fix: bound ACP prompts after disconnect grace * fix: preserve ACP send timeout semantics * fix: defer pre-ack ACP disconnect failures * fix: reconcile ACP runs after reconnect * fix: keep ACP reconnect deadlines monotonic * fix: keep pre-ack ACP deadlines after reconnect * fix: keep ACP prompts alive across gateway reconnects (openclaw#59473) * fix: reject superseded ACP pre-ack prompts (openclaw#59473) * style: format ACP reconnect regression updates (openclaw#59473) * style: format ACP reconnect regression updates (openclaw#59473) * fix: guard ACP send acceptance by run id (openclaw#59473) * fix: scope ACP reconnect deadline by prompt (openclaw#59473) * fix: recheck ACP prompts at reconnect deadline (openclaw#59473) * fix: key ACP reconnect deadline by run (openclaw#59473)
…juliabush) * fix(ui): install devDependencies during ui:build * fix: keep ui:build self-heal documented (openclaw#59267) (thanks @juliabush) --------- Co-authored-by: Ayaan Zaidi <hi@obviy.us>
* fix(qqbot): restrict structured payload local paths * fix(qqbot): narrow structured payload file access * test(qqbot): cover payload path traversal guards * fix(qqbot): reduce structured payload log exposure * fix(qqbot): preserve inline image payload URLs
* fix(doc):update wecom doc and qq doc * Update CHANGELOG with recent changes and enhancements Added various updates including new features, improvements, and documentation changes across multiple components.
* Slack: filter thread context by allowlist * Slack: honor room thread allowlists * Slack: keep open-room thread context * Slack: keep non-room thread context * Changelog: add Slack thread context fix
…9556) * fix(providers): centralize Google endpoint classification * fix(providers): tighten Google endpoint fallback parsing * fix(security): harden provider endpoint fallback parsing
* fix(agents): recover Anthropic thinking after crash * fix(agents): avoid duplicate Anthropic recovery chunks * fix(agents): preserve Anthropic stream result
Fix three bugs preventing inline image downloads in Teams 1:1 DM chats: wrong conversation ID format for Graph API, missing media URL extraction, and incorrect content type detection. Fixes openclaw#24797 Thanks @Ted-developer
openclaw#59948) * "fix(telegram): surface media placeholder and file_id when download fails" * fix: unify telegram media placeholder selection * fix: preserve telegram media context on captioned download failures (openclaw#59948) (thanks @v1p0r) --------- Co-authored-by: Ayaan Zaidi <hi@obviy.us>
* perf(test): isolate memory-heavy extension hotspots * fix(test): pin extension memory hotspot threshold
* fix: parse kimi tagged tool calls * fix: parse kimi tagged tool calls (openclaw#60051) * fix: parse kimi tagged tool calls (openclaw#60051)
…60018) * fix(channels): emit passive hooks for mention-skipped group messages * fix(channels): honor signal ingest overrides * fix(channels): honor telegram ingest fallback * fix: emit passive hooks for mention-skipped group messages (openclaw#60018)
…aw#48832) (openclaw#60061) schema.ts and validation.ts imported CHANNEL_IDS from channels/registry.js, which re-exports from channels/ids.js but also imports plugins/runtime.js. When the bundler resolves this dependency graph, the re-exported CHANNEL_IDS can be undefined at the point config/validation.ts evaluates (temporal dead zone), causing 'CHANNEL_IDS is not iterable' on startup. Fix: import CHANNEL_IDS directly from channels/ids.js (the leaf module with zero heavy dependencies) and normalizeChatChannelId from channels/chat-meta.js. Fixes openclaw#48832 Co-authored-by: Brad Groux <bradgroux@users.noreply.github.com>
…penclaw#60075) * fix: import CHANNEL_IDS from leaf module to avoid TDZ on init (openclaw#48832) schema.ts and validation.ts imported CHANNEL_IDS from channels/registry.js, which re-exports from channels/ids.js but also imports plugins/runtime.js. When the bundler resolves this dependency graph, the re-exported CHANNEL_IDS can be undefined at the point config/validation.ts evaluates (temporal dead zone), causing 'CHANNEL_IDS is not iterable' on startup. Fix: import CHANNEL_IDS directly from channels/ids.js (the leaf module with zero heavy dependencies) and normalizeChatChannelId from channels/chat-meta.js. Fixes openclaw#48832 * fix: improve WS handshake reliability on slow-startup environments (openclaw#48736) On Windows with large dist bundles (46MB/639 files), heavy synchronous module loading blocks the event loop during CLI startup, preventing timely processing of the connect.challenge frame and causing ~80% handshake timeout failures. Changes: - Yield event loop (setImmediate) before starting WS connection in callGateway to let pending I/O drain after heavy module loading - Add OPENCLAW_CONNECT_CHALLENGE_TIMEOUT_MS env var override for client-side connect challenge timeout (server already has OPENCLAW_HANDSHAKE_TIMEOUT_MS) - Include diagnostic timing in challenge timeout error messages (elapsed vs limit) for easier debugging - Add tests for env var override and resolution logic --------- Co-authored-by: Brad Groux <bradgroux@users.noreply.github.com>
…nclaw#60085) After v2026.3.24 introduced a gateway.mode guard, startup fails on Windows (and other platforms) when the config file exists but doesn't contain an explicit gateway.mode value. This happens after 'openclaw onboard' writes a minimal config without gateway settings. Default to 'local' when the mode is unset, restoring pre-3.24 behavior where the gateway started without requiring an explicit mode. Fixes openclaw#54801 Co-authored-by: Brad Groux <bradgroux@users.noreply.github.com>
…enclaw#54801) (openclaw#60094) The test previously asserted that a valid snapshot without gateway.mode blocks startup. After defaulting gateway.mode to 'local' when unset, the gateway should start successfully in this scenario — update the test to verify the new expected behavior. Co-authored-by: Brad Groux <bradgroux@users.noreply.github.com>
Co-authored-by: George Zhang <georgezhangtj97@gmail.com>
…QVerisBot enhancements - Bump version to 2026.4.3 while keeping @qverisai/qverisbot identity - Accept upstream resolveOwnerOnlyToolApprovalClass in tool-policy - Accept upstream toolsAllow patch type in cron types, preserve CronOrigin - Merge upstream tools.web.fetch.firecrawl keys alongside QVeris search provider keys - Keep fork's resolveUsableRuntimeVersion test approach - Regenerate config and plugin-sdk baselines Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Code Review
This pull request introduces several improvements and updates across the OpenClaw ecosystem. Key changes include enhanced support for the StepFun provider, improved Windows upgrade smoke testing, and refined release channel naming conventions. Additionally, the pull request updates the Android assistant entrypoints, adds notification forwarding controls, and includes various bug fixes for Telegram, Matrix, and MS Teams channels. Documentation has been updated to reflect these changes, including a migration of several automation-related pages to a consolidated Task Flow and Scheduled Tasks structure. I have no feedback to provide as the changes are well-documented and appear to be part of a comprehensive update.
Summary
2026.4.3into QVerisBot forkresolveOwnerOnlyToolApprovalClass,toolsAllowcron patch type,tools.web.fetch.firecrawlconfig keysTest plan
pnpm build— passespnpm check— all green (lint, typecheck, policy checks)pnpm test— all pass (2 ENOSPC failures unrelated to merge, disk space issue)🤖 Generated with Claude Code