Skip to content

fix(gateway): resolve startup hang caused by qqbot plugin manifest ID mismatch & stderr flood#718

Merged
su8su merged 2 commits intomainfrom
fix_qqbot
Mar 30, 2026
Merged

fix(gateway): resolve startup hang caused by qqbot plugin manifest ID mismatch & stderr flood#718
su8su merged 2 commits intomainfrom
fix_qqbot

Conversation

@su8su
Copy link
Copy Markdown
Contributor

@su8su su8su commented Mar 30, 2026

No description provided.

Copy link
Copy Markdown
Contributor

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

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: 74d70f6cee

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread electron/gateway/config-sync.ts Outdated
Comment on lines +208 to +212
dirNameToChannel[info.dirName] = channelType;
}
for (const pluginId of allowList) {
const channelType = dirNameToChannel[pluginId] ?? pluginId;
if (CHANNEL_PLUGIN_MAP[channelType] && !configuredChannels.includes(channelType)) {
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 Map canonical plugin IDs before allowlist augmentation

This new allowlist augmentation only reverse-maps extension dirName values, but plugins.allow can contain canonical plugin IDs that differ from CHANNEL_PLUGIN_MAP keys (for example Feishu is commonly stored as openclaw-lark via resolveFeishuPluginId). In that case channelType is never resolved to feishu, so the plugin is skipped and ensureConfiguredPluginsUpgraded still won’t install/patch it when channels.feishu is absent. Add explicit plugin-id aliases to the reverse map instead of relying on dirName/channel key equality.

Useful? React with 👍 / 👎.

Comment on lines +723 to +724
const count = (stderrDedup.get(classified.normalized) ?? 0) + 1;
stderrDedup.set(classified.normalized, count);
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 Bound stderr dedup map to avoid unbounded growth

The new dedup logic stores every unique normalized stderr line in stderrDedup and never evicts entries. If the Gateway emits many distinct lines (for example with dynamic identifiers), this map grows for the full process lifetime and creates avoidable memory growth in the Electron main process. A bounded cache (LRU/TTL) or dedup limited to known noisy patterns would avoid this regression.

Useful? React with 👍 / 👎.

@su8su su8su merged commit ec8db0b into main Mar 30, 2026
7 checks passed
@su8su su8su deleted the fix_qqbot branch March 30, 2026 10:27
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