Commit Graph

19174 Commits

Author SHA1 Message Date
Peter Steinberger 28e681c92f fix(channels): preserve workspace media access in gateway sends (#117711) 2026-08-01 18:09:17 -07:00
WhatsSkiLL d69dba245b fix(discord): continue queued ingress cleanup (#117524)
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>
2026-08-01 17:52:29 -07:00
Peter Steinberger 7d1d721d62 fix(memory): qualify stale memory search results (#117706)
* fix(memory): qualify stale search results

* fix(memory): satisfy staleness checks

* fix(memory): normalize absent staleness
2026-08-01 17:40:14 -07:00
Peter Steinberger ab8090e0d3 test(qa): deduplicate WhatsApp live transport fixtures (#117700) 2026-08-01 17:21:45 -07:00
Peter Steinberger e9d70a5345 test(discord): consolidate message media fixtures (#117695) 2026-08-01 17:11:16 -07:00
Patrick Erichsen 213b43ff03 fix(channels): preserve human group session titles (#117680) 2026-08-01 17:00:04 -07:00
Vincent Koc d1c96302e6 Merge pull request #117686 from openclaw/fix/voice-call-transcript-owner-20260801
* commit 'f478b906f64110b367d9f3f06d27a9a68e4bf495':
  fix(voice-call): make transcript adoption transactional
  fix(voice-call): isolate replacement transcript state
  test(voice-call): preserve transcript fragment spacing
  test(voice-call): cover replacement transcript ownership
2026-08-02 07:58:56 +08:00
Peter Steinberger 35e4563fa8 refactor(memory): deduplicate memory search test fixtures (#117691) 2026-08-01 16:52:50 -07:00
Peter Steinberger 6c41f37417 fix(feishu): avoid 400s on topic reaction hydration (#117685)
* fix(feishu): hydrate reaction topics with real ids

Fixes #34528

* fix(feishu): scope topic hydration id for errors
2026-08-01 16:49:42 -07:00
Vincent Koc f478b906f6 fix(voice-call): make transcript adoption transactional 2026-08-02 07:42:55 +08:00
Vincent Koc 058812a466 fix(voice-call): isolate replacement transcript state 2026-08-02 07:42:55 +08:00
Vincent Koc 570eddd29b test(voice-call): preserve transcript fragment spacing 2026-08-02 07:42:55 +08:00
Vincent Koc dd7d31743f test(voice-call): cover replacement transcript ownership 2026-08-02 07:42:54 +08:00
Vincent Koc 2f06ed30d8 test(ci): stabilize plugin prerelease async waits (#117684)
* test(voice-call): await replaced bridge cleanup

* test(mistral): await runaway transcript error
2026-08-02 07:31:34 +08:00
zengLingbiao e8a158e4f5 fix(signal): cancel unread body when declared archive length exceeds cap (#117665) 2026-08-01 16:25:32 -07:00
WhatsSkiLL b2278f3d10 fix-discord-preserve-component-waiter-owner (#117492)
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>
2026-08-01 16:18:57 -07:00
Yiğit ERDOĞAN 65d64818bb fix(tts): reject non-audio speech synthesis responses (#117345)
* fix(tts): reject non-audio speech synthesis responses

A successful HTTP 200 carrying a JSON error, an HTML sign-in page, or a
zero-byte body was returned as an audio buffer and written out as a playable
attachment. Route the xAI, Gradium, and Azure Speech synthesizers through the
shared binary-response contract that the OpenAI-compatible speech provider
already uses, so the media kind is validated before the body is read and the
unread body is canceled when it is rejected.

Each provider keeps its own overflow wording, so operator-facing messages are
unchanged apart from the new malformed-response rejection.

* test(azure-speech): prove the audio guard closes a real upstream socket

Adds a loopback node:http server that answers 200 with a JSON content type
and then never ends the body, driven through the real azureSpeechTTS path
with the real global fetch and no stubbed transport. Without the guard the
synthesis hangs to its timeout with the socket still open; with it the
response is rejected immediately and the server observes the close.

* fix(openai): reject malformed binary speech responses

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-01 16:13:15 -07:00
Vincent Koc ac532e141a fix(google): keep realtime startup audio bounded and ordered (#117640)
* commit 'ee6302161a182dcb45aca328de21018888196d28':
  fix(google): keep realtime queue policy internal
  perf(google): avoid copying rejected realtime audio
  test(google): preserve queued audio across fresh reconnect
  refactor(google): centralize realtime audio queue bounds
  fix(google): preserve realtime startup audio order
  fix(google): bound lazy realtime audio queue
  fix(google): bound native realtime audio queue
2026-08-02 06:37:06 +08:00
Peter Steinberger eec96d9634 test(lmstudio): consolidate provider setup fixtures (#117660) 2026-08-01 15:34:32 -07:00
Peter Steinberger 0e45b46889 refactor(feishu): deduplicate drive test fixtures (#117659) 2026-08-01 15:27:07 -07:00
H. H. e9a5e18891 clean up comments 2026-08-01 18:20:07 -04:00
H. H. 1aac7ff6e2 changes so that agent actually waits 2026-08-01 18:20:07 -04:00
Wynne668 d03a43a820 fix(openai): keep embedding batch waits within timeout (#111675)
* fix(openai): keep embedding batch waits within timeout

* test(openai): isolate batch poll timers from provider body guards

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-01 15:17:36 -07:00
Peter Steinberger 3772f0754b test(matrix): deduplicate CLI fixtures (#117651) 2026-08-01 15:05:02 -07:00
Wynne668 9a3db65638 fix(voyage): keep embedding batch waits within timeout (#111673) 2026-08-01 15:02:33 -07:00
Vincent Koc ee6302161a fix(google): keep realtime queue policy internal 2026-08-02 05:54:34 +08:00
Peter Steinberger 164c3f2cb1 test(browser): consolidate navigation guard fixtures (#117638) 2026-08-01 14:33:21 -07:00
chenyangjun-xy 8d7b858685 fix(tlon): honor configured user timezone in summarization history (#117429)
Channel history timestamps in summarization requests were rendered with
new Date().toLocaleString(), using the host process timezone instead of
the configured agents.defaults.userTimezone. Reuse the shared inbound
envelope formatter (formatAgentEnvelope + resolveEnvelopeFormatOptions)
so timestamps match the user timezone, consistent with Mattermost/Feishu.

Adds formatSummarizationHistoryText with coverage for the UTC baseline
and non-UTC offsets.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-01 14:29:41 -07:00
Vincent Koc 30f8fbc67a perf(google): avoid copying rejected realtime audio 2026-08-02 05:27:36 +08:00
Vincent Koc 1ae9b1cfc5 test(google): preserve queued audio across fresh reconnect 2026-08-02 05:27:36 +08:00
Vincent Koc 213c05182f refactor(google): centralize realtime audio queue bounds 2026-08-02 05:27:36 +08:00
Vincent Koc 24e6354ec2 fix(google): preserve realtime startup audio order 2026-08-02 05:27:36 +08:00
Vincent Koc aab146eeec fix(google): bound lazy realtime audio queue 2026-08-02 05:27:36 +08:00
Vincent Koc 53d227970e fix(google): bound native realtime audio queue 2026-08-02 05:27:36 +08:00
Omar Shahine 2b3009f718 fix(gateway): preserve node invoke dispatch provenance (#117139)
* fix(gateway): preserve node invoke dispatch provenance

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 6381c461-11aa-4700-8648-4da1393e1c59

* fix(gateway): preserve timeout precedence

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 6381c461-11aa-4700-8648-4da1393e1c59

* fix(gateway): mark wake-path disconnect as not dispatched

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 6381c461-11aa-4700-8648-4da1393e1c59

* fix(gateway): mark plugin dispatch after send

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 6381c461-11aa-4700-8648-4da1393e1c59

* build(browser): regenerate Copilot runtime

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 6381c461-11aa-4700-8648-4da1393e1c59

---------

Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 6381c461-11aa-4700-8648-4da1393e1c59
2026-08-01 21:22:51 +00:00
Peter Steinberger 1e83395d14 test(policy): deduplicate doctor fixtures (#117634) 2026-08-01 14:20:34 -07:00
zengLingbiao c539192b5c fix(tlon): cancel unread error bodies in urbit channel ops (#117475)
* fix(tlon): cancel unread error bodies in urbit channel ops

* fix(tlon): start error body cancellation without awaiting it
2026-08-01 14:12:06 -07:00
Vincent Koc 813b7975aa merge(voice): preserve realtime reconnect continuity (#117599) 2026-08-02 05:03:59 +08:00
Peter Steinberger cf1afe26a1 test(signal): consolidate inbound context fixtures (#117617) 2026-08-01 14:02:30 -07:00
Peter Steinberger 6d5b25e24b refactor(imessage): deduplicate monitor route test fixtures (#117621) 2026-08-01 14:02:27 -07:00
Vincent Koc fedb61bf91 merge(openai): retain Gateway microphone frames (#117604) 2026-08-02 04:52:06 +08:00
chenyangjun-xy b24881eb04 fix(tlon): chunk outbound text over the declared delivery limit (#117438)
* fix(tlon): chunk outbound text over the declared delivery limit

* fix(tlon): guard optional outbound adapter in chunking test

* test(tlon): prove chunked outbound over real urbit loopback
2026-08-01 13:19:51 -07:00
Peter Steinberger db49a9a565 fix(cerebras): keep documented model catalog static (#117584)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-08-01 13:16:27 -07:00
Vincent Koc 80c187b866 fix(xai): preserve terminal realtime voice outcomes (#117600)
* fix(xai): preserve canonical realtime terminal outcomes

* fix(xai): bound terminal tool outcome state

* test(xai): bound realtime outcome harness payloads

---------

Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-08-02 04:13:58 +08:00
Peter Steinberger a26df7153f test(qa): deduplicate mock provider fixtures (#117590) 2026-08-01 13:05:21 -07:00
wangmiao0668000666 ebb301c32d fix(moonshot): forward abort signal through Kimi web search provider (#105125) 2026-08-01 13:01:40 -07:00
Vincent Koc de755117e6 merge(main): refresh realtime continuity repair
* commit '81e392b7ff43bcdb7a3be50a99adf65c3b0141b5':
  fix(channels): preserve filters in offline status diagnostics (#117570)
  perf(gateway): separate startup maintenance timing (#117577)
  refactor(tests): deduplicate database-first guard fixtures (#117594)
  fix(cli): align sessions cleanup label summary by visible width (#117459)
  perf(gateway): skip empty session reconciliation (#117589)
  refactor(ui): consolidate cron form control rendering (#117576)
  fix(memory): recover restored session freshness (#117548)
  fix(ui): preserve Talk transcript surrogate bounds
  fix(ui): harden Talk transcript marker bounds
  test(ui): cover bounded realtime Talk entries
  fix(ui): bound realtime Talk conversation text
2026-08-02 03:59:46 +08:00
Vincent Koc 5df1c401e3 Merge repaired PR #117057 onto current main
* commit '657450148cae1e3eb3f05e9fcb709ca60ff8d71d':
  test(openai): satisfy live proof lint
  test(openai): prove gateway startup audio delivery
  test(openai): isolate gateway audio pipeline proof
  fix(openai): unify gateway microphone buffering
  fix(openai): preserve gateway microphone startup audio
2026-08-02 03:45:05 +08:00
Peter Steinberger 165c968f95 fix(memory): recover restored session freshness (#117548) 2026-08-01 12:39:24 -07:00
Vincent Koc 657450148c Merge origin/main into fix(openai): retain gateway startup audio
* origin/main:
  fix(whatsapp): normalize future-proof QA poll and video note ingress (#117579)
  fix(perf): separate warm and first-device health probes (#117525)
  fix(ci): repair plugin prerelease validation (#117562)
  test(openai): parse realtime websocket frames safely
  test(ui): cover reentrant Talk meter cleanup
  fix(ui): reclaim reentrant Talk audio meters
  fix(openai): own queued realtime audio buffer snapshots
2026-08-02 03:35:47 +08:00