Skip to content

Commit 0fca665

Browse files
committed
docs(imessage): document bluebubbles deprecation
1 parent 2597723 commit 0fca665

6 files changed

Lines changed: 49 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ Docs: https://docs.openclaw.ai
1616
- Discord/voice: make `openclaw channels capabilities --channel discord --target channel:<id>` and `channels status --probe` audit voice-channel permissions, including auto-join targets, so missing Connect/Speak/Read Message History permissions show up before `/vc join`.
1717
- Channels CLI: make `openclaw channels list` channel-only — drop the `Auth providers (OAuth + API keys)` block (use `openclaw models auth list`), drop the per-provider usage/quota fetch and the `--no-usage` flag (use `openclaw status` or `openclaw models list`), add `--all` to surface bundled-unconfigured, catalog-not-installed, and catalog-installed-but-unconfigured channels, and render explicit `installed` / `configured` / `enabled` tags per row plus an `origin` + `installed` field in JSON. Fixes WeCom-class catalog channels disappearing from `--all` when installed on disk but not yet configured. (#78456) Thanks @sliverp.
1818
- CLI/cron: add computed `status` field to `cron list --json` and `cron show <id> --json` output, mirroring the human-readable status column (disabled/running/ok/error/skipped/idle) so external tooling can determine job state without re-deriving it from raw state fields. (#78701) Thanks @aweiker.
19-
- Channels/iMessage: remove the bundled BlueBubbles channel surface and docs, make `imsg` the supported iMessage setup path, and report non-macOS default `imsg` configs with remote-Mac wrapper guidance.
2019
- Discord/voice: make voice capture less choppy by extending the default post-speech silence grace to 2.5s, add `voice.captureSilenceGraceMs` for noisy Discord sessions, and tighten the spoken-output prompt around live STT fragments. Thanks @vincentkoc.
2120
- Discord/streaming: default Discord replies to progress draft previews so tool/work activity appears in one edited Discord message unless `channels.discord.streaming.mode` is set to `off`.
2221
- OpenAI: support `openai/chat-latest` as an explicit direct API-key model override for trying the moving ChatGPT Instant API alias without changing the stable default model.
@@ -147,6 +146,10 @@ Docs: https://docs.openclaw.ai
147146
- Config/Nix: keep startup-derived plugin enablement, gateway auth tokens, control UI origins, and owner-display secrets runtime-only instead of rewriting `openclaw.json`; in Nix mode, config writers, mutating `openclaw update`, plugin lifecycle mutators, and doctor repair/token-generation now refuse with agent-first nix-openclaw guidance. (#78047) Thanks @joshp123.
148147
- Agents/context engine: invalidate cached assembled context views when source history shrinks or assembly fails, preventing stale pre-reset history from being reused. Fixes #77968. (#78163) Thanks @brokemac79 and @ChrisBot2026.
149148

149+
### Breaking
150+
151+
- Channels/iMessage: remove the bundled BlueBubbles channel surface and deprecate BlueBubbles-backed iMessage setup in OpenClaw. Existing `channels.bluebubbles` configs must migrate to `channels.imessage` using `imsg` on a signed-in Mac or an SSH wrapper, and non-macOS default `imsg` configs now report remote-Mac wrapper guidance.
152+
150153
### Fixes
151154

152155
- Docs/Docker: document a local Compose override for Docker Desktop DNS failures in the shared-network `openclaw-cli` sidecar, keeping the default compose setup hardened while unblocking `openclaw plugins install` when users opt in. Fixes #79018. Thanks @Jason-Vaughan.

docs/channels/imessage.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ title: "iMessage"
1010
For OpenClaw iMessage deployments, use `imsg` on a signed-in macOS Messages host. If your Gateway runs on Linux or Windows, point `channels.imessage.cliPath` at an SSH wrapper that runs `imsg` on the Mac.
1111
</Note>
1212

13+
<Warning>
14+
BlueBubbles is deprecated and no longer ships as a bundled OpenClaw channel. Migrate `channels.bluebubbles` configs to `channels.imessage`; OpenClaw now supports iMessage through `imsg` only. If you still need a BlueBubbles-backed bridge, publish or install it as a third-party plugin outside core.
15+
</Warning>
16+
1317
Status: native external CLI integration. Gateway spawns `imsg rpc` and communicates over JSON-RPC on stdio (no separate daemon/port).
1418

1519
<CardGroup cols={3}>

docs/docs.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@
5252
]
5353
},
5454
"redirects": [
55+
{
56+
"source": "/channels/bluebubbles",
57+
"destination": "/channels/imessage"
58+
},
5559
{
5660
"source": "/install/migrating-matrix",
5761
"destination": "/channels/matrix-migration"

docs/gateway/config-channels.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -585,6 +585,8 @@ When Mattermost native commands are enabled:
585585

586586
OpenClaw spawns `imsg rpc` (JSON-RPC over stdio). No daemon or port required. This is the preferred path for new OpenClaw iMessage setups when the host can grant Messages database and Automation permissions.
587587

588+
BlueBubbles is deprecated and no longer ships as a bundled OpenClaw channel. Migrate `channels.bluebubbles` configs to `channels.imessage`; third-party BlueBubbles bridges belong outside core.
589+
588590
If the Gateway is not running on the signed-in Messages Mac, keep `channels.imessage.enabled=true` and set `channels.imessage.cliPath` to an SSH wrapper that runs `imsg "$@"` on that Mac. The default local `imsg` path is macOS-only.
589591

590592
```json5

scripts/github/barnacle-auto-response.mjs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,13 @@ const rules = [
6060
close: true,
6161
message: thirdPartyExtensionMessage,
6262
},
63+
{
64+
label: "r: bluebubbles",
65+
close: true,
66+
commentTriggers: ["bluebubbles", "blue bubbles"],
67+
message:
68+
"BlueBubbles is deprecated and no longer ships as a bundled OpenClaw channel. Use iMessage via `imsg` instead: https://docs.openclaw.ai/channels/imessage. If this needs to stay BlueBubbles-backed, publish it as a third-party plugin on ClawHub instead of adding it back to core.",
69+
},
6370
{
6471
label: "r: moltbook",
6572
close: true,
@@ -104,6 +111,10 @@ export const managedLabelSpecs = {
104111
color: "5319E7",
105112
description: "Auto-close: third-party plugins/capabilities belong on ClawHub.",
106113
},
114+
"r: bluebubbles": {
115+
color: "D93F0B",
116+
description: "Auto-close: BlueBubbles is deprecated; use iMessage via imsg or ClawHub.",
117+
},
107118
"r: moltbook": {
108119
color: "B60205",
109120
description: "Auto-close and lock: Moltbook is off-topic for OpenClaw.",

test/scripts/barnacle-auto-response.test.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,7 @@ describe("barnacle-auto-response", () => {
230230
expect(managedLabelSpecs["r: support"].description).toContain("support requests");
231231
expect(managedLabelSpecs["r: false-positive"].description).toContain("false positive");
232232
expect(managedLabelSpecs["r: third-party-extension"].description).toContain("ClawHub");
233+
expect(managedLabelSpecs["r: bluebubbles"].description).toContain("deprecated");
233234
expect(managedLabelSpecs["r: too-many-prs"].description).toContain("twenty active PRs");
234235
expect(managedLabelSpecs[PROOF_SUPPLIED_LABEL].color).toBe("C2E0C6");
235236
expect(managedLabelSpecs[PROOF_SUFFICIENT_LABEL].color).toBe("0E8A16");
@@ -817,6 +818,29 @@ describe("barnacle-auto-response", () => {
817818
expect(calls.update).toContainEqual(expect.objectContaining({ state: "closed" }));
818819
});
819820

821+
it("closes manually labeled BlueBubbles requests with imsg migration guidance", async () => {
822+
const { calls, github } = barnacleGithub([]);
823+
824+
await runBarnacleAutoResponse({
825+
github,
826+
context: barnacleIssueContext({}, ["r: bluebubbles"], {
827+
action: "labeled",
828+
label: { name: "r: bluebubbles" },
829+
sender: { login: "maintainer", type: "User" },
830+
}),
831+
core: {
832+
info: () => undefined,
833+
},
834+
});
835+
836+
expect(calls.createComment).toContainEqual(
837+
expect.objectContaining({
838+
body: expect.stringContaining("/channels/imessage"),
839+
}),
840+
);
841+
expect(calls.update).toContainEqual(expect.objectContaining({ state: "closed" }));
842+
});
843+
820844
it("keeps bot-applied candidate labels passive", async () => {
821845
const { calls, github } = barnacleGithub([file("extensions/example/openclaw.plugin.json")]);
822846

0 commit comments

Comments
 (0)