fix(renderer+ux): frame-liveness watchdog (#558), dup-add button (#655)

- #558: a backend can be alive yet wedged (zero presented frames forever
  on legacy stacks). Vendored femtovg counts presented frames; a watchdog
  8s after window-ready re-arms the renderer sentinel and restarts, so
  the existing ladder degrades wgpu -> alt adapter -> GL -> software on
  its own instead of stranding the user on a blank window.
- #655: 'Add only new tracks' stays enabled with all-dupes (adds zero
  and closes) instead of disappearing as the primary action.

km
This commit is contained in:
vicrodh committed 2026-07-25 12:05:27 -06:00
1 parent f1eeaf9126
commit d99419f22d
4 files changed
+36 -6

No files matched your search

@@ -110,14 +110,15 @@ export component PlaylistDuplicateConfirmModal inherits Rectangle {
}
}
// Add only new tracks — skips the duplicates
// (executeAddTracks(true)). Disabled when there is
// nothing left to add (all dupes).
// (executeAddTracks(true)). Always the primary continue
// action (#655): with all-dupes it adds zero and closes
// (the Rust arm handles the empty set), so it must not
// disable — the mixed-case primary disappearing under
// the user's finger was the bug.
QbzPrimaryButton {
label: DuplicateConfirmState.busy ? @tr("Adding...") : @tr("Add only new tracks");
height: 34px;
enabled: !DuplicateConfirmState.busy
&& DuplicateConfirmState.duplicate-count
< DuplicateConfirmState.total-count;
enabled: !DuplicateConfirmState.busy;
clicked => {
DuplicateConfirmActions.add-new-only();
}