feat(backup): opt-in Android Backup for settings only
Add an opt-in (off by default) toggle to include app data in system Android Backup / Auto Backup, gated so only re-creatable user preferences are ever backed up. - Flip allowBackup to true and add LibreMailBackupAgent, which enforces the runtime opt-in: onFullBackup runs only when the user enables "Include settings in Android Backup" (default off), so no data leaves the device otherwise. allowBackup is a manifest flag and can't be toggled at runtime, hence the agent. - Rewrite data_extraction_rules.xml (API 31+) and add backup_rules.xml (API 29-30) as strict allowlists that back up ONLY the libremail_settings DataStore. The Keystore-sealed cache passphrase (libremail_dbkey) and the encrypted credentials + mail-cache database (libremail.db) are excluded by omission; the cache re-downloads on next sync. - Add includeInBackup preference + setter (nudges BackupManager on change) and a "Backup" settings section with F-Droid-honest copy (off by default, uses Google infrastructure). - BackupPolicy is the single source of truth for eligible/excluded paths; unit tests cover the toggle default and assert the shipped XML resources include only settings and never the secrets/DB. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -143,6 +143,11 @@
|
||||
<string name="settings_no_accounts">No accounts yet</string>
|
||||
<string name="account_remove">Remove account</string>
|
||||
|
||||
<!-- Backup -->
|
||||
<string name="settings_backup">Backup</string>
|
||||
<string name="settings_backup_include">Include settings in Android Backup</string>
|
||||
<string name="settings_backup_include_summary">Let Android back up your LibreMail preferences (Google Auto Backup) so they restore when you set up a new device. Your mail, accounts, passwords, and encryption keys are never backed up — only app settings. Off by default; uses Google infrastructure.</string>
|
||||
|
||||
<!-- Per-account settings -->
|
||||
<string name="settings_account_title">Account</string>
|
||||
<string name="settings_signature">Signature</string>
|
||||
|
||||
Reference in New Issue
Block a user