diff --git a/src/commands/doctor-legacy-config.test.ts b/src/commands/doctor-legacy-config.test.ts index 8f4bf74e684..70d998ffdce 100644 --- a/src/commands/doctor-legacy-config.test.ts +++ b/src/commands/doctor-legacy-config.test.ts @@ -32,6 +32,20 @@ describe("normalizeCompatibilityConfigValues preview streaming aliases", () => { ]); }); + it("does not label explicit discord streaming=false as a default-off case", () => { + const res = normalizeCompatibilityConfigValues({ + channels: { + discord: { + streaming: false, + }, + }, + }); + + expect(res.config.channels?.discord?.streaming).toBe("off"); + expect(res.config.channels?.discord?.streamMode).toBeUndefined(); + expect(res.changes).toEqual(["Normalized channels.discord.streaming boolean → enum (off)."]); + }); + it("explains why discord preview streaming stays off when legacy config resolves to off", () => { const res = normalizeCompatibilityConfigValues({ channels: { diff --git a/src/commands/doctor-legacy-config.ts b/src/commands/doctor-legacy-config.ts index 58eff1d0382..b3a11867928 100644 --- a/src/commands/doctor-legacy-config.ts +++ b/src/commands/doctor-legacy-config.ts @@ -142,7 +142,11 @@ export function normalizeCompatibilityConfigValues(cfg: OpenClawConfig): { `Normalized ${params.pathPrefix}.streaming (${beforeStreaming}) → (${resolved}).`, ); } - if (params.pathPrefix.startsWith("channels.discord") && resolved === "off") { + if ( + params.pathPrefix.startsWith("channels.discord") && + resolved === "off" && + hadLegacyStreamMode + ) { changes.push( `${params.pathPrefix}.streaming remains off by default to avoid Discord preview-edit rate limits; set ${params.pathPrefix}.streaming="partial" to opt in explicitly.`, );