feat(backup): add pre-migration backup, periodic backup, backfill warning, and backup management UI

Four improvements to the database backup mechanism:

1. Auto backup before schema migration - creates a snapshot when
   upgrading from an older database version, providing a safety net
   beyond the existing SAVEPOINT rollback mechanism.

2. Periodic startup backup - checks on app launch whether the latest
   backup is older than 24 hours and creates a new one if needed,
   ensuring all users have recent backups regardless of usage patterns.

3. Backfill failure notification - switch now returns SwitchResult with
   warnings instead of silently ignoring backfill errors, so users are
   informed when their manual config changes may not have been saved.

4. Backup management UI - new BackupListSection in Settings > Data
   Management showing all backup snapshots with restore capability,
   including a confirmation dialog and automatic safety backup before
   restore.
This commit is contained in:
Jason
2026-02-21 23:56:56 +08:00
parent 5ebc879f09
commit 3afec8a10f
18 changed files with 490 additions and 24 deletions
+16
View File
@@ -215,3 +215,19 @@ export interface LogConfig {
enabled: boolean;
level: "error" | "warn" | "info" | "debug" | "trace";
}
export interface BackupEntry {
filename: string;
sizeBytes: number;
createdAt: string;
}
export const backupsApi = {
async listDbBackups(): Promise<BackupEntry[]> {
return await invoke("list_db_backups");
},
async restoreDbBackup(filename: string): Promise<string> {
return await invoke("restore_db_backup", { filename });
},
};