experiments in a post-browser web
Database Backup System#
Overview#
Daily compressed backups of the SQLite database with manual controls in Settings > Diagnostic.
Configuration#
Backups are disabled by default. To enable:
- Open Settings > Core
- Set
backupDirto your desired backup location (e.g.,~/sync/peek-backups) - Backups will run automatically on app startup (daily)
Behavior#
- Trigger: On app startup, if >24 hours since last backup
- Format: ZIP archive containing
datastore.sqliteandmanifest.json - Filename:
peek-backup-{profile}-{YYYY-MM-DD-HHmmss}.zip - Retention: Keeps 7 most recent backups (configurable)
- Method: Uses SQLite's
VACUUM INTOfor consistent copies without locking
Architecture#
Files#
backend/electron/backup.ts- Core backup logicapp/config.js-backupDirpreference in core settings schemaapp/diagnostic.html- Manual backup UI
IPC Handlers#
backup-get-config- Get current backup configurationbackup-set-config- Update backup settings (retentionCount, lastBackupTime)backup-create- Trigger manual backupbackup-list- List existing backups
Settings Storage#
backupDiris stored in core settings (extension_settingstable, extensionId=core, key=prefs)lastBackupTimeandretentionCountstored separately (extensionId=backup)
Manual Controls#
Available in Settings > Diagnostic > Backup Tools:
- Backup Now - Create immediate backup
- List Backups - Show existing backups with sizes and dates
- Open Backup Folder - Open backup directory in Finder
Archive Contents#
peek-backup-default-2026-01-19-143022.zip
├── datastore.sqlite # VACUUM'd copy of database
└── manifest.json # Metadata: version, timestamp, profile, table row counts