Vincent Koc
f26793ca54
refactor(qa-lab): trim process metric parser exports ( #105891 )
2026-07-13 10:42:29 +08:00
Peter Steinberger
c3ee86a068
refactor(browser): localize internal support types ( #105839 )
2026-07-12 18:59:01 -07:00
Peter Steinberger
024b7d5aa8
refactor(pairing): store channel pairing state in SQLite ( #105802 )
...
* refactor(pairing): move channel state to SQLite
* fix(pairing): preserve doctor and SDK contracts
* fix(pairing): break SQLite storage import cycle
* fix(pairing): keep SQLite types outside SDK graph
2026-07-12 18:53:38 -07:00
Peter Steinberger
cba79b4aaa
fix(slack): suppress room event typing indicators ( #105813 )
...
* fix(slack): suppress room event typing indicators
* fix(slack): suppress room event typing indicators
2026-07-12 18:41:49 -07:00
Peter Steinberger
3613b83c6c
refactor(browser): trim private Playwright exports ( #105794 )
...
* refactor(browser): trim private Playwright exports
* chore(deadcode): refresh export baseline
* chore(deadcode): refresh current baseline
* chore(deadcode): refresh latest baseline
2026-07-12 18:30:34 -07:00
qingminlong
60ca7565a7
fix(discord): omit invalid component accent colors ( #105387 )
...
* fix(discord): omit invalid component accent colors
* test(discord): cover accent color boundaries
* docs: keep release notes in PR context
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-12 18:25:49 -07:00
Peter Steinberger
a63aec8bf8
test: remove more avoidable waits ( #105816 )
2026-07-12 18:24:13 -07:00
NIO
c93f87756a
fix(qqbot): reject unsafe mention patterns ( #102976 )
...
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-12 18:14:01 -07:00
Peter Steinberger
774d5249cc
test: eliminate unchecked TypeScript casts ( #105804 )
2026-07-12 18:08:26 -07:00
Vincent Koc
6c88469110
refactor(msteams): remove obsolete sso invoke stack ( #105799 )
2026-07-13 08:59:08 +08:00
Peter Steinberger
fe0a6db2b4
fix(slack): warn on disabled channel drops ( #105790 )
2026-07-12 17:50:14 -07:00
chengzhichao-xydt
cacd435632
fix(tlon): bound stalled inbound and outbound media header waits ( #104132 )
...
* fix(tlon): bound stalled inbound and outbound media header waits
* refactor(tlon): share media fetch timeout policy
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-12 17:30:35 -07:00
Vincent Koc
01501f717a
refactor(nostr): trim private test seams ( #105756 )
2026-07-13 08:03:54 +08:00
Peter Steinberger
f87492539b
test(whatsapp): initialize runtime in auto-reply harness ( #105760 )
2026-07-12 16:50:55 -07:00
evan-YM
45e681deac
fix(slack): guard matchesSlackDeliveryMetadataSignature against UTF-8/UTF-16 length mismatch ( #105492 )
...
* [AI] fix(slack): guard matchesSlackDeliveryMetadataSignature against UTF-8/UTF-16 length mismatch
Compare Buffer byte lengths instead of JS string lengths (UTF-16 code
units) so multi-byte characters in the stored signature never produce
mismatched Buffer sizes that would cause timingSafeEqual to throw
TypeError and crash the message reconciliation loop.
Related to #105436
Co-Authored-By: Claude <noreply@anthropic.com >
* test(slack): prove malformed delivery signature recovery
---------
Co-authored-by: Claude <noreply@anthropic.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-12 16:44:52 -07:00
Marcus Castro
0ff416161f
refactor(whatsapp): reuse SDK normalization helpers ( #105580 )
2026-07-12 20:04:18 -03:00
Peter Steinberger
4a05a087a1
refactor(config): retire flat streaming keys from the last six channel schemas via doctor migration ( #105709 )
...
* refactor(config): retire flat streaming keys from the last six channel schemas
signal, irc, nextcloud-talk, whatsapp, googlechat, and mattermost now accept
only the nested streaming.{chunkMode,block.enabled,block.coalesce} shape
(mattermost also drops scalar/boolean streaming); flat spellings migrate via
each channel's defineChannelAliasMigration doctor contract with root seeding
for their wholesale-replace account merges.
* feat(channels): warn once per key when the deprecated flat streaming fallback is used
Bundled schemas now reject the flat delivery keys, so the streaming.ts
fallback only serves external SDK plugin configs; emit a once-per-process
per-key subsystem warning and pin the removal plan to the next release train.
* chore(config): regenerate bundled channel config metadata for nested-only streaming
* docs: describe nested-only channel streaming config and the SDK flat-key deprecation window
* fix(whatsapp): seed migrated named-account streaming from the accounts.default layer
WhatsApp resolution layers accounts.default shared config between root and
named accounts, so doctor-materialized account streaming objects now inherit
default-account settings over root ones; mattermost schema test moves to the
nested-only shape with explicit rejection coverage; scope flat-key deprecation
notes to the pending Matrix/Feishu migrations.
* fix(whatsapp): resolve the default account case-insensitively when seeding migrated streaming
* chore(plugin-sdk): repin API baseline for nested-only channel streaming types
2026-07-12 15:27:28 -07:00
Alix-007
7c72fef247
fix(signal): add timeouts to container REST requests ( #104122 )
...
* fix(signal): add timeouts to container REST requests
* fix(signal): use idle timeouts for container response bodies
* fix(signal): remove redundant timeout release
Signed-off-by: sallyom <somalley@redhat.com >
---------
Signed-off-by: sallyom <somalley@redhat.com >
Co-authored-by: sallyom <somalley@redhat.com >
2026-07-12 16:59:14 -04:00
Vincent Koc
c25cd32c28
refactor(plugins): trim private helper exports ( #105687 )
2026-07-12 22:26:14 +02:00
qingminlong
bf642ef287
fix(signal): surface daemon errors split across output chunks ( #104152 )
...
* fix(signal): preserve daemon log lines across chunks
* test(signal): cover split utf-8 daemon output
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-12 13:02:40 -07:00
yourslewis
9ee9f3e544
fix(slack): prevent duplicate reply controls ( #101474 )
...
* fix(slack): dedupe mirrored reply controls
Co-authored-by: yourslewis <5415708+yourslewis@users.noreply.github.com >
Co-authored-by: Chloe <chloe@openclaw.ai >
* fix(slack): avoid spread in control row keys
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: yourslewis <5415708+yourslewis@users.noreply.github.com >
Co-authored-by: Chloe <chloe@openclaw.ai >
2026-07-12 13:01:31 -07:00
Peter Steinberger
5ab07fde4a
fix(openai): preserve authored openai-completions through provider normalization ( #105539 )
2026-07-12 12:37:33 -07:00
Peter Steinberger
6556d1d173
refactor(config): declarative doctor alias-migration DSL with inheritance-aware account seeding ( #105636 )
...
* fix(config): seed inherited root streaming into doctor-materialized account streaming objects
* feat(plugin-sdk): add defineChannelAliasMigration doctor alias-migration DSL
* refactor(plugins): migrate channel doctor contracts onto the alias-migration DSL
* refactor(config): drop the prod-unused offMode legacy notice option
* fix(config): make account streaming seeding opt-in for wholesale-replace channels
* test(imessage): keep account streaming account-local for deep-merge runtime
2026-07-12 12:28:42 -07:00
Eden
5fd7b5c40a
fix(line): skip confirm/buttons templates with blank required fields ( #105520 )
...
* fix(line): skip confirm/buttons templates with blank required fields
* test(line): cover surrounding-text preservation when skipping blank directives
* fix(line): omit optional blank button titles
Co-authored-by: 許元豪 <146086744+edenfunf@users.noreply.github.com >
* fix(line): reject blank button action labels
Co-authored-by: 許元豪 <146086744+edenfunf@users.noreply.github.com >
* docs(changelog): note LINE template fix
Co-authored-by: 許元豪 <146086744+edenfunf@users.noreply.github.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-12 12:25:52 -07:00
zw-xysk
71accce06a
fix(slack): keep dm metadata reads read-only ( #103468 )
...
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: zw-xysk <zw-xysk@users.noreply.github.com >
2026-07-12 12:18:50 -07:00
qingminlong
8a595dafe4
fix(matrix): preserve UTF-8 bootstrap output tails ( #105475 )
...
* fix(matrix): preserve UTF-8 in bootstrap output tails
* fix(matrix): satisfy deps output tail types
* docs(changelog): note Matrix UTF-8 tail fix
Co-authored-by: qingminlong <0668001063@xydigit.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-12 12:12:55 -07:00
Peter Steinberger
74e42892b6
fix: delay narrated channel progress and remove default title ( #105607 )
...
* fix(channels): delay narrated progress drafts
* chore: keep release changelog unchanged
2026-07-12 12:06:38 -07:00
Peter Steinberger
619a68e97e
fix(qa): repair agentic runtime parity mocks ( #105500 )
...
* fix(qa): repair agentic runtime parity mocks
* fix(qa): scope terminal media parity evidence
* fix(qa): require one image call for media fallback
* fix(qa): bind terminal media proof to image step
* fix(qa): require image capture agreement
* fix(qa): allow skipped parity steps
2026-07-12 19:53:05 +02:00
dwc1997
2ebf0422db
fix(discord): keep realtime partial transcript tail UTF-16 safe ( #104896 )
...
* fix(discord): keep realtime partial transcript tail UTF-16 safe
* refactor(discord): isolate realtime transcript merging
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-12 18:47:05 +01:00
Peter Steinberger
2d86d07f73
test(discord): verify identity probe deadline behavior ( #105541 )
...
* test(discord): verify identity probe deadline behavior
* test(discord): keep timeout rejection message agnostic
2026-07-12 18:33:50 +01:00
Marcus Castro
80d11f1246
refactor(whatsapp): use runtime context for connection controllers ( #104949 )
...
* refactor(whatsapp): replace connection controller registry
* fix(whatsapp): remove controller context import cycle
2026-07-12 14:22:57 -03:00
Marcus Castro
6787c2f653
refactor(whatsapp): reuse SDK dedupe cache ( #104962 )
2026-07-12 14:15:53 -03:00
Peter Steinberger
9ebf9a2e89
fix(qa-lab): tuple-narrow Slack progress markers in live test types
...
#103995 added mutate callbacks that destructure the marker array; under
indexed-access checking string[] elements are string | undefined, failing
check-test-types on main and every PR. The some() guard already proves all
three markers exist, so narrow to a tuple.
2026-07-12 10:01:43 -07:00
efrazer-oai
d09d200293
fix(slack): show commentary independently of tool progress ( #103995 )
...
* fix(slack): separate commentary progress from tools
* fix(slack): preserve legacy preamble defaults
* test(slack): add live commentary progress proof
* fix(slack): support scoped progress drafts
* test(slack): harden commentary progress proof
* test(slack): type commentary matrix cases
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-12 17:52:53 +01:00
Vincent Koc
7e52cbf234
refactor(memory): remove unused size classifier ( #105526 )
2026-07-12 18:39:52 +02:00
Vincent Koc
10853e82fd
refactor(workspaces): remove unused migration helper ( #105522 )
2026-07-12 18:28:17 +02:00
Vincent Koc
007f714dca
fix(openai): preserve image routing before catalog load ( #105518 )
...
* fix(openai): handle image providers without model catalogs
* test(openai): use exported config contract
* test(openai): model provider overlays before catalog load
2026-07-12 18:27:57 +02:00
Peter Steinberger
8573f9e016
test(msteams): align stream failure trace ( #105509 )
2026-07-12 17:19:03 +01:00
Alix-007
bfb4557c83
fix(discord): add timeouts to directory lookup requests ( #104290 )
2026-07-12 11:54:14 -04:00
Alix-007
2f3517c73f
fix(qqbot): add timeout to remote media URL fetches ( #103018 )
...
* fix(qqbot): add timeout to remote media URL fetches
* fix(qqbot): use response header media timeout
---------
Co-authored-by: llagy009 <0668001470@xydigit.com >
2026-07-12 11:53:00 -04:00
Peter Steinberger
a24eab8488
fix(qa): read runtime parity transcripts from sqlite ( #105495 )
...
* fix(qa): read runtime parity transcripts from sqlite
* test(qa): track parity temp directories
* docs(agents): note PR head refresh sequence
2026-07-12 16:48:35 +01:00
Jesse Merhi
90008b081b
fix(signal): preserve native quote replies from agent sends ( #105347 )
...
* fix(signal): persist native reply context
* fix(signal): retain implicit native reply context
* fix(signal): inherit current reply in message tool
* fix(signal): preserve implicit reply provenance
* fix(signal): match equivalent reply targets
* test(signal): narrow threading context
* fix(signal): retain effective reply mode
* fix(signal): preserve explicit reply provenance
* fix(signal): carry reply provenance
* fix(signal): retain reply context on no-op merge
* fix(signal): honor disabled implicit replies
* fix(signal): keep reply policy plugin-local
* docs(changelog): note Signal native quote replies
2026-07-13 01:41:20 +10:00
Peter Steinberger
30cc87a8a6
test(qa): model Codex compaction in parity mock ( #105493 )
...
* test(qa): model codex compaction in parity mock
* docs(agents): record gh branch lookup syntax
2026-07-12 16:37:39 +01:00
Alix-007
20f19d8d5c
fix(minimax): apply request policy to media generation requests ( #102072 )
...
* fix(minimax): apply request policy to media generation requests
* fix(minimax): include image request policy
* fix(minimax): apply request policy to follow-up media fetches
* fix(minimax): preserve retries for guarded media fetches
2026-07-12 11:29:57 -04:00
Peter Steinberger
3b0d3574e3
fix(qa): keep mock memory embeddings offline ( #105488 )
2026-07-12 16:28:46 +01:00
Vincent Koc
e313a2431c
refactor(brave): remove obsolete testing alias ( #105486 )
2026-07-12 17:16:47 +02:00
Alix-007
bbac74685d
fix(dashscope): apply request policy to video requests ( #102094 )
...
* fix(dashscope): apply request policy to video requests
* fix(dashscope): apply request policy to task follow-ups
2026-07-12 11:11:15 -04:00
Vincent Koc
761839343a
refactor(tencent): localize preview model reference ( #105482 )
2026-07-12 17:03:26 +02:00
Galin Iliev
787ed383f5
fix: Microsoft Teams streaming keeps chunk after whitespace collapse ( #102357 )
...
* fix(msteams): preserve streaming delta after whitespace collapse
* fix(msteams): clear stale stream text on rewrite fallback
* test(msteams): update delivery trace stream mock
---------
Co-authored-by: Peter Steinberger <steipete@openai.com >
2026-07-12 08:01:19 -07:00
Vincent Koc
3d1f5ffd54
refactor(voice-call): retire runtime config compatibility ( #105476 )
...
* refactor(voice-call): rename config migration module
* refactor(voice-call): retire runtime config compatibility
2026-07-12 16:47:40 +02:00