openclaw/docs
Omar Shahine 8f1bd3cf53
fix(bluebubbles): add opt-in coalesceSameSenderDms for split-send DMs
Two distinct user sends to a DM — a command followed by a pasted URL that
iMessage renders as a standalone URL-balloon message — are delivered by
Apple/BlueBubbles as two separate webhooks ~0.8-2.0 s apart. Without
coalescing, the agent replies to the command alone before the URL arrives
(the dump skill sees an empty payload), and the URL lands as a second
queued turn.

Opt-in behind channels.bluebubbles.coalesceSameSenderDms (default false).
When set, DM messages with no associatedMessageGuid hash to
dm:<chat>:<sender> so the debounce window merges text + URL-balloon into
one merged agent turn. Group chats and legacy text+balloon pairs linked
via associatedMessageGuid keep per-message keys. The default inbound
debounce window widens from 500 ms to 2500 ms when the flag is on and no
explicit messages.inbound.byChannel.bluebubbles is set, covering Apple's
observed split-send cadence.

Merged output is bounded (<=4000 chars text with an explicit truncation
marker, <=20 attachments, first-plus-latest sampling beyond 10 source
entries). Every source messageId folded into the merged view is committed
to the inbound dedupe store after processing, so a later BlueBubbles
MessagePoller replay of any individual source event is recognized as a
duplicate.

Tests (506 BlueBubbles tests passing, multiple new cases covering the
on/off matrix, control-command override, orphan URL-balloon, group-chat
preservation, default-window widening, replay-of-any-source-id dedupe,
and the 25-message flood bound).

Smoke tested end-to-end against live BlueBubbles webhook traffic:
Dump+URL composed as one iMessage -> BB dispatches two webhooks ~1 s
apart -> debouncer coalesces both under dm:<chat>:<sender> -> dump skill
runs on merged payload in one turn.

Also updates docs/channels/bluebubbles.md with a scenarios table,
enablement guide, trade-offs, and three-layer troubleshooting checklist;
docs/concepts/messages.md cross-references the control-command debounce
exception.
2026-04-21 01:38:17 -07:00
..
.generated fix(bluebubbles): add opt-in coalesceSameSenderDms for split-send DMs 2026-04-21 01:38:17 -07:00
.i18n fix: recover invalid gateway configs 2026-04-20 13:18:07 +01:00
assets
automation feat(cron): preview resolved delivery targets 2026-04-21 12:01:06 +05:30
channels fix(bluebubbles): add opt-in coalesceSameSenderDms for split-send DMs 2026-04-21 01:38:17 -07:00
cli fix: centralize provider thinking profiles 2026-04-21 09:13:35 +01:00
concepts fix(bluebubbles): add opt-in coalesceSameSenderDms for split-send DMs 2026-04-21 01:38:17 -07:00
debug docs: clarify tsgo typecheck lanes 2026-04-18 18:24:07 +01:00
diagnostics
gateway fix(browser): clarify DevToolsActivePort attach failures 2026-04-21 08:11:41 +01:00
help test: add bundled channel dependency Docker smoke 2026-04-21 08:26:23 +01:00
images feat: Streamline Feishu channel onboarding with QR code scan-to-create flow (#65680) 2026-04-13 18:03:44 +08:00
install docs: clarify optional Docker sandboxing 2026-04-20 19:27:45 +01:00
nodes
platforms docs: clarify source control-ui dev/build flow (#68814) 2026-04-19 16:48:32 +10:00
plugins fix: centralize provider thinking profiles 2026-04-21 09:13:35 +01:00
providers fix: gate max thinking by model support 2026-04-21 07:02:43 +01:00
refactor QA: organize scenarios by theme 2026-04-17 11:03:47 -04:00
reference docs: support release branch workflow 2026-04-21 05:33:21 +01:00
security
snippets/plugin-publish
start docs: clarify source control-ui dev/build flow (#68814) 2026-04-19 16:48:32 +10:00
tools fix: centralize provider thinking profiles 2026-04-21 09:13:35 +01:00
web fix(control-ui): explain pairing access upgrades 2026-04-20 13:08:04 +05:30
AGENTS.md docs(agents): split scoped workflow guidance (#65241) 2026-04-12 09:09:50 +01:00
auth-credential-semantics.md
brave-search.md
ci.md Revert "ci: use Blacksmith checkout cache" 2026-04-21 03:21:48 +01:00
CLAUDE.md docs(agents): split scoped workflow guidance (#65241) 2026-04-12 09:09:50 +01:00
date-time.md
docs.json docs: add WeChat channel guide 2026-04-18 18:26:40 +01:00
index.md
logging.md
nav-tabs-underline.js
network.md
perplexity.md
pi-dev.md
pi.md fix(agents): rename auto_compaction_start/end to compaction_start/end [AI] (#67713) 2026-04-20 11:35:40 -07:00
prose.md
style.css perf: optimize remaining core tests 2026-04-17 16:05:10 +01:00
tts.md docs: add media overview page and consolidate TTS duplicate 2026-04-06 16:18:45 +01:00
vps.md feat(docs): add Hostinger installation guide and link in VPS document… (#65904) 2026-04-13 14:12:44 +01:00
whatsapp-openclaw-ai-zh.jpg
whatsapp-openclaw.jpg