Skip to content

Commit 4545a0e

Browse files
committed
fix(plugins): keep launch specs production-ready
1 parent 26f2241 commit 4545a0e

7 files changed

Lines changed: 15 additions & 15 deletions

CHANGELOG.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ Docs: https://docs.openclaw.ai
1919

2020
### Fixes
2121

22-
- Plugins/externalization: pin beta-only official launch packages for ACPX, Google Chat, and LINE to explicit npm beta specs so catalog-driven installs do not trip the prerelease safety guard while npm `latest` still points at beta. Thanks @vincentkoc.
23-
- CLI/doctor: keep missing-plugin repair from overriding official catalog metadata with runtime fallbacks, so ACPX repairs preserve the beta npm spec during the externalization rollout. Thanks @vincentkoc.
22+
- Plugins/externalization: keep official ACPX, Google Chat, and LINE install specs on production package names, leaving beta-tag probing to the explicit OpenClaw beta update channel. Thanks @vincentkoc.
23+
- CLI/doctor: keep missing-plugin repair from overriding official catalog metadata with runtime fallbacks, so ACPX repairs preserve the official npm spec during the externalization rollout. Thanks @vincentkoc.
2424
- Plugins/catalog: preserve ClawHub install specs when generating the packaged channel catalog so future storepack-first channel plugins keep their remote source instead of becoming npm-only. Thanks @vincentkoc.
2525
- Plugins/update: treat catalog-matched official npm updates and OpenClaw-authored externalized-bundled npm bridges as trusted official installs so launch-code plugins can update or migrate out of the bundled tree without scanner false positives. Thanks @vincentkoc.
2626
- Plugins/onboarding: fall back from ClawHub to npm only for missing package/version errors, keeping integrity and verification failures fail-closed during storepack rollout. Thanks @vincentkoc.

scripts/lib/official-external-channel-catalog.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@
176176
]
177177
},
178178
"install": {
179-
"npmSpec": "@openclaw/googlechat@beta",
179+
"npmSpec": "@openclaw/googlechat",
180180
"defaultChoice": "npm",
181181
"minHostVersion": ">=2026.4.10"
182182
}
@@ -201,7 +201,7 @@
201201
"quickstartAllowFrom": true
202202
},
203203
"install": {
204-
"npmSpec": "@openclaw/line@beta",
204+
"npmSpec": "@openclaw/line",
205205
"defaultChoice": "npm",
206206
"minHostVersion": ">=2026.4.10"
207207
}

scripts/lib/official-external-plugin-catalog.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"label": "ACPX Runtime"
1212
},
1313
"install": {
14-
"npmSpec": "@openclaw/acpx@beta",
14+
"npmSpec": "@openclaw/acpx",
1515
"defaultChoice": "npm",
1616
"minHostVersion": ">=2026.4.25"
1717
}

src/commands/doctor/shared/missing-configured-plugin-install.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,7 @@ describe("repairMissingConfiguredPluginInstalls", () => {
423423
id: "acpx",
424424
label: "ACPX Runtime",
425425
install: {
426-
npmSpec: "@openclaw/acpx@beta",
426+
npmSpec: "@openclaw/acpx",
427427
defaultChoice: "npm",
428428
},
429429
},
@@ -442,13 +442,13 @@ describe("repairMissingConfiguredPluginInstalls", () => {
442442

443443
expect(mocks.installPluginFromNpmSpec).toHaveBeenCalledWith(
444444
expect.objectContaining({
445-
spec: "@openclaw/acpx@beta",
445+
spec: "@openclaw/acpx",
446446
expectedPluginId: "acpx",
447447
trustedSourceLinkedOfficialInstall: true,
448448
}),
449449
);
450450
expect(result.changes).toEqual([
451-
'Installed missing configured plugin "acpx" from @openclaw/acpx@beta.',
451+
'Installed missing configured plugin "acpx" from @openclaw/acpx.',
452452
]);
453453
});
454454

src/commands/doctor/shared/missing-configured-plugin-install.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ const RUNTIME_PLUGIN_INSTALL_CANDIDATES: readonly DownloadableInstallCandidate[]
4444
{
4545
pluginId: "acpx",
4646
label: "ACPX Runtime",
47-
npmSpec: "@openclaw/acpx@beta",
47+
npmSpec: "@openclaw/acpx",
4848
trustedSourceLinkedOfficialInstall: true,
4949
},
5050
// Runtime-only configs do not have a provider/channel integration catalog entry.

src/plugins/official-external-plugin-catalog.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,17 @@ describe("official external plugin catalog", () => {
2323
);
2424
});
2525

26-
it("opts current beta-only official launch packages into prerelease npm tags", () => {
26+
it("keeps official launch package specs on the production package names", () => {
2727
expect(
2828
resolveOfficialExternalPluginInstall(getOfficialExternalPluginCatalogEntry("acpx")!)?.npmSpec,
29-
).toBe("@openclaw/acpx@beta");
29+
).toBe("@openclaw/acpx");
3030
expect(
3131
resolveOfficialExternalPluginInstall(getOfficialExternalPluginCatalogEntry("googlechat")!)
3232
?.npmSpec,
33-
).toBe("@openclaw/googlechat@beta");
33+
).toBe("@openclaw/googlechat");
3434
expect(
3535
resolveOfficialExternalPluginInstall(getOfficialExternalPluginCatalogEntry("line")!)?.npmSpec,
36-
).toBe("@openclaw/line@beta");
36+
).toBe("@openclaw/line");
3737
});
3838

3939
it("keeps Matrix and Mattermost out of the external catalog until cutover", () => {

src/plugins/update.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,7 @@ describe("updateNpmInstalledPlugins", () => {
489489
await updateNpmInstalledPlugins({
490490
config: createNpmInstallConfig({
491491
pluginId: "acpx",
492-
spec: "@openclaw/acpx@beta",
492+
spec: "@openclaw/acpx",
493493
installPath,
494494
resolvedName: "@openclaw/acpx",
495495
resolvedSpec: "@openclaw/[email protected]",
@@ -500,7 +500,7 @@ describe("updateNpmInstalledPlugins", () => {
500500

501501
expect(installPluginFromNpmSpecMock).toHaveBeenCalledWith(
502502
expect.objectContaining({
503-
spec: "@openclaw/acpx@beta",
503+
spec: "@openclaw/acpx",
504504
expectedPluginId: "acpx",
505505
trustedSourceLinkedOfficialInstall: true,
506506
}),

0 commit comments

Comments
 (0)