fix(channels): show missing external channel config#82849
Conversation
2a14bfe to
7002a8e
Compare
|
Verification for 7002a8e:
Known gap: full packaged 2026.4.27 to 2026.5.12 upgrade and live Discord gateway connection were not tested; regression coverage exercises the missing Discord plugin case in text and JSON |
|
ClawSweeper status: review started. I am starting a fresh review of this pull request: fix(channels): show missing external channel config This is item 1/1 in the current shard. Shard 0/1. This placeholder means the worker is alive and reading the current context. I will edit this same comment with the actual review when the claws are done clicking. Crustacean status: shell secured, claws on keyboard, evidence pebbles being sorted. |
7002a8e to
2f80349
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2f803495b4
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| const hint = resolveMissingOfficialExternalChannelPluginRepairHint({ | ||
| config: cfg, | ||
| channelId: entry.id, | ||
| ...(workspaceDir ? { workspaceDir } : {}), | ||
| }); |
There was a problem hiding this comment.
Precompute missing-plugin policy outside catalog iteration
Calling resolveMissingOfficialExternalChannelPluginRepairHint inside the catalogEntries.map loop recomputes channel presence policy once per catalog entry, and that policy path reloads installed manifest records (resolveConfiguredChannelPresencePolicy -> loadPluginManifestRegistryForPluginRegistry) each time. On workspaces with many catalog channels/plugins, openclaw channels list now does repeated registry scans and file I/O, which can noticeably slow every invocation. Compute the presence policy once, then reuse it per entry.id to avoid this N×re-scan behavior.
Useful? React with 👍 / 👎.
Summary
openclaw channels listwhen their plugin package is missing.installed: falsefor this missing-owner case.Verification
git diff --checkpnpm test src/commands/channels.list.test.ts src/commands/status-all/channels.test.ts src/commands/doctor/shared/missing-configured-plugin-install.test.ts src/commands/doctor/shared/release-configured-plugin-installs.test.ts src/cli/update-cli/post-core-plugin-convergence.test.tspnpm changed:lanes --jsonpnpm check:changed(Blacksmith Testboxtbx_01krsxf3c8c0jmcj8vkmcqrh1r, exit 0)/Users/steipete/Projects/agent-scripts/skills/codex-review/scripts/codex-review --mode local(clean: no accepted/actionable findings)Real behavior proof
Behavior addressed:
openclaw channels listno longer reports no configured chat channels when config has a configured official external channel but the plugin package is missing.Real environment tested: local source checkout with isolated
OPENCLAW_CONFIG_PATHandOPENCLAW_STATE_DIR; bundled and persisted plugin registry disabled to reproduce the missing installed plugin owner state.Exact steps or command run after this patch:
OPENCLAW_CONFIG_PATH=$tmp/openclaw.json OPENCLAW_STATE_DIR=$tmp/state OPENCLAW_DISABLE_BUNDLED_PLUGINS=1 OPENCLAW_DISABLE_PERSISTED_PLUGIN_REGISTRY=1 NO_COLOR=1 pnpm openclaw channels list; same env withpnpm openclaw channels list --json.Evidence after fix: live command output from the isolated OpenClaw setup:
Observed result after fix: text output contains Discord with
not installed,configured,disabled, and install/doctor repair commands; JSON includesorigin: "configured"andinstalled: false.What was not tested: full packaged 2026.4.27 to 2026.5.12 upgrade and live Discord gateway connection.