Fixes
- Fix crash in the scheduler when a profile no longer exists
- Schedule runs beyond QTimer's 24.8 day ceiling by re-arming a deadline timer in chunks (#2547)
- Detect resume from sleep on systems without logind (#2537)
- Release the main window's native window when it is closed (#2555)
- Keep a plain
vortarun alive after its window is closed on macOS (#2556)
Performance
- Cut ~150 MB of startup memory on macOS by loading Sparkle without PyObjC's class scan (#2551)
- Stop growing
PATHon every Borg job on macOS (#2552)
Scheduler groundwork
- Add
JobModel, a persistent scheduler job store (#2530) - Add
SchedulerPauseModelso pauses survive a restart (#2532)
Translations
- Move string extraction to
pylupdate6and resync every locale (#2546, #2543) - Improve and complete the Swedish translation (#2539)
- Update macFUSE wording (#2542)
Internal
- Convert the archive, source file and log tables to
QTableView+QAbstractTableModel(#2515, #2517, #2519, #2523) - Peel diff, rename, delete and check/compact/prune out of
ArchiveTabintoviews/archive/helpers (#2525, #2526) - Refactor
MiscTabto use a store helper for settings filtering (#2514) - Packaging: collect
assets/UIrecursively in the PyInstaller spec (#2553); fetch Sparkle from upstream instead of the disabled cask