openclaw/docs
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
..
.generated feat(imessage): inbound catchup (cursor + replay loop + monitor wiring) (#79387) 2026-05-08 22:55:59 -04:00
.i18n feat(imessage): private-API support via imsg JSON-RPC [AI-assisted] (#78317) 2026-05-07 19:20:18 -07:00
assets
automation docs: add dedicated ClawHub docs tab (#79159) 2026-05-07 18:55:08 -07:00
channels feat(imessage): inbound catchup (cursor + replay loop + monitor wiring) (#79387) 2026-05-08 22:55:59 -04:00
clawhub docs: add ClawHub publishing page 2026-05-07 19:43:06 -07:00
cli revert: remove oc-path implementation 2026-05-09 03:07:12 +01:00
concepts fix(active-memory): allow active-memory to support custom recall tools (#77906) 2026-05-08 16:12:48 -05:00
debug docs: typography hygiene across 6 pages (gateway/cli/debug) 2026-05-06 08:49:27 -07:00
diagnostics feat(brave): add http diagnostics flag 2026-05-02 07:49:12 +01:00
gateway fix(daemon): include Homebrew in macOS service PATH 2026-05-08 17:59:46 -05:00
help docs(qa): document telegram e2e defaults 2026-05-08 16:14:42 +05:30
images
install fix(docker): run runtime image under tini (#78777) 2026-05-08 13:19:55 +05:30
nodes docs: document OpenAI realtime voices 2026-05-08 01:07:46 +01:00
plan Stop heartbeat tool turns from asking for HEARTBEAT_OK (#76338) 2026-05-03 13:46:26 +09:00
platforms feat: add native sqlite Kysely dialect 2026-05-07 13:07:03 +01:00
plugins docs: document codex harness model availability (#79582) 2026-05-08 18:10:15 -07:00
providers docs(github-copilot): note live catalog refresh + discovery opt-out 2026-05-08 21:55:18 -04:00
refactor fix(ci): restore main validation 2026-05-07 03:39:26 -07:00
reference ci(release): automate stable appcast handoff 2026-05-07 23:46:33 +01:00
security lint: classify raw socket callsites 2026-05-08 01:18:04 +10:00
snippets/plugin-publish docs: show explicit startup activation in plugin examples 2026-04-28 03:13:20 +01:00
start docs: add dedicated ClawHub docs tab (#79159) 2026-05-07 18:55:08 -07:00
superpowers/specs docs: complete source-backed docs sweep 2026-05-02 22:37:01 +01:00
tools fix(gateway): reset webchat /new in place when dmScope is main (#77434) (#71170) 2026-05-08 16:11:17 +02:00
web fix(gateway): reset webchat /new in place when dmScope is main (#77434) (#71170) 2026-05-08 16:11:17 +02:00
AGENTS.md docs: keep qa broker notes internal 2026-05-08 06:01:23 +01:00
auth-credential-semantics.md fix: treat aws sdk auth profiles as config metadata 2026-05-07 10:24:19 +01:00
brave-search.md docs(brave): redirect legacy search page 2026-05-02 04:42:55 +01:00
ci.md ci: run channel contract shards on blacksmith 2026-05-07 03:56:53 +01:00
CLAUDE.md
date-time.md docs: audit and fix 4 pages (pi version bump + 3 typography/H1) 2026-05-05 21:14:55 -07:00
docs.json docs: clarify BlueBubbles to imsg migration 2026-05-08 06:49:37 +01:00
index.md feat: add native sqlite Kysely dialect 2026-05-07 13:07:03 +01:00
logging.md docs(logging): document bounded Talk log records 2026-05-06 03:02:02 -07:00
nav-tabs-underline.js
network.md docs: audit and fix 4 pages (pi version bump + 3 typography/H1) 2026-05-05 21:14:55 -07:00
perplexity.md docs: consolidate moved docs pages 2026-05-05 17:38:21 +01:00
pi-dev.md docs: full-page readability pass on 5 worst-offender pages 2026-04-26 23:57:10 -07:00
pi.md docs: audit and fix 4 pages (pi version bump + 3 typography/H1) 2026-05-05 21:14:55 -07:00
prose.md docs: add Related sections to remaining platform, reference template, and misc pages 2026-04-23 20:40:15 -07:00
style.css
tts.md docs: add Related sections to remaining platform, reference template, and misc pages 2026-04-23 20:40:15 -07:00
vps.md Docs: add VPS admin hardening note (#54685) 2026-04-29 14:36:33 -07:00
whatsapp-openclaw-ai-zh.jpg
whatsapp-openclaw.jpg