Skip to content

fix(channels): show missing external channel config#82849

Merged
steipete merged 1 commit into
mainfrom
fix/82813-channel-list-missing-external
May 17, 2026
Merged

fix(channels): show missing external channel config#82849
steipete merged 1 commit into
mainfrom
fix/82813-channel-list-missing-external

Conversation

@steipete

@steipete steipete commented May 17, 2026

Copy link
Copy Markdown
Contributor

Summary

Verification

  • git diff --check
  • pnpm 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.ts
  • pnpm changed:lanes --json
  • pnpm check:changed (Blacksmith Testbox tbx_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 list no 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_PATH and OPENCLAW_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 with pnpm openclaw channels list --json.
Evidence after fix: live command output from the isolated OpenClaw setup:

$ node scripts/run-node.mjs channels list
gateway connect failed: GatewayClientRequestError: unauthorized: gateway token missing (provide gateway auth token)
Chat channels:
- Discord: not installed, configured, disabled, run openclaw plugins install @openclaw/discord or openclaw doctor --fix

Model provider usage moved out of `channels list` - see `openclaw status` or `openclaw models list`.
Docs: https://docs.openclaw.ai/gateway/configuration

--- json ---
$ node scripts/run-node.mjs channels list --json
{
  "chat": {
    "discord": {
      "accounts": [],
      "installed": false,
      "origin": "configured"
    }
  }
}

Observed result after fix: text output contains Discord with not installed, configured, disabled, and install/doctor repair commands; JSON includes origin: "configured" and installed: false.
What was not tested: full packaged 2026.4.27 to 2026.5.12 upgrade and live Discord gateway connection.

@openclaw-barnacle openclaw-barnacle Bot added commands Command implementations size: S maintainer Maintainer-authored PR labels May 17, 2026
@steipete
steipete force-pushed the fix/82813-channel-list-missing-external branch from 2a14bfe to 7002a8e Compare May 17, 2026 02:56
@steipete

Copy link
Copy Markdown
Contributor Author

Verification for 7002a8e:

  • git diff --check
  • pnpm 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.ts
  • pnpm changed:lanes --json
  • pnpm check:changed via Blacksmith Testbox tbx_01krsxf3c8c0jmcj8vkmcqrh1r, exit 0
  • /Users/steipete/Projects/agent-scripts/skills/codex-review/scripts/codex-review --mode local, clean with no accepted/actionable findings

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 openclaw channels list output.

@clawsweeper

clawsweeper Bot commented May 17, 2026

Copy link
Copy Markdown
Contributor

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.

@steipete
steipete force-pushed the fix/82813-channel-list-missing-external branch from 7002a8e to 2f80349 Compare May 17, 2026 03:05

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment on lines +255 to +259
const hint = resolveMissingOfficialExternalChannelPluginRepairHint({
config: cfg,
channelId: entry.id,
...(workspaceDir ? { workspaceDir } : {}),
});

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

@steipete
steipete merged commit b328f57 into main May 17, 2026
116 checks passed
@steipete
steipete deleted the fix/82813-channel-list-missing-external branch May 17, 2026 03:10
galiniliev pushed a commit to galiniliev/openclaw that referenced this pull request May 20, 2026
SebTardif pushed a commit to SebTardif/openclaw that referenced this pull request May 24, 2026
SebTardif pushed a commit to SebTardif/openclaw that referenced this pull request May 24, 2026
SebTardif pushed a commit to SebTardif/openclaw that referenced this pull request May 24, 2026
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request May 24, 2026
galiniliev pushed a commit to galiniliev/openclaw that referenced this pull request May 25, 2026
SebTardif pushed a commit to SebTardif/openclaw that referenced this pull request May 26, 2026
SebTardif pushed a commit to SebTardif/openclaw that referenced this pull request May 26, 2026
SebTardif pushed a commit to SebTardif/openclaw that referenced this pull request May 26, 2026
jameslcowan pushed a commit to jameslcowan/openclaw that referenced this pull request Jun 2, 2026
SYU8384 pushed a commit to SYU8384/openclaw that referenced this pull request Jun 3, 2026
sablehead pushed a commit to sablehead/openclaw that referenced this pull request Jun 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

commands Command implementations maintainer Maintainer-authored PR size: S

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant