mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 09:50:42 +00:00
fix: avoid persisted-auth channel startup probes
This commit is contained in:
@@ -73,6 +73,7 @@ Docs: https://docs.openclaw.ai
|
||||
|
||||
### Fixes
|
||||
|
||||
- Gateway/plugins: stop persisted WhatsApp auth state from activating bundled channel runtime-dependency repair during startup when `channels.whatsapp` is absent, avoiding npm/git stalls on packaged Linux installs. Fixes #71994. Thanks @xiao398008.
|
||||
- CLI/model runs: keep `openclaw infer model run` on explicit OpenRouter models from loading the full provider catalog or inheriting chat-agent silent-reply policy, restoring non-empty one-shot probe output. Fixes #68791. Thanks @limpredator.
|
||||
- Installer/macOS: rerun Homebrew install steps without the gum spinner when raw-mode ioctl failures occur, and avoid claiming `node@24` was installed when the Homebrew keg binary is missing. Fixes #70411. Thanks @1fanwang and @dad-io.
|
||||
- Installer: load nvm before Node.js detection so `curl | bash` installs respect nvm-managed Node instead of stale system Node. Fixes #49556. Thanks @heavenlxj.
|
||||
|
||||
@@ -85,6 +85,8 @@ Packaged installs keep bundled plugin runtime dependencies out of the read-only
|
||||
package tree. On startup and during `openclaw doctor --fix`, OpenClaw repairs
|
||||
runtime dependencies only for bundled plugins that are active in config, active
|
||||
through legacy channel config, or enabled by their bundled manifest default.
|
||||
Persisted channel auth state alone does not trigger Gateway startup
|
||||
runtime-dependency repair.
|
||||
|
||||
Explicit disablement wins. A disabled plugin or channel does not get its
|
||||
runtime dependencies repaired just because it exists in the package. External
|
||||
|
||||
@@ -65,6 +65,8 @@ Packaged OpenClaw installs do not eagerly install every bundled plugin's
|
||||
runtime dependency tree. When a bundled OpenClaw-owned plugin is active from
|
||||
plugin config, legacy channel config, or a default-enabled manifest, startup
|
||||
repairs only that plugin's declared runtime dependencies before importing it.
|
||||
Persisted channel auth state alone does not activate a bundled channel for
|
||||
Gateway startup runtime-dependency repair.
|
||||
Explicit disablement still wins: `plugins.entries.<id>.enabled: false`,
|
||||
`plugins.deny`, `plugins.enabled: false`, and `channels.<id>.enabled: false`
|
||||
prevent automatic bundled runtime-dependency repair for that plugin/channel.
|
||||
|
||||
@@ -544,6 +544,51 @@ describe("resolveGatewayStartupPluginIds", () => {
|
||||
});
|
||||
});
|
||||
|
||||
it("does not treat persisted auth alone as gateway startup intent", () => {
|
||||
listPotentialConfiguredChannelIds.mockImplementation(
|
||||
(
|
||||
_config: OpenClawConfig,
|
||||
_env: NodeJS.ProcessEnv,
|
||||
options?: { includePersistedAuthState?: boolean },
|
||||
) => (options?.includePersistedAuthState === false ? [] : ["demo-channel"]),
|
||||
);
|
||||
|
||||
expectStartupPluginIdsCase({
|
||||
config: {} as OpenClawConfig,
|
||||
env: {
|
||||
OPENCLAW_STATE_DIR: "/tmp/openclaw-with-persisted-demo-channel",
|
||||
} as NodeJS.ProcessEnv,
|
||||
expected: ["browser"],
|
||||
});
|
||||
});
|
||||
|
||||
it("does not treat persisted auth alone as deferred channel startup intent", () => {
|
||||
loadPluginManifestRegistry
|
||||
.mockReset()
|
||||
.mockReturnValue(createManifestRegistryFixtureWithWorkspaceDemoChannel());
|
||||
listPotentialConfiguredChannelIds.mockImplementation(
|
||||
(
|
||||
_config: OpenClawConfig,
|
||||
_env: NodeJS.ProcessEnv,
|
||||
options?: { includePersistedAuthState?: boolean },
|
||||
) => (options?.includePersistedAuthState === false ? [] : ["demo-channel"]),
|
||||
);
|
||||
|
||||
expect(
|
||||
resolveConfiguredDeferredChannelPluginIds({
|
||||
config: {
|
||||
plugins: {
|
||||
allow: ["workspace-demo-channel-plugin"],
|
||||
},
|
||||
} as OpenClawConfig,
|
||||
workspaceDir: "/tmp",
|
||||
env: {
|
||||
OPENCLAW_STATE_DIR: "/tmp/openclaw-with-persisted-demo-channel",
|
||||
} as NodeJS.ProcessEnv,
|
||||
}),
|
||||
).toEqual([]);
|
||||
});
|
||||
|
||||
it("does not treat explicitly disabled stale channel config as deferred startup intent", () => {
|
||||
loadPluginManifestRegistry
|
||||
.mockReset()
|
||||
|
||||
@@ -41,7 +41,7 @@ function listDisabledChannelIds(config: OpenClawConfig): Set<string> {
|
||||
|
||||
function listPotentialEnabledChannelIds(config: OpenClawConfig, env: NodeJS.ProcessEnv): string[] {
|
||||
const disabled = listDisabledChannelIds(config);
|
||||
return listPotentialConfiguredChannelIds(config, env)
|
||||
return listPotentialConfiguredChannelIds(config, env, { includePersistedAuthState: false })
|
||||
.map((id) => normalizeOptionalLowercaseString(id) ?? "")
|
||||
.filter((id) => id && !disabled.has(id));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user