Commit Graph

8224 Commits

Author SHA1 Message Date
Peter Steinberger
e2c8db2cad fix(telegram): warn on selected quote tool progress 2026-05-03 16:24:38 +01:00
Peter Steinberger
5e830508b6 test: stabilize release validation lanes 2026-05-03 16:24:17 +01:00
Shuxin Zheng
b8bc8423d2 fix(discord): normalize CJK/whitespace in slash-command description comparison to prevent spurious reconcile PATCH + 429 (#76588)
* fix(discord): normalize whitespace in command description comparison

Discord server-side storage collapses consecutive whitespace and removes
whitespace between adjacent CJK characters when persisting slash-command
descriptions. Our locally-serialized desired descriptors keep the original
whitespace, so commandsEqual returned false on every startup for any
deployment with multi-line or CJK-heavy descriptions.

This caused reconcile to issue a PATCH for every such command on every
gateway restart. Under Discord's per-application rate limit that quickly
produced a burst of 429s and some commands silently failed to register
until the next restart — a recurring symptom behind several Discord deploy
429 reports (#75341, #75888).

Fix: apply the same two normalizations to description strings in
comparableCommand — collapse runs of whitespace to a single space, then
drop whitespace between CJK boundary characters — before JSON-based
equality. This mirrors Discord's storage semantics so round-tripped
descriptions compare equal.

Adds command-deploy.test.ts with regression coverage for:
- server-side default fields ignored (dm_permission, nsfw, version, ids)
- required:false treated as absent (existing behavior)
- CJK descriptions with \n separators normalized
- mixed CJK/ASCII descriptions with consecutive whitespace
- substantive description diffs still flagged
- ASCII whitespace normalization

* fix(discord): normalize localized command descriptions

* fix(discord): ignore null localization maps in command reconcile

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-05-03 16:22:41 +01:00
MkDev11
38eea33062 fix(opencode): expose Claude thinking policy (#76760)
Summary:
- Adds an OpenCode provider-policy public artifact that delegates Claude thinking profiles, plus regression tests and a changelog entry for preserving `xhigh` on `opencode/claude-opus-4-7`.
- Reproducibility: yes. Source inspection on current main shows the model-switch path remaps unsupported store ... vider-policy-api` artifact for the fallback resolver; the proposed test exercises that stored-`xhigh` path.

Automerge notes:
- No ClawSweeper repair was needed after automerge opt-in.

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

Prepared head SHA: efa152cca5
Review: https://github.com/openclaw/openclaw/pull/76760#issuecomment-4366483080

Co-authored-by: mkdev11 <MkDev11@users.noreply.github.com>
2026-05-03 15:22:07 +00:00
hcl
081f873162 fix(active-memory): skip scoped topic channelId for embedded recall run in Telegram forum topics (#76704) (openclaw#76719)
Verified:
- pnpm install --frozen-lockfile
- pnpm test extensions/active-memory/index.test.ts
- pnpm exec oxfmt --check --threads=1 extensions/active-memory/index.ts extensions/active-memory/index.test.ts CHANGELOG.md
- git diff --check origin/main..HEAD

Co-authored-by: hclsys <7755017+hclsys@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-05-03 10:19:32 -05:00
Ayaan Zaidi
5b94c4ce93 fix(telegram): start polling after webhook cleanup timeout (#76735)
Summary:
- The branch changes Telegram polling startup to reuse the successful probe `getMe` result as grammY `botInfo` ... es` after recoverable `deleteWebhook` failures, and updates Telegram docs, changelog, and regression tests.
- Reproducibility: yes. for the narrow PR bug: source inspection shows current main can block before polling o ... d timeout coverage that reaches `run()`. The full linked high-RTT report remains only partially reproduced.

Automerge notes:
- Ran the ClawSweeper repair loop before final review.
- Included post-review commit in the final squash: fix(telegram): start polling after webhook cleanup timeout
- Included post-review commit in the final squash: fix(telegram): extract bot info contract

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

Prepared head SHA: c74bbdd1ff
Review: https://github.com/openclaw/openclaw/pull/76735#issuecomment-4366417178

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-05-03 15:16:32 +00:00
Peter Steinberger
9e56cfcc35 perf(gateway): cache startup metadata probes 2026-05-03 16:07:06 +01:00
Peter Steinberger
0949f4fe51 fix(discord): honor explicit tool-only status reactions (#76733) 2026-05-03 15:44:42 +01:00
Vishal Jain
0e4d28aa9e fix(codex): force message tool for source replies (#76663)
* fix(codex): force message tool for source replies

* docs: credit codex source reply fix (#76663) (thanks @VishalJ99)

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-05-03 15:29:07 +01:00
Peter Steinberger
8b945bcbea fix(feishu): satisfy queue timeout lint 2026-05-03 15:28:12 +01:00
Martin Garramon
0028e6040a fix(feishu): cap per-chat queue task wait so a single hang doesn't starve later messages
Per-chat sequential queue had no timeout: if a single dispatch hung
(e.g. an agent call that never resolved), every subsequent message in
the same chat stayed `queued` until the gateway was restarted.

Add an optional `taskTimeoutMs` (default 5 min) to `createSequentialQueue`.
After the cap, the in-flight task is evicted from the blocking chain so
newer same-key tasks can proceed. The original task is NOT aborted —
it continues running in the background; we just stop starving the queue.
A warning log surfaces the eviction with the offending key.

`taskTimeoutMs: 0` restores legacy unbounded behavior.

Same-chat FIFO ordering for normal-cadence messages is preserved
(see #64324) — only pathologically slow tasks get evicted.

Fixes #70133.
2026-05-03 15:28:12 +01:00
Peter Steinberger
0bf06e953f feat: add Mantis Discord smoke runner (#76696)
* docs: add Mantis QA system design

* feat: add Mantis Discord smoke runner

* fix: harden Mantis Discord smoke

* fix: redact Mantis Discord artifacts

* fix: satisfy Mantis redaction lint

* fix: redact Mantis mismatch failures

* test: avoid promise assertions in Mantis tests
2026-05-03 15:25:56 +01:00
Vincent Koc
877eb1cbed fix(heartbeat): align response tool prompts (#76458)
* fix(heartbeat): align response tool prompts

* docs(changelog): credit heartbeat prompt fix
2026-05-03 07:19:56 -07:00
Tyler Nishida
796c1e67c3 fix message-tool-only telegram fallback (#76272) 2026-05-03 23:15:53 +09:00
Peter Steinberger
7488d8f1fe test: align release branch expectations 2026-05-03 15:12:37 +01:00
Peter Steinberger
39c5bbf08e fix(codex): mark approval event emission fire-and-forget 2026-05-03 15:04:02 +01:00
Peter Steinberger
8c95664e55 fix: keep runtime model auth alias after build
(cherry picked from commit f352caf07e)
2026-05-03 14:37:17 +01:00
Peter Steinberger
c02bf2f399 refactor: share transcript append path 2026-05-03 14:10:09 +01:00
Chunyue Wang
c1b9af2770 fix(ollama): restore catalog-driven num_ctx for native /api/chat (#76181)
Merged via squash.

Prepared head SHA: d3142252d5
Co-authored-by: openperf <80630709+openperf@users.noreply.github.com>
Co-authored-by: openperf <80630709+openperf@users.noreply.github.com>
Reviewed-by: @openperf
2026-05-03 19:47:36 +08:00
volcano303
1d657b9d5f fix(active-memory): preserve setup grace for embedded recall
Apply setupGraceTimeoutMs to the embedded recall runner as well as the outer Active Memory watchdog.

Co-authored-by: volcano303 <75143900+volcano303@users.noreply.github.com>
2026-05-03 12:41:19 +01:00
Peter Steinberger
c850d1bb0d fix(qqbot): harden clientSecret SecretRefs 2026-05-03 12:25:08 +01:00
xialonglee
40f970a13d feat(qqbot): resolve clientSecret SecretRefs and add secret contract 2026-05-03 12:25:08 +01:00
Peter Steinberger
5e9135f2e2 fix: keep active memory tools available 2026-05-03 12:24:03 +01:00
Peter Steinberger
8dd6a2d323 fix(channels): preserve degraded voice text and mention boundaries 2026-05-03 12:17:11 +01:00
Vincent Koc
ae87f7800b test(matrix): isolate IndexedDB persistence fixtures 2026-05-03 03:18:00 -07:00
Vincent Koc
3ee5df618a Revert "fix(plugins): align beta external launch metadata"
This reverts commit 34581bf46c.
2026-05-03 02:53:36 -07:00
Vincent Koc
34581bf46c fix(plugins): align beta external launch metadata 2026-05-03 02:51:18 -07:00
hcl
bdf91fab9c fix(realtime): strip originator header from browser WebRTC SDP offer (#76435)
Remove server-side-only OpenAI attribution headers from browser WebRTC SDP offer headers while preserving Gateway-side attribution.

Closes #76435.
Thanks @hclsys.
2026-05-03 02:24:03 -07:00
buyitsydney
aba97a4c7c fix(memory): reindex archived session transcript updates 2026-05-03 02:15:20 -07:00
Vincent Koc
31e2276fe9 fix(memory): load unconfigured lancedb metadata 2026-05-03 01:57:36 -07:00
solodmd
d1365fef16 fix: handle ENOSPC file watcher errors gracefully (#73357)
Merged via squash.

Prepared head SHA: ce2dd6ed3e
Co-authored-by: solodmd <51304754+solodmd@users.noreply.github.com>
Co-authored-by: altaywtf <9790196+altaywtf@users.noreply.github.com>
Reviewed-by: @altaywtf
2026-05-03 11:42:38 +03:00
buyitsydney
2ffdb5d248 fix(memory): keep archive transcript visibility safe
Keep reset/deleted session archives searchable while preserving visibility filtering, and keep internal cron-run archives opaque when live ownership metadata is gone.\n\nRefs #56131.\nThanks @buyitsydney.
2026-05-03 01:17:45 -07:00
Alex Knight
6ae09d029c msteams: persist sent-message markers best-effort (#75585)
* msteams: persist sent-message markers best-effort

* docs: clarify Teams restart persistence changelog

* msteams: remove redundant sent-message TTL comment

* msteams: preserve sent-message marker TTL on recovery
2026-05-03 17:25:20 +10:00
Alex Knight
f27ecffc0c matrix: persist approval reaction targets best-effort (#75586)
* matrix: persist approval reaction targets best-effort

* docs: refine matrix approval changelog
2026-05-03 17:17:01 +10:00
Vincent Koc
c7bbb3f9af refactor(plugins): declare static runtime assets in package metadata 2026-05-02 23:47:25 -07:00
Vincent Koc
14312ff570 fix(feishu): avoid duplicate voice reply text 2026-05-02 23:18:42 -07:00
Arnab Saha
b83b2e3f1c fix(openai-codex): honor providerConfig.baseUrl in dynamic-model synthesis fallback (#76428)
* fix(openai-codex): honor providerConfig.baseUrl in dynamic-model synthesis fallback

The synthesis fallback in resolveCodexForwardCompatModel hardcoded
OPENAI_CODEX_BASE_URL when the model registry had no template row to
clone, which meant openai-codex providers configured with a custom
baseUrl (e.g. a local proxy that forwards Codex traffic) silently
fell back to api.openai.com / chatgpt.com - bypassing the proxy and
typically failing the auth contract.

Synthesis now reads ctx.providerConfig.baseUrl when present, with the
existing OPENAI_CODEX_BASE_URL constant as the fallback. No effect on
template-clone or registry-find paths, which already inherit the
configured baseUrl through the cloned template.

* docs(changelog): add Unreleased Fixes entry for #76428 codex synthesis baseUrl honor
2026-05-02 22:52:29 -07:00
openclaw-clownfish[bot]
22748b1c36 feat(whatsapp): support native outbound mentions (#73961)
Merged via squash.

Prepared head SHA: bb1df9e681
Co-authored-by: BunsDev <68980965+BunsDev@users.noreply.github.com>
Reviewed-by: @BunsDev
2026-05-02 23:50:54 -05:00
Josh Avant
b1f8172867 fix(secretrefs): resolve external channel contracts (#76449) 2026-05-02 23:48:11 -05:00
clawsweeper[bot]
d04a8976b1 fix(feishu): repair media-aware message dedupe (#76408)
Summary:
- The PR adds a Feishu-local media-aware dedupe-key helper, wires it through inbound receive/debounce/persistent/broadcast dedupe paths, adds Feishu regression coverage, and adds an Unreleased changelog entry.
- Reproducibility: yes. Source inspection shows a high-confidence path: two Feishu audio events for the same a ... _key` values collide in current-main receive and persistent dedupe before media parsing distinguishes them.

Automerge notes:
- No ClawSweeper repair was needed after automerge opt-in.

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

Prepared head SHA: c0229f8a48
Review: https://github.com/openclaw/openclaw/pull/76408#issuecomment-4365292618

Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: SymbolStar <24540119+SymbolStar@users.noreply.github.com>
2026-05-03 04:20:02 +00:00
Peter Steinberger
0135071833 fix(xai): allow slower image edits 2026-05-03 04:34:21 +01:00
Josh Avant
ba31afb099 fix(discord): surface stalled transport health (#76327)
* fix(discord): surface stalled transport health

* fix(discord): surface stalled transport health

* fix(discord): surface stalled transport health

---------

Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
2026-05-02 22:33:19 -05:00
buyitsydney
5f5e0a3633 fix(memory): retry reindex on socket errors (#76311)
Summary:
- The PR broadens memory-core's embedding retry classifier for socket/network errors, adds focused classifier tests, and adds an Unreleased changelog fix.
- Reproducibility: yes. Current main's retry classifier rejects the socket/fetch samples, and the reindex embedding path delegates to that classifier; a read-only regex probe confirmed the PR accepts the target samples.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(memory): retry reindex on socket errors

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

Prepared head SHA: b4618c4532
Review: https://github.com/openclaw/openclaw/pull/76311#issuecomment-4364956064

Co-authored-by: buyitsydney <buyitsydney@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
2026-05-03 03:21:06 +00:00
Peter Steinberger
dda2cf4e73 test(qa-lab): use OpenAI plugin for mock image generation 2026-05-03 03:34:36 +01:00
Tak Hoffman
f74983e442 fix(memory): preserve active recall tool agent context (#76380)
Summary:
- The PR threads the embedded run's trusted requester agent id into plugin tool context and memory-core tool availability/execution, adds regression tests, and records an Active Memory changelog fix.
- Reproducibility: yes. Current main shows Active Memory passing a synthetic `:active-memory:` session key plu ... ently derive memory scope from the session key; I did not run the regression test in this read-only review.

Automerge notes:
- No ClawSweeper repair was needed after automerge opt-in.

Validation:
- ClawSweeper review passed for head 33ab3d7fc7.
- Required merge gates passed before the squash merge.

Prepared head SHA: 33ab3d7fc7
Review: https://github.com/openclaw/openclaw/pull/76380#issuecomment-4365186657

Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-05-03 02:16:48 +00:00
Peter Steinberger
31161abd40 chore(release): bump version to 2026.5.3 2026-05-03 03:08:47 +01:00
Vincent Koc
4ae9ae12b6 test(e2e): fix kitchen sink crabbox coverage (#76287)
* test(e2e): fix kitchen sink crabbox coverage

* test(e2e): update kitchen sink expected diagnostics

* fix(plugins): harden registry and package gates

* fix(plugins): load lazy tool middleware snapshots

* fix(ci): satisfy crabbox branch gates

* fix(plugins): await guarded fetch cleanup
2026-05-02 18:39:26 -07:00
clawsweeper[bot]
e8df05ed4f fix(slack): enable preview streaming in flat DMs (replyToMode: off) (#76330)
Summary:
- The PR enables Slack draft preview streaming for flat DMs in all non-off modes, updates Slack streaming tests/docs/config metadata/changelog, and refreshes small guard baselines.
- Reproducibility: yes. source-reproducible on current main: the helper returns false for `mode: "partial"` in ...  current test asserts that disabled path. I did not run tests because this review was explicitly read-only.

Automerge notes:
- Ran the ClawSweeper repair loop before final review.
- Included post-review commit in the final squash: fix(slack): enable preview streaming in flat DMs (replyToMode: off)
- Included post-review commit in the final squash: fix(clawsweeper): address review for automerge-openclaw-openclaw-5654…

Validation:
- ClawSweeper review passed for head 52e5d74ef9.
- Required merge gates passed before the squash merge.

Prepared head SHA: 52e5d74ef9
Review: https://github.com/openclaw/openclaw/pull/76330#issuecomment-4365017023

Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: bob <637186+HangGlidersRule@users.noreply.github.com>
2026-05-03 01:30:36 +00:00
Jason
53bd718a1a fix(cli): avoid model warmup for message actions (#76312)
Summary:
- The PR skips eager context-window warmup for `openclaw message`, forwards Discord/Telegram execution-mode de ... reuses caller-owned manifest metadata during config materialization, and adds tests plus a changelog entry.
- Reproducibility: yes. Source inspection on current main shows `openclaw message` is still eligible for eager context-window warmup and the Discord/Telegram wrappers still drop the gateway execution-mode declarations.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix: type message action routing fallbacks
- PR branch already contained follow-up commit before automerge: docs: credit message latency fix contributor

Validation:
- ClawSweeper review passed for head 9606bb27d5.
- Required merge gates passed before the squash merge.

Prepared head SHA: 9606bb27d5
Review: https://github.com/openclaw/openclaw/pull/76312#issuecomment-4364958708

Co-authored-by: FullerStackDev <263060202+fuller-stack-dev@users.noreply.github.com>
2026-05-03 01:26:00 +00:00
Vincent Koc
52cd76a9e2 fix(providers): isolate model discovery test env guards 2026-05-02 17:35:39 -07:00