diff --git a/CHANGELOG.md b/CHANGELOG.md index c6ee9c824b5..2d8b81a670f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -195,6 +195,7 @@ Docs: https://docs.openclaw.ai - Control UI/exec approvals: highlight parsed shell command fragments that may deserve extra review in approval prompts. (#77153) Thanks @jesse-merhi. - Channels/iMessage: honor `channels.imessage.groups..systemPrompt` (and the `groups["*"]` wildcard) by forwarding it as `GroupSystemPrompt` on inbound group turns, mirroring the byte-identical resolver semantic from WhatsApp where defining the key as an empty string on a specific group suppresses the wildcard fallback. Brings iMessage to parity with the per-group `systemPrompt` pattern already supported by Discord, Telegram, IRC, Slack, GoogleChat, and the retired BlueBubbles channel. Fixes #78285. (#79383) Thanks @omarshahine. - iMessage: add opt-in inbound catchup that replays messages received while the gateway was offline (crash, restart, mac sleep) on next startup. Enable with `channels.imessage.catchup.enabled: true`; tunables for `maxAgeMinutes`, `perRunLimit`, `firstRunLookbackMinutes`, and `maxFailureRetries`. Persists a per-account cursor under the OpenClaw state dir (`/imessage/catchup/`), replays each row through the live dispatch path so allowlists/group policy/dedupe behave identically on replayed and live messages, and force-advances past wedged guids after `maxFailureRetries` to prevent stuck cursors. Extends the persisted echo-cache retention window so the agent's own outbound rows from before a gap are not re-fed as inbound on replay. Includes a regenerated `src/config/bundled-channel-config-metadata.generated.ts` so the runtime AJV schema accepts the new `channels.imessage.catchup` block. Fixes #78649. (#79387) Thanks @omarshahine. +- Channels/Yuanbao: bump the bundled `openclaw-plugin-yuanbao` npm spec from `2.11.0` to `2.13.0` in the official external channel catalog and refresh the pinned integrity hash, so fresh installs and catalog-driven reinstalls pick up the newer Yuanbao channel plugin release. (#79620) Thanks @loongfay. ### Breaking diff --git a/scripts/lib/official-external-channel-catalog.json b/scripts/lib/official-external-channel-catalog.json index 5715e7e07e3..d996827ff0b 100644 --- a/scripts/lib/official-external-channel-catalog.json +++ b/scripts/lib/official-external-channel-catalog.json @@ -76,9 +76,9 @@ } }, "install": { - "npmSpec": "openclaw-plugin-yuanbao@2.11.0", + "npmSpec": "openclaw-plugin-yuanbao@2.13.0", "defaultChoice": "npm", - "expectedIntegrity": "sha512-lYmBrU71ox3v7dzRqaltvzTXPcMjjgYrNqpBj5HIBkXgEFkXRRG8wplXg9Fub41/FjsSPn3WAbYpdTc+k+jsHg==" + "expectedIntegrity": "sha512-mx6b2gO8oqZxECG9NLLQofScaIZXjmQXqJxevagVx8IKXLGeLrpTWlvnW1P2NP5dqaSMrkvBsgJqtW+rVM7h4w==" } } }, diff --git a/src/channels/plugins/catalog.test.ts b/src/channels/plugins/catalog.test.ts index d26f05d92d9..3b0867e0a57 100644 --- a/src/channels/plugins/catalog.test.ts +++ b/src/channels/plugins/catalog.test.ts @@ -24,7 +24,7 @@ describe("channel plugin catalog", () => { pluginId: "openclaw-plugin-yuanbao", trustedSourceLinkedOfficialInstall: true, install: expect.objectContaining({ - npmSpec: "openclaw-plugin-yuanbao@2.11.0", + npmSpec: "openclaw-plugin-yuanbao@2.13.0", }), }), ); diff --git a/src/channels/plugins/contracts/channel-catalog.contract.test.ts b/src/channels/plugins/contracts/channel-catalog.contract.test.ts index c0aeeee27b8..7db22d9a323 100644 --- a/src/channels/plugins/contracts/channel-catalog.contract.test.ts +++ b/src/channels/plugins/contracts/channel-catalog.contract.test.ts @@ -45,6 +45,6 @@ describeChannelCatalogEntryContract({ describeChannelCatalogEntryContract({ channelId: "yuanbao", - npmSpec: "openclaw-plugin-yuanbao@2.11.0", + npmSpec: "openclaw-plugin-yuanbao@2.13.0", alias: "yb", }); diff --git a/src/plugins/official-external-plugin-catalog.test.ts b/src/plugins/official-external-plugin-catalog.test.ts index 93b498b22a8..fe9453d47db 100644 --- a/src/plugins/official-external-plugin-catalog.test.ts +++ b/src/plugins/official-external-plugin-catalog.test.ts @@ -28,7 +28,7 @@ describe("official external plugin catalog", () => { ); expect(resolveOfficialExternalPluginId(yuanbaoByChannel)).toBe("openclaw-plugin-yuanbao"); expect(resolveOfficialExternalPluginInstall(yuanbaoByChannel)?.npmSpec).toBe( - "openclaw-plugin-yuanbao@2.11.0", + "openclaw-plugin-yuanbao@2.13.0", ); }); diff --git a/test/official-channel-catalog.test.ts b/test/official-channel-catalog.test.ts index 659667dddc6..a538ee2114a 100644 --- a/test/official-channel-catalog.test.ts +++ b/test/official-channel-catalog.test.ts @@ -124,10 +124,10 @@ describe("buildOfficialChannelCatalog", () => { label: "Yuanbao", }), install: { - npmSpec: "openclaw-plugin-yuanbao@2.11.0", + npmSpec: "openclaw-plugin-yuanbao@2.13.0", defaultChoice: "npm", expectedIntegrity: - "sha512-lYmBrU71ox3v7dzRqaltvzTXPcMjjgYrNqpBj5HIBkXgEFkXRRG8wplXg9Fub41/FjsSPn3WAbYpdTc+k+jsHg==", + "sha512-mx6b2gO8oqZxECG9NLLQofScaIZXjmQXqJxevagVx8IKXLGeLrpTWlvnW1P2NP5dqaSMrkvBsgJqtW+rVM7h4w==", }, }), }),