Commit Graph

19174 Commits

Author SHA1 Message Date
Alix-007 94ba7cc392 fix(nextcloud-talk): validate non-interactive base URLs (#111054) 2026-07-31 21:08:51 -07:00
Vincent Koc 6c886107c3 merge(main): refresh voice call provider state cleanup
* commit '441d6ab254df14fb6939a8a261f474904ff9c500': (388 commits)
  fix(qqbot): ignore blank app id fallbacks (#109460)
  fix(feishu): consume implicit reply targets across media delivery (#117196)
  fix(exec): preserve approved command output when sessions resume (#117177)
  fix(qa): use public subagent fanout evidence (#116832)
  fix(googlechat): cancel unread auth response bodies before release (#115873)
  fix(queue): prevent cron saturation from starving hook dispatch (#116666)
  fix(gateway): sessions.steer retry no longer interrupts an active run when replaying a cached idempotency key (#116969)
  fix(irc): config validation rejects documented channels.irc.configWrites key (#112392)
  fix(mistral): keep terminal error branch lint-clean
  fix(onboard): stop a full reset from resetting the default workspace when the config is unreadable (#114110)
  refactor(i18n): remove unused Apple contradiction report (#117182)
  fix(google): stop scraping Gemini CLI OAuth credentials (#117167)
  perf: count large histories before Gateway prewarm (#117118)
  fix(signal): restore provider-safe original attachment filenames (#115107)
  refactor(channels): unify setup ownership across bundled channels (#117188)
  fix: allow gateway service commands for named profiles (#116314)
  fix(plugins): invalidate bundled artifact locations after metadata refresh (#117041)
  fix(ollama): honor model requests and pull completion contracts (#117171)
  fix(agents): prevent fallback after stale lifecycle abort (#117168)
  fix(telegram): confirm polling before long poll (#116970)
  ...
2026-08-01 12:03:58 +08:00
RileyJJY 441d6ab254 fix(qqbot): ignore blank app id fallbacks (#109460) 2026-07-31 21:01:56 -07:00
Peter Steinberger b521ce626b fix(feishu): consume implicit reply targets across media delivery (#117196)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 21:01:45 -07:00
Vincent Koc e73ff43db6 Merge pull request #117190 from openclaw/fix/mistral-realtime-transcript-bound-v2
* commit '834af948f4d9086b8c0d9a950150544d487dfe3c':
  fix(mistral): keep terminal error branch lint-clean
  fix(mistral): make realtime errors terminal
  test(mistral): cover realtime transcript overflow
  fix(mistral): bound realtime transcript accumulation
2026-08-01 11:58:52 +08:00
Yiğit ERDOĞAN 9dfbf6a8a0 fix(googlechat): cancel unread auth response bodies before release (#115873)
The size guard in readGoogleAuthResponseBytes inspects content-length and
throws before it reaches response.body.getReader(), so an oversized auth
response leaves the stream untouched and the finally block releases the
dispatcher without cancelling it.

This is the same shape #111290 just fixed in api.ts, applied to the auth
transport's own guard site.
2026-07-31 20:54:06 -07:00
Ayaan Gazali d2c9e74702 fix(irc): config validation rejects documented channels.irc.configWrites key (#112392) 2026-07-31 20:46:10 -07:00
Vincent Koc 834af948f4 fix(mistral): keep terminal error branch lint-clean 2026-08-01 11:45:06 +08:00
Vincent Koc fcc20d14a3 fix(google): stop scraping Gemini CLI OAuth credentials (#117167)
* fix(google): delegate Gemini OAuth refresh to the CLI

* refactor(google): remove retired Gemini OAuth stack

* chore(ci): prune retired Google OAuth baseline

* fix(google): retire Gemini CLI usage telemetry

* fix(google): remove retired usage token parser
2026-08-01 11:36:24 +08:00
Vincent Koc f581cf7f53 merge(main): refresh Mistral realtime transcript bound
* commit '6938f7dddb63bad59862c014c427d63f0a41a6f4': (368 commits)
  fix: allow gateway service commands for named profiles (#116314)
  fix(plugins): invalidate bundled artifact locations after metadata refresh (#117041)
  fix(ollama): honor model requests and pull completion contracts (#117171)
  fix(agents): prevent fallback after stale lifecycle abort (#117168)
  fix(telegram): confirm polling before long poll (#116970)
  fix(tlon): wire autoDiscoverChannels through the settings-store round-trip (#114949)
  fix(gateway): yield before post-ready background work (#117083)
  fix(ui): keep canvas lease renewals lifecycle-owned and timer-safe (#117173)
  fix(teams): restore the official square product icon (#117170)
  refactor(ui): replace duplicated locale bundles with canonical translation memory (#117157)
  fix(ui): retire stale Gateway event-log observers (#117169)
  fix(agents): keep subagent status consistent after restart and large fan-outs (#117141)
  refactor(ui): unify filtered session list ownership (#117158)
  refactor(agents): consolidate context budgets and compaction recovery (#117149)
  fix(net-policy): redact sig and x-* auth params in URLs and bodies (#116957)
  refactor(agents): remove duplicate generated-media delivery fallbacks (#117150)
  refactor(reply): unify turn lifecycle state ownership (#117145)
  fix(ui): preserve emoji agent avatar initials (#104912)
  refactor(auto-reply): unify command and directive ownership (#117143)
  refactor(plugins): consolidate descriptor and startup ownership (#117146)
  ...
2026-08-01 11:35:42 +08:00
Peter Steinberger 982add9618 fix(signal): restore provider-safe original attachment filenames (#115107)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
Co-authored-by: ZengWen-DT <ceng.wen@xydigit.com>
2026-07-31 20:34:34 -07:00
Peter Steinberger 654744da17 refactor(channels): unify setup ownership across bundled channels (#117188) 2026-07-31 20:33:20 -07:00
Vincent Koc 065d39067e Merge pull request #117179 from openclaw/fix/google-live-transcript-bound
fix(google): stop runaway realtime transcript growth
2026-08-01 11:22:39 +08:00
Peter Steinberger 865a7286c8 fix(ollama): honor model requests and pull completion contracts (#117171)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 20:19:57 -07:00
Vincent Koc 5ab24717f1 merge: refresh google live transcript bound onto main
* origin/main:
  fix(telegram): confirm polling before long poll (#116970)
  fix(tlon): wire autoDiscoverChannels through the settings-store round-trip (#114949)
  fix(gateway): yield before post-ready background work (#117083)
  fix(ui): keep canvas lease renewals lifecycle-owned and timer-safe (#117173)
2026-08-01 11:16:28 +08:00
Jason (Json) a0fe02a6dc fix(telegram): confirm polling before long poll (#116970) 2026-07-31 21:11:00 -06:00
ml12580 02457657f0 fix(tlon): wire autoDiscoverChannels through the settings-store round-trip (#114949)
parseSettingsResponse and applySettingsUpdate read/wrote a dead
`autoDiscover` key, while every consumer (monitor/settings-helpers.ts)
and the settings migration use `autoDiscoverChannels`. As a result the
settings-store hot-reload override for auto-discover-channels never took
effect and the migration re-fired on every restart. Align the field name
and add a regression test covering both the load and subscription paths.

Co-authored-by: Claude <noreply@anthropic.com>
2026-07-31 20:05:16 -07:00
Vincent Koc a09830c2b7 merge: refresh google live transcript bound onto main
* commit '87e900bb64094b6fa365d47333c30b926ed62ce6':
  fix(teams): restore the official square product icon (#117170)
2026-08-01 10:54:01 +08:00
Peter Steinberger 87e900bb64 fix(teams): restore the official square product icon (#117170)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 19:51:17 -07:00
Vincent Koc 541593dcb4 merge: refresh google live transcript bound onto main
* commit '7e78de747b8a64d52f30aee948b697bf4c528691': (359 commits)
  refactor(ui): replace duplicated locale bundles with canonical translation memory (#117157)
  fix(ui): retire stale Gateway event-log observers (#117169)
  fix(agents): keep subagent status consistent after restart and large fan-outs (#117141)
  refactor(ui): unify filtered session list ownership (#117158)
  refactor(agents): consolidate context budgets and compaction recovery (#117149)
  fix(net-policy): redact sig and x-* auth params in URLs and bodies (#116957)
  refactor(agents): remove duplicate generated-media delivery fallbacks (#117150)
  refactor(reply): unify turn lifecycle state ownership (#117145)
  fix(ui): preserve emoji agent avatar initials (#104912)
  refactor(auto-reply): unify command and directive ownership (#117143)
  refactor(plugins): consolidate descriptor and startup ownership (#117146)
  fix(messages): reply actions leak citation markers and reply/poll answers draw the no-reply fallback (#116909)
  fix(slack): let durable ingress retry transient thread lookups (#117135)
  refactor(doctor): consolidate shipped state migration ownership (#117142)
  fix(ai): Codex stream shows internal parser text on a malformed frame (#116966)
  fix: guard every migrated session accessor path (#117140)
  fix(terminal): measure unicode display width consistently (#117062)
  fix(openai): clear ChatGPT SSE fallback per session (#117123)
  fix(mistral): reject incomplete streamed tool terminals (#117137)
  fix(ai): preserve structured chat content and refusals (#117136)
  ...
2026-08-01 10:45:53 +08:00
Vincent Koc 5ee5113104 merge main into voice-call pacer fix
* commit 'c41f033b87545b658215a9c3bbe03f88fbaa867d': (347 commits)
  refactor(plugins): consolidate descriptor and startup ownership (#117146)
  fix(messages): reply actions leak citation markers and reply/poll answers draw the no-reply fallback (#116909)
  fix(slack): let durable ingress retry transient thread lookups (#117135)
  refactor(doctor): consolidate shipped state migration ownership (#117142)
  fix(ai): Codex stream shows internal parser text on a malformed frame (#116966)
  fix: guard every migrated session accessor path (#117140)
  fix(terminal): measure unicode display width consistently (#117062)
  fix(openai): clear ChatGPT SSE fallback per session (#117123)
  fix(mistral): reject incomplete streamed tool terminals (#117137)
  fix(ai): preserve structured chat content and refusals (#117136)
  fix(doctor): persist normalized agent roster (#117115)
  fix(signal): avoid replay after ambiguous quote delivery errors (#117134)
  fix(cron): reject disabled delivery accounts when scheduling (#116899)
  fix(gateway): honor HTTP If-Modified-Since media validators (#117133)
  fix(config): delete one array element per config patch delete (#116463)
  fix(plugins): report installed dependency health authoritatively (#117029)
  fix(ui): recover moving sessions across paged gateway rosters (#117016)
  fix(ui): clear hidden session selection before bulk deletion (#117015)
  fix(discord): avoid replaying ambiguous voice deliveries (#117127)
  fix(ui): scope Gateway reconnect lineage to its target (#117125)
  ...
2026-08-01 10:04:40 +08:00
Peter Steinberger a0c98de0af fix(slack): let durable ingress retry transient thread lookups (#117135)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 18:37:37 -07:00
Peter Steinberger 65717fd3be fix(signal): avoid replay after ambiguous quote delivery errors (#117134)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 17:59:10 -07:00
Peter Steinberger a8dfd37332 fix(discord): avoid replaying ambiguous voice deliveries (#117127)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 17:40:05 -07:00
Peter Steinberger 7dd74db836 fix: preserve completion delivery and truthful agent session state (#117119) 2026-07-31 17:35:14 -07:00
Peter Steinberger 45f274f757 fix(line): avoid replaying ambiguous auto replies (#117126)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 17:32:53 -07:00
Yuval Dinodia e8d546c8da fix(buzz): reconnect silently skips retained inbound messages (#116925)
* fix(buzz): page reconnect history instead of dropping older messages

On reconnect the Buzz gateway asked the relay for a single capped page of
room history and treated EOSE as a complete recovery. Any backlog larger
than the per-room replay limit was never requested again, so those messages
never reached handleBuzzInbound, the agent, or the session transcript, and
nothing reported the loss.

The room subscription now records how much history its first page returned
and, when that page filled the limit, pages older history through the relay
until it is exhausted. Each page is dispatched through the existing bounded
replay queue and the next page waits for queue capacity, so recovery stays
memory bounded. A room whose backlog cannot be paged past a single
timestamp is now reported instead of dropped silently.

Membership tracking moves to room-membership-tracker.ts because buzz-bus.ts
was already at the 700 line ceiling.

* fix(buzz): hold dispatch capacity while a history page is in flight

Catch-up asked the replay queue whether capacity existed and then issued the
relay query, but nothing held those slots. Live room events arriving while
the query was in flight could consume them, so admitting the page afterwards
could report overflow, which closes the dispatch queue and drops every
queued message before forcing a reconnect. A busy room with slow inbound
handlers could repeat that instead of finishing recovery.

Capacity is now reserved rather than sampled. reserveCapacity resolves with a
reservation that owns its slots until released, page events are admitted
through that reservation, and the reservation is released once the page is
enqueued. Live enqueues keep the full pending limit and are never rejected
earlier because a reservation is outstanding. An overflow reported through a
reservation means the relay exceeded the page it was asked for, so it is
reported as a history error instead of tearing down the session.

* fix(buzz): bound reconnect history pages

* fix(buzz): preserve replay reservations

* test(buzz): cover catch-up settlement paths

* fix(buzz): drain saturated history ranges

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-01 08:28:03 +08:00
Peter Steinberger a1b41d5ddb refactor(channels): share Matrix and Slack progress draft composition (#117097) 2026-07-31 17:17:07 -07:00
Vincent Koc a1c689e375 fix(outbound): preserve fenced tool call examples (#117089) 2026-08-01 08:13:05 +08:00
Vincent Koc 89aadef6ef feat(plugins): externalize iMessage channel (#117101) 2026-08-01 08:01:18 +08:00
Peter Steinberger 9e4381eb1c refactor(channels): unify bundled channel setup contracts (#117106)
* refactor(channels): canonicalize bundled setup contracts

* test(matrix): use scoped environment fixtures
2026-07-31 16:57:29 -07:00
Peter Steinberger 533807ab61 refactor: consolidate secure channel approval reaction bindings (#117105) 2026-07-31 16:51:25 -07:00
Peter Steinberger b8b4a11b38 refactor(telegram): unify outbound media delivery (#117102) 2026-07-31 16:46:22 -07:00
Peter Steinberger 01cd336a63 refactor(discord): consolidate model picker navigation (#117093) 2026-07-31 16:43:34 -07:00
Peter Steinberger ea1d6cc35e refactor(memory): unify embedding provider adaptation (#117094) 2026-07-31 16:30:22 -07:00
Peter Steinberger 6d8f0a1365 fix(memory-wiki): protect notes with damaged human markers (#117104) 2026-07-31 16:26:08 -07:00
Peter Steinberger 510ace0fbb fix(telegram): avoid polling stalls from full thread-binding rewrites (#117081)
* fix(telegram): avoid rewriting every thread binding on activity

* test(telegram): satisfy thread-binding unbind contract
2026-07-31 16:22:33 -07:00
Peter Steinberger 433bb3f954 fix(cli): make commands, completion, and JSON output reliable (#116033)
* fix(cli): make commands, completion, and JSON output reliable

* fix(cli): reconcile completion coverage with current main

* test(cli): keep test routing stable across isolation lanes
2026-07-31 16:20:34 -07:00
Peter Steinberger 4645d4a487 fix(browser): unify node routing and honor configured pins (#117087) 2026-07-31 16:16:44 -07:00
Leon-SK668 b832287ba5 fix(discord): prevent REST failures from exposing credentials
Sanitize Discord REST failure details and structurally hash credential-bearing webhook scheduler route keys while preserving stable rate-limit grouping. Exact-head CI, autoreview, ClawSweeper, and focused redaction proof are green.

Co-authored-by: Alix-007 <li.long15@xydigit.com>
2026-08-01 06:55:28 +08:00
Sarah Fortune cc0315a397 fix(slack): recover identity after transient startup auth failure (#117060)
* fix(slack): retry transient startup auth once

* fix(slack): allow two startup auth retries

* test(slack): cover stalled startup auth retries

---------

Co-authored-by: Sarah Fortune <sarah.fortune@gmail.com>
2026-07-31 15:50:32 -07:00
Vincent Koc 61fb29e90a feat(plugins): externalize OpenCode Go provider (#117064) 2026-08-01 06:31:19 +08:00
Peter Steinberger d92d68ac77 fix(providers): canonicalize model families and stream outcomes (#116998)
* fix(providers): canonicalize live model families and stream finalization

* test(openrouter): use canonical typed stream fixture

---------

Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 15:29:26 -07:00
Jason (Json) 2a56ce9ad5 fix(telegram): bound ingress worker shutdown (#116978) 2026-07-31 16:26:39 -06:00
ZOOWH f5c56c2ee1 fix(memory-wiki): salvage human Notes before pruning imported source pages (#102294)
* fix(memory-wiki): salvage human Notes before pruning imported source pages

* fix(memory-wiki): reuse content-fence logic and fail-safe on salvage write error

* fix(memory-wiki): skip prune when page read fails with non-ENOENT error

* fix(memory-wiki): preserve human notes during source pruning

* fix(memory-wiki): satisfy source recovery lint gates

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-31 15:18:42 -07:00
chelsealong fc545773cc fix(memory): suggest reindex, not --fix, for a missing qmd index (#116958)
`memory status` always appended "Fix: openclaw memory status --fix"
when any audit issue was present, even when none of the issues were
actually repaired by --fix. A missing qmd index file (qmd-index-missing)
is marked fixable: false, so running the suggested --fix left the
issue unresolved. Gate the --fix hint on at least one fixable issue,
and suggest `openclaw memory index --agent <id>` (which builds a fresh
index) when the qmd index file is missing.
2026-07-31 15:14:59 -07:00
Vincent Koc a3220af4aa chore(msteams): add private Gateway QA adapter
Add the reusable private-build Microsoft Teams Gateway QA adapter with loopback-only ingress, exact-origin connector routing, and packaged runtime coverage. Exact-head CI, Testbox changed gate, real Gateway channel canary, autoreview, and ClawSweeper disposition are complete.
2026-08-01 06:14:50 +08:00
Peter Steinberger 3dce01fa20 fix(googlechat): retain fallback thread continuity (#117053) 2026-07-31 14:54:16 -07:00
Peter Steinberger 661afc22ac fix(bedrock): release streaming clients (#117039) 2026-07-31 14:31:37 -07:00
Peter Steinberger 3cadc08593 fix(google): restore canonical Gemini and Vertex provider invariants (#117042)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 14:31:34 -07:00