mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-01-29 00:35:38 +08:00
* feat(auto-backup): implement centralized auto-backup manager and UI - Introduced AutoBackupManager to handle verge settings, run a background scheduler, debounce change-driven backups, and trim auto-labeled archives (keeps 20); wired into startup and config refresh hooks (src-tauri/src/module/auto_backup.rs:28-209, src-tauri/src/utils/resolve/mod.rs:64-136, src-tauri/src/feat/config.rs:102-238) - Extended verge schema and backup helpers so scheduled/change-based settings persist, create_local_backup can rename archives, and profile/global-extend mutations now trigger backups (src-tauri/src/config/verge.rs:162-536, src/types/types.d.ts:857-859, src-tauri/src/feat/backup.rs:125-189, src-tauri/src/cmd/profile.rs:66-476, src-tauri/src/cmd/save_profile.rs:21-82) - Added Auto Backup settings panel in backup dialog with dual toggles + interval selector; localized new strings across all locales (src/components/setting/mods/auto-backup-settings.tsx:1-138, src/components/setting/mods/backup-viewer.tsx:28-309, src/locales/en/settings.json:312-326 and mirrored entries) - Regenerated typed i18n resources for strong typing in React (src/types/generated/i18n-keys.ts, src/types/generated/i18n-resources.ts) * refactor(setting/backup): restructure backup dialog for consistent layout * refactor(ui): unify settings dialog style * fix(backup): only trigger auto-backup on valid saves & restore restarts app safely * fix(backup): scrub console.log leak and rewire WebDAV dialog to actually probe server * refactor: rename SubscriptionChange to ProfileChange * chore: update i18n * chore: WebDAV i18n improvements * refactor(backup): error handling * refactor(auto-backup): wrap scheduler startup with maybe_start_runner * refactor: remove the redundant throw in handleExport * feat(backup-history-viewer): improve WebDAV handling and UI fallback * feat(auto-backup): trigger backups on all profile edits & improve interval input UX * refactor: use InputAdornment * docs: Changelog.md
133 lines
4.1 KiB
JSON
133 lines
4.1 KiB
JSON
{
|
|
"actions": {
|
|
"cancel": "Cancel",
|
|
"close": "Close",
|
|
"confirm": "Confirm",
|
|
"save": "Save",
|
|
"delete": "Delete",
|
|
"edit": "Edit",
|
|
"new": "New",
|
|
"enable": "Enable",
|
|
"upgrade": "Upgrade",
|
|
"restart": "Restart",
|
|
"resetToDefault": "Reset to Default",
|
|
"refresh": "Refresh",
|
|
"retry": "Retry",
|
|
"refreshPage": "Refresh Page",
|
|
"showDetails": "Show Details",
|
|
"hideDetails": "Hide Details",
|
|
"listView": "List View",
|
|
"tableView": "Table View",
|
|
"pause": "Pause",
|
|
"resume": "Resume",
|
|
"closeAll": "Close All",
|
|
"clear": "Clear",
|
|
"previous": "Previous",
|
|
"next": "Next"
|
|
},
|
|
"labels": {
|
|
"updateAt": "Update At",
|
|
"timeout": "Timeout",
|
|
"icon": "Icon",
|
|
"name": "Name",
|
|
"readOnly": "ReadOnly",
|
|
"expireTime": "Expire Time",
|
|
"updateTime": "Update Time",
|
|
"usedTotal": "Used / Total",
|
|
"from": "From",
|
|
"password": "Password",
|
|
"retryAttempts": "Retry attempts",
|
|
"downloaded": "Downloaded",
|
|
"uploaded": "Uploaded"
|
|
},
|
|
"statuses": {
|
|
"enabled": "Enabled",
|
|
"disabled": "Disabled",
|
|
"saving": "Saving...",
|
|
"empty": "Empty"
|
|
},
|
|
"units": {
|
|
"milliseconds": "ms",
|
|
"seconds": "seconds",
|
|
"minutes": "mins",
|
|
"hours": "hrs",
|
|
"kilobytes": "KB",
|
|
"files": "Files"
|
|
},
|
|
"placeholders": {
|
|
"filter": "Filter conditions",
|
|
"matchCase": "Match Case",
|
|
"matchWholeWord": "Match Whole Word",
|
|
"useRegex": "Use Regular Expression"
|
|
},
|
|
"validation": {
|
|
"invalidRegex": "Invalid regular expression"
|
|
},
|
|
"window": {
|
|
"maximize": "Maximize",
|
|
"minimize": "Minimize"
|
|
},
|
|
"editorModes": {
|
|
"visualization": "Visualization",
|
|
"advanced": "Advanced"
|
|
},
|
|
"feedback": {
|
|
"errors": {
|
|
"trafficStats": "Traffic Statistics Error",
|
|
"trafficStatsDescription": "The traffic statistics component encountered an error and has been disabled to prevent crashes."
|
|
},
|
|
"notices": {
|
|
"raw": "{{message}}",
|
|
"prefixedRaw": "{{prefix}} {{message}}"
|
|
},
|
|
"notifications": {
|
|
"importSuccess": "Profile Imported Successfully",
|
|
"importSubscriptionSuccess": "Import subscription successful",
|
|
"importWithClashProxy": "Profile Imported with Clash proxy",
|
|
"updateAvailable": "Update Available",
|
|
"saved": "Saved successfully",
|
|
"common": {
|
|
"copySuccess": "Copy Success",
|
|
"saveSuccess": "Configuration saved successfully",
|
|
"saveFailed": "Failed to save configuration"
|
|
}
|
|
},
|
|
"validation": {
|
|
"config": {
|
|
"failed": "Subscription configuration validation failed. Please check the subscription configuration file; modifications have been rolled back.",
|
|
"bootFailed": "Boot subscription configuration validation failed. Started with the default configuration; please check the subscription configuration file.",
|
|
"coreChangeFailed": "Configuration validation failed when switching the kernel. Started with the default configuration; please check the subscription configuration file.",
|
|
"processTerminated": "The validation process has been terminated."
|
|
},
|
|
"script": {
|
|
"syntaxError": "Script syntax error, changes reverted",
|
|
"missingMain": "Script error, changes reverted",
|
|
"fileNotFound": "File missing, changes reverted",
|
|
"fileError": "Script file error, changes reverted"
|
|
},
|
|
"yaml": {
|
|
"syntaxError": "YAML syntax error, changes reverted",
|
|
"readError": "YAML read error, changes reverted",
|
|
"mappingError": "YAML mapping error, changes reverted",
|
|
"keyError": "YAML key error, changes reverted",
|
|
"generalError": "YAML error, changes reverted"
|
|
},
|
|
"merge": {
|
|
"syntaxError": "Merge file syntax error, changes reverted",
|
|
"mappingError": "Merge file mapping error, changes reverted",
|
|
"keyError": "Merge file key error, changes reverted",
|
|
"generalError": "Merge file error, changes reverted"
|
|
}
|
|
}
|
|
},
|
|
"filters": {
|
|
"logLevels": {
|
|
"all": "ALL",
|
|
"debug": "DEBUG",
|
|
"info": "INFO",
|
|
"warn": "WARN",
|
|
"error": "ERROR"
|
|
}
|
|
}
|
|
}
|