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