feat(backup): add independent backup panel, configurable policy, and rename support

Extract backup & restore into a standalone AccordionItem in Advanced settings.
Add configurable auto-backup interval (disabled/6h/12h/24h/48h/7d) and retention
count (3-50) via settings. Add per-backup rename with inline editing UI.
This commit is contained in:
Jason
2026-02-22 08:40:47 +08:00
parent 3afec8a10f
commit f8820aa22c
13 changed files with 488 additions and 73 deletions
+34 -1
View File
@@ -7,6 +7,7 @@ import {
Database,
Cloud,
ScrollText,
HardDriveDownload,
} from "lucide-react";
import { toast } from "sonner";
import {
@@ -325,7 +326,39 @@ export function SettingsPage({
onExport={exportConfig}
onClear={clearSelection}
/>
<BackupListSection />
</AccordionContent>
</AccordionItem>
<AccordionItem
value="backup"
className="rounded-xl glass-card overflow-hidden"
>
<AccordionTrigger className="px-6 py-4 hover:no-underline hover:bg-muted/50 data-[state=open]:bg-muted/50">
<div className="flex items-center gap-3">
<HardDriveDownload className="h-5 w-5 text-amber-500" />
<div className="text-left">
<h3 className="text-base font-semibold">
{t("settings.advanced.backup.title", {
defaultValue: "Backup & Restore",
})}
</h3>
<p className="text-sm text-muted-foreground font-normal">
{t("settings.advanced.backup.description", {
defaultValue:
"Manage automatic backups, view and restore database snapshots",
})}
</p>
</div>
</div>
</AccordionTrigger>
<AccordionContent className="px-6 pb-6 pt-4 border-t border-border/50">
<BackupListSection
backupIntervalHours={settings.backupIntervalHours}
backupRetainCount={settings.backupRetainCount}
onSettingsChange={(updates) =>
handleAutoSave(updates)
}
/>
</AccordionContent>
</AccordionItem>