mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-08-03 11:01:22 +08:00
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:
@@ -245,6 +245,14 @@ pub struct AppSettings {
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
pub webdav_backup: Option<serde_json::Value>,
|
||||
|
||||
// ===== 备份策略设置 =====
|
||||
/// Auto-backup interval in hours (default 24, 0 = disabled)
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
pub backup_interval_hours: Option<u32>,
|
||||
/// Maximum number of backup files to retain (default 10)
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
pub backup_retain_count: Option<u32>,
|
||||
|
||||
// ===== 终端设置 =====
|
||||
/// 首选终端应用(可选,默认使用系统默认终端)
|
||||
/// - macOS: "terminal" | "iterm2" | "warp" | "alacritty" | "kitty" | "ghostty"
|
||||
@@ -289,6 +297,8 @@ impl Default for AppSettings {
|
||||
skill_sync_method: SyncMethod::default(),
|
||||
webdav_sync: None,
|
||||
webdav_backup: None,
|
||||
backup_interval_hours: None,
|
||||
backup_retain_count: None,
|
||||
preferred_terminal: None,
|
||||
}
|
||||
}
|
||||
@@ -623,6 +633,33 @@ pub fn get_skill_sync_method() -> SyncMethod {
|
||||
.skill_sync_method
|
||||
}
|
||||
|
||||
// ===== 备份策略管理函数 =====
|
||||
|
||||
/// Get the effective auto-backup interval in hours (default 24)
|
||||
pub fn effective_backup_interval_hours() -> u32 {
|
||||
settings_store()
|
||||
.read()
|
||||
.unwrap_or_else(|e| {
|
||||
log::warn!("设置锁已毒化,使用恢复值: {e}");
|
||||
e.into_inner()
|
||||
})
|
||||
.backup_interval_hours
|
||||
.unwrap_or(24)
|
||||
}
|
||||
|
||||
/// Get the effective backup retain count (default 10, minimum 1)
|
||||
pub fn effective_backup_retain_count() -> usize {
|
||||
settings_store()
|
||||
.read()
|
||||
.unwrap_or_else(|e| {
|
||||
log::warn!("设置锁已毒化,使用恢复值: {e}");
|
||||
e.into_inner()
|
||||
})
|
||||
.backup_retain_count
|
||||
.map(|n| (n as usize).max(1))
|
||||
.unwrap_or(10)
|
||||
}
|
||||
|
||||
// ===== 终端设置管理函数 =====
|
||||
|
||||
/// 获取首选终端应用
|
||||
|
||||
Reference in New Issue
Block a user