fix(migration): handle already-v5 settings and ensure 'failed' branch writes v5 marker

This commit is contained in:
2026-06-08 07:02:45 +05:30
parent 74dde8d6d1
commit aeadde5f40
4 changed files with 37 additions and 1 deletions
+9
View File
@@ -10,7 +10,16 @@ export const v4SettingsSchema = z.object({
snippets: z.array(z.unknown()).default([]),
});
const v5OnlyFields = ['updateChannel', 'autoCheckUpdates', 'firstRun'];
function isAlreadyV5(data: unknown): boolean {
if (!data || typeof data !== 'object') return false;
if ((data as Record<string, unknown>)['migration.version'] === 5) return true;
return v5OnlyFields.some((f) => f in (data as Record<string, unknown>));
}
export function migrateV4ToV5(v4: unknown): z.infer<typeof settingsSchema> {
if (isAlreadyV5(v4)) return v4 as z.infer<typeof settingsSchema>;
const parsed = v4SettingsSchema.parse(v4);
const defaults = settingsSchema.parse({});
return {