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