v2.4.0
- HACS Brand Assets: Standardized inline brand icons (256×256 and 512×512 @2x variants) under
custom_components/time_machine/brand/to comply with Home Assistant's Brands Proxy API. - Search All Backups: Press Enter in the item search (or click "Search all backups") to filter the backup list down to snapshots that contain matching items. Results stream in as each backup is checked, so newer matches appear without waiting for the full scan. Works across Automations, Scripts, Lovelace, ESPHome and Packages, respects Show Changes Only, and resets when the search is cleared or a tab changes.
- Fixed: Support named/labeled automation and script sections (e.g.
automation yaml:,automation manual:) so multiple split configuration blocks are fully recognized and backed up. Automations stored one-per-file via!include_dir_listare now listed, diffed, and restored correctly (#74). - Fixed: Resolved live path validation failure when
!includeor!include_dir_*targets inconfiguration.yamlare wrapped in single or double quotes (#75). - Fixed: Resolved UI sidebar duplication and blank diff display issue when comparing split configuration automations and scripts without explicit IDs or with identical aliases.
- Fixed: Automatically resolve relative backup mount names (e.g.
HA_TM_NAS) to Supervisor network mount paths (/data/mounts/...). - Maintenance: Moved the add-on and Docker image to Node.js 24, replacing the end-of-life Node.js 20 base image so security fixes continue to ship (#76).
- Fixed: Every backup now writes its file manifest, so split-config automations and scripts appear in full backups too, not just smart backups.
- Settings: Added GitHub and Donate shortcuts to the Settings footer.
- Performance: Parallelized backup directory scanning using
Promise.all, cutting initial load time from ~10s to under 1s for large backup sets (800+ snapshots on external storage). - Performance: Timestamps are now parsed directly from folder names for the common date-based naming format, eliminating per-folder
fs.statcalls entirely. - Performance: Mode-based manifest filtering (
automations,scripts,lovelace, etc.) now runs in parallel across all backups instead of sequentially. - Mobile: Backup list renders the first 40 items immediately on load — the list is interactive before the full set finishes streaming in the background.
- Mobile: Diff viewer is now a full-screen frame on mobile (edge-to-edge, no bottom sheet), maximising usable space on small screens.
- Mobile: Removed the redundant
×close button from the diff viewer header; Cancel and Restore buttons in the footer handle dismissal. - Mobile: The top title/logo header is now hidden on mobile — Home Assistant Ingress already provides its own app header.
- Mobile: "Restore This Version" button label shortened to "Restore" on narrow screens to avoid overflow.
- Mobile: Fixed search bar icon overlapping placeholder text on mobile by increasing left padding.
- Mobile: Fixed iOS WebKit tap-registration delay — backup list items are now selectable on first tap without waiting for the full list to load.