trackslash
VAULT-19 P2

Replace the Last Backup card on the Backups page with a header

0
All issues

Description

At the top of the Backups page, replace the Last Backup card (LastBackupSummaryView, the card with the colored bar) with a BackupHeroHeader like the one on Export. The last backup becomes the header's subtitle. For example, "Last backup 3 Sep 2026 at 10:04 · PDF export", or, when this device has never made a backup, a warning saying so.

  • Keep the staleness signal: tint the symbol the way the card's bar is tinted now (green under 7 days, orange under 30 days, red if older or never).
  • Choose a title and symbol that name the page. Consider an inline navigation title, as Export and Auto-Backup use, so the page doesn't say "Backups" twice.
  • Remove LastBackupSummaryView and its snapshot tests if nothing else uses them.
  • Add snapshot tests for the new header, in light and dark mode, for each case: no backup, recent, stale and very stale. For dark mode, use .environment(\.colorScheme, …), not .preferredColorScheme (see VAULT-14).

GitHub

0

No branches or pull requests linked.

Comments

1
Bradley

Fixed in https://github.com/badbundle/vault-app/pull/617 (merged as e3966d3b).

The new header: the Backups page now opens with a BackupHeroHeader instead of the Last Backup card, and its navigation title is inline.

  • Symbol: an external drive, the Backups icon, badged with Time Machine when there's a backup and an exclamation mark when there isn't.
  • Tint: staleness, as before: green under 7 days, orange under 30, red if older or never.
  • Title and subtitle: the title is "Backups". The subtitle gives the last backup on two lines ("Last backup 26 Sep 2026 at 9:35" / "Exported to PDF"), or a warning if this device has never made one.

Also changed:

  • The staleness thresholds moved into VaultBackupEvent.staleness(at:calendar:) in VaultFeed, where they're unit-tested.
  • LastBackupSummaryView and its snapshot tests are deleted.

Tests: header snapshots for each staleness in light and dark, plus a large text size.