T-FJOX-backup-in-app-schedule
State: closed/done · Impact: medium · Complexity: medium
Scheduled backups today come from a vault task that runs bun run backup snapshot through the
vault-engine. An installed Backups app has neither bun nor the engine. The schedule has to live in
the app.
Proposed
Section titled “Proposed”A host-side loop in determined-platform, on the pattern of polish_monitor.rs: turned on by a
RunOptions flag that only the backup product sets, with its config (enabled, interval) in the
settings store. Each tick calls BackupPort::run_snapshot for the active vault. The app-lifetime
loop is the sole scheduler; it skips only when its own previous run is still in flight. The Backups
settings section (BackupSettingsSection.vue) gains the two fields, and the overview shows the
next run time.
Acceptance criteria
Section titled “Acceptance criteria”- AC-1: With the schedule on and a short interval, the app creates snapshots on its own while open, with no vault-engine running.
- AC-2: The loop never overlaps its own snapshot runs, and a failed scheduled run is reported to the user rather than silently suppressing later runs.
- AC-3: Changing the interval or turning the schedule off takes effect without a restart.
- AC-4: Products other than backup do not run the loop.
Out of scope
Section titled “Out of scope”- Backups while the app is closed, launch at login, or a tray.
- Retention.
Dependencies
Section titled “Dependencies”- None. It works on either arm.