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

@@ -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 };