feat(slint): offline content filtering and LocalLibrary offline default (D11/D12)

Offline, unavailable content is filtered out rather than shown broken:
sidebar, manager and folder popups list only local playlists and mixed
playlists with local sidecar rows (100% Qobuz hidden; empty folders
skipped); a mixed playlist opens an offline-subset detail rendering only
its local sidecar rows (plex rows under induced only, read-only, same row
machinery); MyQBZ grids and details retain only available items (qobuz =
cached album/track within grace, plex = induced only, local always) and
collections with zero available items drop from the grids.

Mixed-playlist names offline: kept from the session cache on a mid-session
flip; honest 'Playlist (N local)' fallback on a cold offline start (names
are not persisted anywhere locally - noted as a future membership-snapshot
roadmap item).

D12: an offline session entry roots navigation at LocalLibrary, and an
engine watcher auto-navigates there when the mode flips to offline while a
blocked Qobuz view is open (re-filtering open MyQBZ views in place). No
navigation on the offline-to-online edge.

cc
This commit is contained in:
vicrodh committed 2026-06-09 22:43:23 -06:00
1 parent da6e9599fb
commit 5fd41e8026
11 files changed
+638 -34

No files matched your search

+4
View File
@@ -1255,6 +1255,10 @@ export global PlaylistState {
in property <bool> is-local: false;
// D8: never offered for upload, never reaches Qobuz/QConnect.
in property <bool> offline-only: false;
// D11.a: a MIXED (Qobuz-id) playlist rendered OFFLINE from its local
// sidecar rows only (the Qobuz membership is not enumerable offline).
// Lets the AppShell mount the detail instead of the OfflinePlaceholder.
in property <bool> offline-subset: false;
// Track edit mode — rows show a selection checkbox and a bulk bar
// appears (remove selected). Only available to the owner.
in-out property <bool> multi-select-mode: false;