Commit Graph

8260 Commits

Author SHA1 Message Date
Vincent Koc
8beda86416 fix(channels): expose progress draft config hints 2026-05-03 14:21:57 -07:00
Peter Steinberger
be324914cb fix(discord): seed progress drafts at dispatch start 2026-05-03 22:19:25 +01:00
Peter Steinberger
c33e578554 feat: add channel progress drafts
Adds unified progress-draft streaming for chat channels, with docs and per-channel regressions.
2026-05-03 22:01:08 +01:00
Peter Steinberger
d4af125b52 feat(qa): add Mantis before-after CLI 2026-05-03 21:27:43 +01:00
Vincent Koc
53cc52981b fix(test): align plugin gauntlet with built runtime 2026-05-03 13:17:21 -07:00
Vincent Koc
c5488ea577 fix(telegram): expose media group flush config 2026-05-03 12:12:53 -07:00
Peter Steinberger
52257fd05e docs: clarify Discord bot mentions 2026-05-03 20:11:55 +01:00
neilofneils404
904cbec721 fix: reject unowned CLI roots before plugin load (#76379)
Co-authored-by: Neil <neil@neilofneils.com>
2026-05-03 20:06:49 +01:00
Vincent Koc
03e35b1d83 fix(feishu): honor block streaming config 2026-05-03 11:42:13 -07:00
Vincent Koc
01e2755dc3 fix(googlechat): normalize auth transport headers 2026-05-03 11:20:54 -07:00
Vincent Koc
af1c869d10 fix(anthropic): expose bundled thinking policy 2026-05-03 11:10:56 -07:00
Peter Steinberger
ee6052a169 fix(bonjour): default LAN discovery on macOS only
Summary:
- add manifest-backed platform-specific default enablement for bundled plugins
- auto-start Bonjour LAN discovery on macOS hosts only
- keep Linux, Windows, and containerized Gateway deployments opt-in while preserving explicit enablement

Verification:
- pnpm test extensions/bonjour/src/advertiser.test.ts src/plugins/bundled-plugin-metadata.test.ts src/plugins/manifest-registry.test.ts src/plugins/channel-plugin-ids.test.ts
- pnpm exec oxfmt --check --threads=1 CHANGELOG.md docs/gateway/bonjour.md docs/gateway/configuration-reference.md docs/gateway/discovery.md docs/gateway/security/index.md docs/plugins/manifest.md extensions/bonjour/openclaw.plugin.json src/plugin-sdk/facade-activation-check.runtime.ts src/plugins/bundled-manifest-contract-plugins.ts src/plugins/bundled-plugin-metadata.test.ts src/plugins/channel-presence-policy.ts src/plugins/default-enablement.ts src/plugins/gateway-startup-plugin-ids.ts src/plugins/installed-plugin-index-record-builder.ts src/plugins/installed-plugin-index-store.ts src/plugins/installed-plugin-index-types.ts src/plugins/installed-plugin-index.ts src/plugins/loader.ts src/plugins/manifest-contract-eligibility.ts src/plugins/manifest-owner-policy.ts src/plugins/manifest-registry-installed.ts src/plugins/manifest-registry.test.ts src/plugins/manifest-registry.ts src/plugins/manifest.ts src/plugins/providers.ts
- git diff --check
- Testbox: pnpm check:changed via Blacksmith Testbox tbx_01kqqf3f8rbrt8afjtcg0ck7qs

Refs #74209
2026-05-03 19:07:27 +01:00
Vincent Koc
fa98d01aa1 fix(discord): skip disabled native command cleanup 2026-05-03 11:03:02 -07:00
Peter Steinberger
5a028489b1 fix(voice-call): fallback on gateway 1006 closes (#76858) 2026-05-03 19:02:21 +01:00
Vincent Koc
863198f0c9 fix(commands): tolerate empty plugin command replies
Fixes #74800.
2026-05-03 10:55:58 -07:00
Vincent Koc
63ebe372e8 fix(openrouter): expose DeepSeek V4 xhigh thinking
Fixes #74788.
2026-05-03 10:51:05 -07:00
Peter Steinberger
aa5f8e6403 fix: reduce slack socket reconnect log noise 2026-05-03 18:33:14 +01:00
pashpashpash
5bcc321343 Scope Codex heartbeat guidance to heartbeat turns (#76788)
* fix(codex): scope heartbeat guidance to collaboration mode

* fix heartbeat tool direct context

* test prompt heartbeat collaboration snapshots

* fix heartbeat changelog credit
2026-05-04 01:58:39 +09:00
Peter Steinberger
4e82cacc84 fix(voice-call): summarize restored call verification logs 2026-05-03 17:44:21 +01:00
Peter Steinberger
1c7cbf55b9 test(discord): type tracked target resolver mock 2026-05-03 17:44:13 +01:00
Peter Steinberger
5039a35a33 fix(discord): preserve tracked reaction targets 2026-05-03 17:44:13 +01:00
Peter Steinberger
788cff1df4 Add opt-in reaction tool tracking 2026-05-03 17:44:13 +01:00
Peter Steinberger
a38c2c233a fix(memory): split vector store readiness 2026-05-03 17:38:47 +01:00
Peter Steinberger
5330cbb25d refactor(telegram): clarify reply supersession fence 2026-05-03 17:25:58 +01:00
Peter Steinberger
2696baba81 fix(telegram): suppress superseded turn replies 2026-05-03 17:25:58 +01:00
chinar-amrutkar
463493aa28 fix(telegram): suppress stale replies when dispatch is superseded
When a newer inbound message arrives while an older dispatch is still
processing, buffered final answers from the old dispatch could be
delivered into the new message's thread.

Add `bufferedGeneration` to `BufferedFinalAnswer` to track which
abort fence generation buffered the answer. `takeBufferedFinalAnswer`
now rejects buffered answers whose generation doesn't match the
current dispatch's generation, preventing stale content delivery.

Fixes #76642
2026-05-03 17:25:58 +01:00
Peter Steinberger
7b5a18ae7a fix(google-meet): keep CLI sessions gateway-owned 2026-05-03 17:22:59 +01:00
Peter Steinberger
0636442cde fix(discord): send early typing cue for accepted DMs
Co-authored-by: chinar-amrutkar <chinar.amrutkar@gmail.com>
2026-05-03 17:10:07 +01:00
Ayaan Zaidi
fc293b1a53 test(telegram): cover forum topic queued finals 2026-05-03 21:31:56 +05:30
Ayaan Zaidi
5130622750 fix(telegram): require observed final delivery 2026-05-03 21:31:56 +05:30
clawsweeper
453be4216b fix(memory): keep plain status from probing embedding providers 2026-05-03 17:01:42 +01:00
Peter Steinberger
77a50db9ea feat(qa): add Mantis Discord status reaction scenario (#76747)
* feat(qa): add Mantis Discord status reaction scenario

* fix(qa): retry Discord rate limits in Mantis runs

* refactor(qa): reuse Discord API retry helper

* fix(qa): import Discord API through package surface

* fix(ci): generate Discord boundary declarations

* fix(ci): keep xai boundary overrides stable
2026-05-03 17:00:06 +01:00
Peter Steinberger
6becfcb275 test(telegram): cover visible error fresh final 2026-05-03 16:53:06 +01:00
jack-stormentswe
2b38345c8a fix(telegram): force fresh final after visible intermediate output (#76529) 2026-05-03 16:53:06 +01:00
Peter Steinberger
9dc0f10f8a test: type codex dynamic tool fixture 2026-05-03 16:40:46 +01:00
Peter Steinberger
1bfc66da33 test: avoid codex app-server factory race 2026-05-03 16:34:49 +01:00
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