fix: clarify doctor auto-enable hint

This commit is contained in:
Peter Steinberger
2026-01-20 15:58:26 +00:00
parent 76698ed296
commit 91ed00f800
3 changed files with 17 additions and 6 deletions

View File

@@ -16,6 +16,7 @@ Docs: https://docs.clawd.bot
- Zalouser: add channel dock metadata, config schema, setup wiring, probe, and status issues. (#1219) — thanks @suminhthanh.
### Fixes
- Discovery: shorten Bonjour DNS-SD service type to `_clawdbot-gw._tcp` and update discovery clients/docs.
- Doctor: clarify plugin auto-enable hint text in the startup banner.
- Web search: infer Perplexity base URL from API key source (direct vs OpenRouter).
- TUI: keep thinking blocks ordered before content during streaming and isolate per-run assembly. (#1202) — thanks @aaronveklabs.
- TUI: align custom editor initialization with the latest pi-tui API. (#1298) — thanks @sibbl.

View File

@@ -13,7 +13,7 @@ describe("applyPluginAutoEnable", () => {
expect(result.config.plugins?.entries?.slack?.enabled).toBe(true);
expect(result.config.plugins?.allow).toEqual(["telegram", "slack"]);
expect(result.changes.join("\n")).toContain('Enabled plugin "slack"');
expect(result.changes.join("\n")).toContain("Slack configured, not enabled yet.");
});
it("respects explicit disable", () => {
@@ -74,8 +74,8 @@ describe("applyPluginAutoEnable", () => {
expect(result.config.plugins?.entries?.bluebubbles?.enabled).toBe(true);
expect(result.config.plugins?.entries?.imessage?.enabled).toBeUndefined();
expect(result.changes.join("\n")).toContain('Enabled plugin "bluebubbles"');
expect(result.changes.join("\n")).not.toContain('Enabled plugin "imessage"');
expect(result.changes.join("\n")).toContain("bluebubbles configured, not enabled yet.");
expect(result.changes.join("\n")).not.toContain("iMessage configured, not enabled yet.");
});
it("keeps imessage enabled if already explicitly enabled (non-destructive)", () => {
@@ -108,7 +108,7 @@ describe("applyPluginAutoEnable", () => {
expect(result.config.plugins?.entries?.bluebubbles?.enabled).toBe(false);
expect(result.config.plugins?.entries?.imessage?.enabled).toBe(true);
expect(result.changes.join("\n")).toContain('Enabled plugin "imessage"');
expect(result.changes.join("\n")).toContain("iMessage configured, not enabled yet.");
});
it("allows imessage auto-enable when bluebubbles is in deny list", () => {
@@ -136,7 +136,7 @@ describe("applyPluginAutoEnable", () => {
});
expect(result.config.plugins?.entries?.imessage?.enabled).toBe(true);
expect(result.changes.join("\n")).toContain('Enabled plugin "imessage"');
expect(result.changes.join("\n")).toContain("iMessage configured, not enabled yet.");
});
});
});

View File

@@ -335,6 +335,16 @@ function enablePluginEntry(cfg: ClawdbotConfig, pluginId: string): ClawdbotConfi
};
}
function formatAutoEnableChange(entry: PluginEnableChange): string {
let reason = entry.reason.trim();
const channelId = normalizeChatChannelId(entry.pluginId);
if (channelId) {
const label = getChatChannelMeta(channelId).label;
reason = reason.replace(new RegExp(`^${channelId}\\b`, "i"), label);
}
return `${reason}, not enabled yet.`;
}
export function applyPluginAutoEnable(params: {
config: ClawdbotConfig;
env?: NodeJS.ProcessEnv;
@@ -362,7 +372,7 @@ export function applyPluginAutoEnable(params: {
if (alreadyEnabled && !allowMissing) continue;
next = enablePluginEntry(next, entry.pluginId);
next = ensureAllowlisted(next, entry.pluginId);
changes.push(`Enabled plugin "${entry.pluginId}" (${entry.reason}).`);
changes.push(formatAutoEnableChange(entry));
}
return { config: next, changes };