openclaw/docs/channels
Omar Shahine 81e0a1a99b
feat(imessage): inbound catchup (cursor + replay loop + monitor wiring) (#79387)
Closes #78649. Adds opt-in inbound iMessage catchup that recovers messages landing in chat.db while the gateway is offline (crash, restart, mac sleep). Mirrors the design of the retired BlueBubbles catchup, adapted for the imsg JSON-RPC chats.list + messages.history fetch path.

- Schema: new channels.imessage.catchup block with enabled / maxAgeMinutes (1..720) / perRunLimit (1..500) / firstRunLookbackMinutes (1..720) / maxFailureRetries (1..1000). Disabled by default — opt-in.
- Cursor + replay loop (extensions/imessage/src/monitor/catchup.ts): per-account state under <openclawStateDir>/imessage/catchup/. Walks rows oldest-first, advances on success/give-up, holds at failed.rowid - 1 when a failure is below maxFailureRetries (cannot leapfrog held failures even when later rows in the same batch succeed). Watermark floor for parse-rejected rows.
- Bridge (extensions/imessage/src/monitor/catchup-bridge.ts): live chats.list + per-chat messages.history fetch adapter; dispatch adapter routes through the live handleMessageNow path so allowlists / group policy / dedupe / echo cache behave identically on replayed and live messages. Watermark clamped to last dispatched rowid when the cap truncates.
- Monitor wiring (extensions/imessage/src/monitor/monitor-provider.ts): catchup runs once between watch.subscribe and the live dispatch loop when enabled. Bypasses the inbound debouncer for serial per-row dispatch.
- Echo-cache TTL bumped 2 min → 12 h so own outbound rows from before a gap are not re-fed as inbound on replay.
- Generated bundled-channel-config-metadata.generated.ts so the runtime AJV schema accepts the new catchup block.
- Docs: new "Catching up after gateway downtime" section + BlueBubbles migration parity update.

Tests: 322/322 in extensions/imessage/, including 5 regression tests covering the cursor-leapfrog, parse-rejected stall, watermark vs held failure, and cap-truncation-cursor-floor edge cases that codex (gpt-5.4) and clawsweeper (gpt-5.5) found during review. Live-tested end-to-end against the running gateway: replayed=1 fetchedCount=1, agent reply observed, cursor persisted at the test row's exact rowid.

Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 22:55:59 -04:00
..
access-groups.md docs: document access groups 2026-05-01 23:58:52 +01:00
broadcast-groups.md fix(docs): validate strict channel json fences 2026-05-03 15:44:44 -07:00
channel-routing.md docs: typography hygiene across 7 high-traffic pages 2026-05-05 22:16:37 -07:00
discord.md feat(discord): add realtime voice modes 2026-05-08 09:16:04 -04:00
feishu.md fix(feishu): keep topic sessions stable 2026-05-06 07:30:27 +01:00
googlechat.md docs: typography hygiene across 6 pages (channels/nodes/mac platforms) 2026-05-05 23:11:28 -07:00
group-messages.md docs: typography hygiene across 7 high-traffic pages 2026-05-05 22:16:37 -07:00
groups.md docs(imessage): make imsg the supported setup path 2026-05-07 12:53:01 -07:00
imessage-from-bluebubbles.md feat(imessage): inbound catchup (cursor + replay loop + monitor wiring) (#79387) 2026-05-08 22:55:59 -04:00
imessage.md feat(imessage): inbound catchup (cursor + replay loop + monitor wiring) (#79387) 2026-05-08 22:55:59 -04:00
index.md feat(imessage): private-API support via imsg JSON-RPC [AI-assisted] (#78317) 2026-05-07 19:20:18 -07:00
irc.md docs: typography hygiene across 6 pages (channels/nodes/mac platforms) 2026-05-05 23:11:28 -07:00
line.md docs(channels/line): fix smart apostrophe 2026-05-05 23:53:36 -07:00
location.md docs(channels,nodes): add Related sections to pages missing them 2026-04-23 15:43:47 -07:00
matrix-migration.md docs: update plugin npm distribution guidance 2026-05-02 22:00:37 +01:00
matrix-push-rules.md chore(docs): dedupe and simplify matrix docs 2026-04-27 00:52:04 -04:00
matrix.md docs: typography hygiene + 2 in-body H1 removals across 5 pages 2026-05-05 19:54:53 -07:00
mattermost.md docs: typography hygiene across 6 pages 2026-05-05 20:45:39 -07:00
msteams.md docs(msteams): document replyStyle resolution precedence and thread context preservation (#78835) 2026-05-07 18:09:46 +10:00
nextcloud-talk.md fix(plugins): use default tags for official plugin installs 2026-05-02 14:47:53 -07:00
nostr.md fix(plugins): use default tags for official plugin installs 2026-05-02 14:47:53 -07:00
pairing.md docs(imessage): make imsg the supported setup path 2026-05-07 12:53:01 -07:00
qa-channel.md docs: typography hygiene + 1 in-body H1 removal across 6 pages 2026-05-05 20:26:16 -07:00
qqbot.md fix(docs): validate channel config snippets 2026-05-03 15:23:07 -07:00
signal.md docs: audit and fix 3 pages (typography across help/channels) 2026-05-05 21:28:47 -07:00
slack.md docs: clarify Slack thread sessions (#79221) 2026-05-07 23:36:37 -04:00
synology-chat.md fix: guard provider-prefixed delivery targets 2026-05-02 05:30:41 +01:00
telegram.md docs(telegram): document reply-chain cache 2026-05-08 13:08:46 +05:30
tlon.md fix(tlon): expose group invite allowlist 2026-05-03 15:15:58 -07:00
troubleshooting.md docs(imessage): make imsg the supported setup path 2026-05-07 12:53:01 -07:00
twitch.md fix(plugins): use default tags for official plugin installs 2026-05-02 14:47:53 -07:00
wechat.md fix(plugins): explain source-only package diagnostics (#77835) (#77842) 2026-05-05 17:43:13 -07:00
whatsapp.md fix: explain missing git during plugin install 2026-05-05 05:14:09 +01:00
yuanbao.md docs: typography hygiene + drop one in-body H1 across 5 pages 2026-05-05 19:46:32 -07:00
zalo.md fix(plugins): use default tags for official plugin installs 2026-05-02 14:47:53 -07:00
zalouser.md docs: typography hygiene across 9 pages (cli/channels) 2026-05-06 08:55:00 -07:00