feat: v1.30.0 — Discord RPC, offline bulk download, artist images, lazy loading, crossfade fix

- Discord Rich Presence (opt-in) — requested by @Bewenben (#49)
- Bulk offline download for playlists and artist discographies — requested by @Apollosport (#54)
- Offline Library filter tabs: All / Albums / Playlists / Discographies with artist grouping
- Artist images on Artists overview (opt-in, off by default) — reported by @Apollosport (#53)
- Image lazy loading via IntersectionObserver (300px margin) across all pages
- Fix: crossfade no longer triggers on manual track skip — reported by @netherguy4 (#35)
- Fix: playlist offline cache now stored as single entry (not per-album)
- Fix: image cache AbortController no longer blocks IDB writes
- Update toast: experimental auto-update hint + GH download link always visible (Win/Mac)
- Queue tech strip: genre removed
- Facebook theme: contrast, opaque badge/back button, queue tab labels
- "Save discography offline" label (was "Download discography")
- Fix: clearing empty playlists via updatePlaylist.view (Axios empty array workaround)
- starredOverrides propagated to AlbumDetail, Favorites, RandomMix

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Psychotoxical
2026-04-03 14:53:19 +02:00
parent 651b3cb050
commit c365140870
29 changed files with 1099 additions and 338 deletions
+35 -6
View File
@@ -8384,11 +8384,11 @@ input[type="range"]:hover::-webkit-slider-thumb {
--ctp-surface1: #D8DADF;
--ctp-surface2: #CED0D4;
--ctp-overlay0: #B0B3B8;
--ctp-overlay1: #65676B;
--ctp-overlay2: #4B4C4F;
--ctp-overlay1: #4B4C4F;
--ctp-overlay2: #3A3B3D;
--ctp-text: #050505;
--ctp-subtext1: #65676B;
--ctp-subtext0: #8A8D91;
--ctp-subtext1: #44464A;
--ctp-subtext0: #65676B;
--ctp-mauve: #1877F2;
--ctp-lavender: #2D88FF;
@@ -8418,8 +8418,8 @@ input[type="range"]:hover::-webkit-slider-thumb {
--volume-accent: #1877F2;
--text-primary: #050505;
--text-secondary: #65676B;
--text-muted: #606369;
--text-secondary: #44464A;
--text-muted: #65676B;
--border: #CED0D4;
--border-subtle: #E4E6EB;
@@ -8533,6 +8533,35 @@ input[type="range"]:hover::-webkit-slider-thumb {
border: 1px solid var(--border-subtle);
}
/* Album chip — opaque Facebook blue pill */
[data-theme='the-book'] .badge,
[data-theme='the-book'] .album-detail-badge {
background: #1877F2;
color: #ffffff;
}
/* Back button — opaque Facebook-style pill */
[data-theme='the-book'] .album-detail-back {
background: #E7F3FF;
color: #1877F2;
}
[data-theme='the-book'] .album-detail-back:hover {
background: #D8EAFD;
color: #0d6ae0;
}
/* Queue/Lyrics tab bar — white text on blue sidebar */
[data-theme='the-book'] .queue-tab-btn {
color: rgba(255, 255, 255, 0.65);
}
[data-theme='the-book'] .queue-tab-btn:hover {
color: #ffffff;
background: rgba(255, 255, 255, 0.1);
}
[data-theme='the-book'] .queue-tab-btn.active {
color: #ffffff;
}
/* ── ReadIt (Social Media) ──────────────────────────────────── */
[data-theme='readit'] {
color-scheme: dark;