#9196: Fix: Use local plugins for unpublished npm packages
channel: googlechat
channel: line
channel: mattermost
channel: tlon
commands
stale
Fixes #9189
This PR fixes the issue where users encounter 404 errors when trying to install Google Chat and other channel plugins during setup.
## Problem
Four channel plugins were configured to download from npm (defaultChoice: npm), but were never published to the npm registry:
- @openclaw/googlechat
- @openclaw/mattermost
- @openclaw/line
- @openclaw/tlon
Users selecting these channels during setup would see:
```
npm error 404 Not Found - GET https://registry.npmjs.org/@openclaw%2fgooglechat
```
## Solution
Changed defaultChoice from npm to local for all four plugins. This makes the setup wizard use the bundled versions from extensions/*/ instead of attempting npm downloads.
## Testing
- ✅ Verified each package does NOT exist on npm
- ✅ Confirmed bundled versions exist in extensions/
- ✅ Changes are minimal (4 lines total)
- ✅ No breaking changes
## Impact
Users can now successfully install these channel plugins during initial setup.
<!-- greptile_comment -->
<h2>Greptile Overview</h2>
<h3>Greptile Summary</h3>
This PR changes the onboarding install preference for four bundled channel plugins (`googlechat`, `mattermost`, `line`, `tlon`) by switching their `openclaw.install.defaultChoice` from `"npm"` to `"local"` in `extensions/*/package.json`. The intent is to prevent the setup wizard from attempting `npm` downloads for packages that aren’t published to the npm registry, and instead use the bundled copies under `extensions/`.
The change plugs into the existing channel plugin catalog and onboarding installer flow, where `defaultChoice` influences the initial selection when prompting users to install a plugin (unless overridden by `update.channel`).
<h3>Confidence Score: 3/5</h3>
- This PR is likely safe, but may not fully fix the reported onboarding 404s in stable/beta configurations.
- Changes are limited to four `package.json` fields and match the manifest type (`"npm"|"local"`). Main remaining concern is behavioral: onboarding forces npm when `update.channel` is `stable` or `beta`, which can still trigger 404s for unpublished packages regardless of `defaultChoice`.
- src/commands/onboarding/plugin-install.ts (default choice override), plus the four edited extensions/*/package.json files
<!-- greptile_other_comments_section -->
<!-- /greptile_comment -->
Most Similar PRs
#12849: fix(plugins): fallback bundled channel specs when npm install retur...
by vincentkoc · 2026-02-09
79.0%
#2556: fix(plugin-install): handle existing plugins and filter workspace deps
by longmaba · 2026-01-27
78.6%
#7090: fix: plugin install uses manifest ID for folder name (#2796)
by dial481 · 2026-02-02
76.0%
#11454: fix(plugins): remove workspace:* from extension dependencies
by AnonO6 · 2026-02-07
74.7%
#18966: fix(config): downgrade unknown bundled plugin references to warnings
by moxunjinmu · 2026-02-17
74.5%
#19941: fix(nostr): move openclaw from devDependencies to peerDependencies
by AustinEral · 2026-02-18
73.9%
#20055: fix(plugins): strip workspace:* dev-deps before npm install
by openperf · 2026-02-18
73.5%
#8500: fix: Remove workspace:* from devDependencies in voice-call plugin
by ImBIOS · 2026-02-04
73.4%
#8073: fix(plugins): add --ignore-scripts to npm install
by yubrew · 2026-02-03
73.3%
#19717: fix: load plugin registry before channel commands run
by MisterGuy420 · 2026-02-18
73.0%