Fix desktop settings legacy override

This commit is contained in:
Mohamed Boudra
2026-05-03 22:57:33 +07:00
parent f0d96f8e5a
commit 6d8c7c4d2d
2 changed files with 93 additions and 11 deletions
@@ -94,6 +94,58 @@ describe("desktop-settings", () => {
expect(files).toEqual(["desktop-settings.json"]);
});
it("does not let stale legacy renderer settings override an explicit desktop patch", async () => {
const userDataPath = await createTempUserDataDir();
directories.add(userDataPath);
const store = createDesktopSettingsStore({ userDataPath });
const patched = await store.patch({
daemon: {
manageBuiltInDaemon: false,
},
});
const migrated = await store.migrateLegacyRendererSettings({
manageBuiltInDaemon: true,
releaseChannel: "beta",
});
const persisted = JSON.parse(await readFile(settingsFilePath(userDataPath), "utf8")) as {
migrations: { legacyRendererSettingsImported: boolean };
settings: DesktopSettings;
};
expect(patched.daemon.manageBuiltInDaemon).toBe(false);
expect(migrated.daemon.manageBuiltInDaemon).toBe(false);
expect(migrated.releaseChannel).toBe("stable");
expect(persisted.migrations.legacyRendererSettingsImported).toBe(true);
expect(persisted.settings.daemon.manageBuiltInDaemon).toBe(false);
});
it("does not rewrite existing settings while reading them", async () => {
const userDataPath = await createTempUserDataDir();
directories.add(userDataPath);
const raw = JSON.stringify({
version: 1,
settings: {
releaseChannel: "stable",
daemon: {
manageBuiltInDaemon: false,
keepRunningAfterQuit: true,
},
},
migrations: {
legacyRendererSettingsImported: false,
},
});
await writeFile(settingsFilePath(userDataPath), raw);
const store = createDesktopSettingsStore({ userDataPath });
const settings = await store.get();
const persisted = await readFile(settingsFilePath(userDataPath), "utf8");
expect(settings.daemon.manageBuiltInDaemon).toBe(false);
expect(persisted).toBe(raw);
});
it("migrates desktop-owned values from legacy renderer settings once", async () => {
const userDataPath = await createTempUserDataDir();
directories.add(userDataPath);