Skip to content

Rename OpenClaw plugin to agent-wechat (id + npm package) for openclaw 2026.8.x - #174

Merged
thisnick merged 3 commits into
mainfrom
nick/rename-openclaw-channel-id
Aug 31, 2026
Merged

Rename OpenClaw plugin to agent-wechat (id + npm package) for openclaw 2026.8.x#174
thisnick merged 3 commits into
mainfrom
nick/rename-openclaw-channel-id

Conversation

@thisnick

Copy link
Copy Markdown
Owner

Why

OpenClaw 2026.8.x broke the plugin two ways:

  1. Official catalog hijack: the plugin catalog is now compiled into openclaw's JS bundle (takes precedence over dist/channel-catalog.json, so the old image patch became a no-op) and reserves wechat/weixin/微信 as aliases of Tencent's @tencent-weixin/openclaw-weixin. plugins install wrote plugins.entries.openclaw-weixin and channels add --channel wechat tried to install the Tencent plugin.
  2. The bare openclaw/plugin-sdk export was removed (subpaths only).

What

  • Plugin/channel id wechatagent-wechat; config moves to channels.agent-wechat; legacyPluginIds: ["wechat"] declared
  • npm package @agent-wechat/wechat@agent-wechat/agent-wechat (openclaw validates plugin ids against the unscoped npm basename; update flows hard-fail on mismatch)
  • Imports moved to openclaw/plugin-sdk/core (exists since 2026.5.12); .d.ts shim for plugin-sdk/channel-targets which ships without types
  • channelConfigs added to package.json#openclaw; wechat:-prefixed targets/allowlist entries still accepted
  • Bootstrap 0.11.15 already published manually; trusted publisher configured, so CI publishes via OIDC as before

Tested

Full E2E in Docker against ghcr.io/openclaw/openclaw:2026.8.1: npm install (no warnings, no hijack), channels add --channel agent-wechat, gateway boot with plugin loaded, and live handshake against a real agent-wechat server container (reports logged_out until QR login). 14/14 unit tests, typecheck, build.

Migration

Rename channels.wechatchannels.agent-wechat and drop plugins.entries.wechat/openclaw-weixin; reinstall the plugin under the new package name. Sessions reset (routing keys include the channel id).

🤖 Generated with Claude Code

thisnick and others added 3 commits August 31, 2026 07:36
…w 2026.8.x

OpenClaw's official plugin catalog (now compiled into its JS bundle) reserves
"wechat"/"weixin" as aliases of @tencent-weixin/openclaw-weixin, hijacking
this plugin's id: installs get written as plugins.entries.openclaw-weixin and
channels add --channel wechat tries to install the Tencent plugin. Renaming
the id is the only robust fix — patching dist/channel-catalog.json no longer
works since the bundled JS entries take precedence.

Also:
- switch bare openclaw/plugin-sdk imports to openclaw/plugin-sdk/core (bare
  export removed in 2026.8.x; core exists since 2026.5.12)
- add channelConfigs to package.json#openclaw (new manifest read path)
- local .d.ts shim for plugin-sdk/channel-targets (ships without types)
- keep accepting wechat:-prefixed targets/allowlist entries for back-compat

Migration: rename channels.wechat -> channels.agent-wechat and
plugins.entries.wechat/openclaw-weixin -> plugins.entries.agent-wechat.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
OpenClaw derives/validates plugin ids from the unscoped npm package basename:
- packageNameMatchesId() flags @agent-wechat/wechat (basename "wechat") vs
  plugin id "agent-wechat" as a mismatch on every install
- update/config-driven installs pass expectedPluginId and hard-fail with
  PLUGIN_ID_MISMATCH across the rename

Publishing as @agent-wechat/agent-wechat makes basename == plugin id, so all
id derivation and ownership checks line up. Also declare
legacyPluginIds: ["wechat"] in openclaw.plugin.json to hook openclaw's
plugin-rename mechanism.

First release under the new name must be published manually before OIDC
trusted publishing can be configured (see dev-notes/release.md); then
deprecate @agent-wechat/wechat.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
0.11.15 was published manually with a one-off token (OIDC trusted publishing
requires the package to exist first); the trusted publisher is configured on
npmjs.com so CI keeps publishing via OIDC — no workflow changes needed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@thisnick
thisnick merged commit 8d270c5 into main Aug 31, 2026
4 checks passed
@thisnick
thisnick deleted the nick/rename-openclaw-channel-id branch August 31, 2026 15:14
@github-actions github-actions Bot mentioned this pull request Aug 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant