openclaw/extensions/bluebubbles/src
Omar Shahine 85cfba675a
fix(bluebubbles): lazy-refresh Private API status on send (#43764) (#65447)
* fix(bluebubbles): lazy refresh Private API cache on send to prevent silent reply threading degradation (#43764)

When the 10-minute server info cache expires, sends requesting reply
threading or effects silently degrade to plain messages. Add a lazy
async refresh of the cache in the send path when Private API features
are needed but status is unknown, preserving graceful degradation if
the refresh fails.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(bluebubbles): apply lazy Private API refresh to attachment sends and add missing test coverage (#43764)

Attachment sends had the same cache-expiry bug as text sends: when the
10-minute Private API status cache TTL expired, reply threading metadata
was silently dropped. Apply the same lazy-refresh pattern from send.ts.

Also add the missing "refresh succeeds with private_api: false" test case
for both send.ts and attachments.ts — proves effects throw and reply
threading degrades without the "unknown" warning when the API is explicitly
disabled.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: update no-raw-channel-fetch allowlist for test-harness line shift

Adding fetchBlueBubblesServerInfo to the probe mock module shifted
globalThis.fetch in test-harness.ts from line 128 to 130.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Lobster <lobster@shahine.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 11:03:47 -07:00
..
test-support test: tighten bluebubbles monitor runtime typing 2026-04-04 01:07:28 +09:00
account-resolve.test.ts fix(bluebubbles): localhost probe respects private-network opt-out (#59373) 2026-04-07 11:29:21 -05:00
account-resolve.ts fix(bluebubbles): localhost probe respects private-network opt-out (#59373) 2026-04-07 11:29:21 -05:00
accounts-normalization.ts refactor: dedupe repeated test helpers 2026-04-08 09:58:22 +01:00
accounts.ts refactor: dedupe repeated test helpers 2026-04-08 09:58:22 +01:00
actions-api.ts refactor(plugins): narrow bundled channel core seams 2026-04-04 07:39:53 +01:00
actions-contract.ts refactor(plugins): narrow bundled channel core seams 2026-04-04 07:39:53 +01:00
actions.runtime.ts test: narrow bluebubbles reply-cache imports 2026-04-03 14:16:29 +01:00
actions.test.ts fix: honor bluebubbles action discovery account config 2026-04-03 11:11:58 -05:00
actions.ts refactor: dedupe extension lowercase readers 2026-04-07 12:18:01 +01:00
attachments.test.ts fix(bluebubbles): lazy-refresh Private API status on send (#43764) (#65447) 2026-04-13 11:03:47 -07:00
attachments.ts fix(bluebubbles): lazy-refresh Private API status on send (#43764) (#65447) 2026-04-13 11:03:47 -07:00
channel-shared.ts refactor: share webhook channel status helpers 2026-03-29 02:11:22 +01:00
channel.pairing.test.ts test: speed up bluebubbles pairing tests 2026-04-07 13:59:09 +01:00
channel.runtime.ts test: narrow bluebubbles reply-cache imports 2026-04-03 14:16:29 +01:00
channel.setup.ts perf(plugins): narrow boundary compile sdk imports 2026-04-08 08:52:51 +01:00
channel.status.test.ts fix(bluebubbles): localhost probe respects private-network opt-out (#59373) 2026-04-07 11:29:21 -05:00
channel.ts fix(bluebubbles): localhost probe respects private-network opt-out (#59373) 2026-04-07 11:29:21 -05:00
chat.test.ts
chat.ts refactor: trim bluebubbles runtime seams 2026-03-28 02:21:34 +00:00
config-apply.ts perf(plugins): narrow boundary compile sdk imports 2026-04-08 08:52:51 +01:00
config-schema.ts fix(config): migrate bundled private-network aliases (#60862) 2026-04-05 08:49:44 +01:00
config-ui-hints.ts perf(plugins): narrow boundary compile sdk imports 2026-04-08 08:52:51 +01:00
conversation-bindings.test.ts test: fix cron and binding stability 2026-04-11 02:10:47 +01:00
conversation-bindings.ts refactor: dedupe account conversation bindings 2026-04-06 17:18:36 +01:00
conversation-id.ts feat(acp): add conversation binds for message channels 2026-03-28 01:54:25 +00:00
conversation-route.test.ts fix(ci): reset BlueBubbles binding adapter fixtures 2026-04-11 01:21:59 +01:00
conversation-route.ts feat(acp): add conversation binds for message channels 2026-03-28 01:54:25 +00:00
doctor-contract.ts refactor: dedupe legacy private-network doctor contracts 2026-04-06 17:28:11 +01:00
doctor.test.ts fix: resolve channel typing regressions 2026-04-06 17:43:57 +01:00
doctor.ts refactor: dedupe doctor compatibility adapters 2026-04-06 17:25:36 +01:00
group-policy.ts
history.ts style: fix extension lint violations 2026-04-06 14:53:55 +01:00
local-file-access.ts refactor: dedupe provider lowercase helpers 2026-04-07 15:53:50 +01:00
media-send.test.ts test: narrow bluebubbles reply-cache imports 2026-04-03 14:16:29 +01:00
media-send.ts refactor: dedupe path lowercase helpers 2026-04-07 22:57:52 +01:00
monitor-debounce.ts lint: enable small oxlint rules 2026-04-11 02:15:21 +01:00
monitor-normalize.test.ts fix(bluebubbles): enable group participant enrichment by default, add fallback fetch and handle field aliases 2026-03-26 05:45:41 -07:00
monitor-normalize.ts refactor: dedupe messaging lowercase helpers 2026-04-07 15:53:49 +01:00
monitor-processing-api.ts refactor(extensions): split channel runtime helper seams 2026-04-04 07:39:53 +01:00
monitor-processing.ts refactor: simplify typed conversions 2026-04-11 01:01:30 +01:00
monitor-reply-cache.ts refactor: dedupe helper alias readers 2026-04-07 08:40:34 +01:00
monitor-self-chat-cache.test.ts
monitor-self-chat-cache.ts refactor: dedupe helper alias readers 2026-04-07 08:40:34 +01:00
monitor-shared.ts perf(plugins): narrow boundary compile sdk imports 2026-04-08 08:52:51 +01:00
monitor.test.ts fix: preserve outbound sender policy context 2026-04-10 17:48:58 -05:00
monitor.ts fix(bluebubbles): localhost probe respects private-network opt-out (#59373) 2026-04-07 11:29:21 -05:00
monitor.webhook-auth.test.ts style: fix extension lint violations 2026-04-06 14:53:55 +01:00
monitor.webhook.test-helpers.ts fix(types): annotate portable exported helper types 2026-04-04 03:57:47 +09:00
multipart.ts refactor: trim bluebubbles runtime seams 2026-03-28 02:21:34 +00:00
pairing.ts test: speed up bluebubbles pairing tests 2026-04-07 13:59:09 +01:00
participant-contact-names.test.ts BlueBubbles: enrich group participants with local Contacts names (#54984) 2026-03-26 18:38:37 +09:00
participant-contact-names.ts refactor: dedupe bluebubbles and zalouser readers 2026-04-07 08:40:34 +01:00
probe.ts refactor: dedupe runtime helper aliases 2026-04-07 09:44:53 +01:00
reactions.test.ts fix(extensions): route fetch calls through fetchWithSsrFGuard (#53929) 2026-03-26 02:04:54 -07:00
reactions.ts refactor: dedupe feishu and bluebubbles lowercase helpers 2026-04-07 13:44:41 +01:00
request-url.ts test(bluebubbles): narrow request-url export 2026-04-03 20:36:24 +09:00
runtime-api.ts refactor(plugins): narrow bundled channel core seams 2026-04-04 07:39:53 +01:00
runtime.ts
secret-contract.ts chore(lint): clear extension lint regressions and add #63416 changelog 2026-04-08 17:17:29 -07:00
secret-input.ts
send-helpers.ts refactor: dedupe bluebubbles send record helper 2026-04-06 22:54:48 +01:00
send.test.ts fix(bluebubbles): lazy-refresh Private API status on send (#43764) (#65447) 2026-04-13 11:03:47 -07:00
send.ts fix(bluebubbles): lazy-refresh Private API status on send (#43764) (#65447) 2026-04-13 11:03:47 -07:00
session-route.ts refactor(extensions): split channel runtime helper seams 2026-04-04 07:39:53 +01:00
setup-core.ts fix: resolve channel typing regressions 2026-04-06 17:43:57 +01:00
setup-surface.test.ts fix(bluebubbles): localhost probe respects private-network opt-out (#59373) 2026-04-07 11:29:21 -05:00
setup-surface.ts lint: enable small oxlint rules 2026-04-11 02:15:21 +01:00
status-issues.test.ts refactor(plugins): narrow bundled channel core seams 2026-04-04 07:39:53 +01:00
status-issues.ts fix(bluebubbles): remove status type barrel cycle 2026-04-09 09:22:11 +01:00
targets.ts refactor: dedupe messaging lowercase helpers 2026-04-07 15:53:49 +01:00
test-harness.ts fix(bluebubbles): lazy-refresh Private API status on send (#43764) (#65447) 2026-04-13 11:03:47 -07:00
test-mocks.ts
types.ts fix(config): migrate bundled private-network aliases (#60862) 2026-04-05 08:49:44 +01:00
webhook-ingress.ts test(bluebubbles): split webhook ingress seam 2026-04-03 20:58:03 +09:00
webhook-shared.ts refactor: dedupe bluebubbles readers 2026-04-07 06:55:45 +01:00