Skip to content

Commit 3f47002

Browse files
committed
config: silence migration warning for legacy enabled=true (no-op)
The legacy-enabled migration shim correctly stripped 'enabled: true' from dreamer/sidekick config in-memory (the key is no longer valid and the value is a no-op alias for the new default 'disable: false'), but it surfaced a config warning suggesting the user had something to fix. This made users with auto-generated configs (LLM-authored, dashboard-written, or carried forward from before unification) see a 'Magic Context Config Warning' dialog on every restart even though their config was semantically equivalent to the new default. The warning was misleading because nothing needs migrating — the field is simply obsolete. Keep the warning only when a real semantic value is present: - dreamer.enabled=false → migrated to disable=true (loud, behavior changes) - sidekick.enabled=false → migrated to disable=true (loud) - historian.enabled=<any> → removed (loud, was always invalid) - dreamer.enabled=true → stripped silently (no-op alias) - sidekick.enabled=true → stripped silently (no-op alias) Doctor still cleans both true and false from disk on next run.
1 parent 6a3b065 commit 3f47002

2 files changed

Lines changed: 10 additions & 13 deletions

File tree

packages/plugin/src/config/agent-disable.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,8 @@ function migrateLegacyEnabledForAgent(args: {
5353
args.warnings.push(
5454
'Migrated "dreamer.enabled=false" → "dreamer.disable=true" in-memory (run doctor to persist). This now also disables manual /ctx-dream; for manual-only remove disable and set schedule="".',
5555
);
56-
} else {
57-
args.warnings.push(
58-
'Ignored deprecated "dreamer.enabled=true" in-memory (run doctor to remove).',
59-
);
6056
}
57+
// enabled=true is a no-op alias for the new default (disable=false); strip silently.
6158
args.patched.dreamer = agent;
6259
return;
6360
}
@@ -67,11 +64,8 @@ function migrateLegacyEnabledForAgent(args: {
6764
args.warnings.push(
6865
'Migrated "sidekick.enabled=false" → "sidekick.disable=true" in-memory (run doctor to persist).',
6966
);
70-
} else {
71-
args.warnings.push(
72-
'Ignored deprecated "sidekick.enabled=true" in-memory (run doctor to remove).',
73-
);
7467
}
68+
// enabled=true is a no-op alias for the new default; strip silently.
7569
args.patched.sidekick = agent;
7670
}
7771

packages/plugin/src/config/index.test.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -251,17 +251,18 @@ describe("loadPluginConfig — legacy agent enabled migration", () => {
251251
);
252252
});
253253

254-
it("removes dreamer.enabled=true without adding disable=false", () => {
254+
it("removes dreamer.enabled=true silently (no warning, no disable mutation)", () => {
255255
const result = loadWithUserConfig(JSON.stringify({ dreamer: { enabled: true } }));
256256

257257
expect(result.dreamer?.disable).toBeUndefined();
258258
expect("enabled" in (result.dreamer as Record<string, unknown>)).toBe(false);
259-
expect(result.configWarnings?.join("\n")).toContain(
260-
'Ignored deprecated "dreamer.enabled=true" in-memory (run doctor to remove).',
261-
);
259+
// enabled=true is a no-op alias for the new default; no warning should be emitted.
260+
const warnings = result.configWarnings?.join("\n") ?? "";
261+
expect(warnings).not.toContain("dreamer.enabled=true");
262+
expect(warnings).not.toContain("dreamer.enabled");
262263
});
263264

264-
it("migrates sidekick.enabled=false and removes sidekick.enabled=true", () => {
265+
it("migrates sidekick.enabled=false (loud) and removes sidekick.enabled=true (silent)", () => {
265266
const disabled = loadWithUserConfig(JSON.stringify({ sidekick: { enabled: false } }));
266267
expect(disabled.sidekick?.disable).toBe(true);
267268
expect(disabled.configWarnings?.join("\n")).toContain(
@@ -271,6 +272,8 @@ describe("loadPluginConfig — legacy agent enabled migration", () => {
271272
const enabled = loadWithUserConfig(JSON.stringify({ sidekick: { enabled: true } }));
272273
expect(enabled.sidekick?.disable).toBeUndefined();
273274
expect("enabled" in (enabled.sidekick as Record<string, unknown>)).toBe(false);
275+
const enabledWarnings = enabled.configWarnings?.join("\n") ?? "";
276+
expect(enabledWarnings).not.toContain("sidekick.enabled");
274277
});
275278

276279
it("removes invalid historian.enabled and applies conflict rules", () => {

0 commit comments

Comments
 (0)