feat: partial album split view + artist page full-screen + Bibliothek iTunes integration

- Partial album detail: tapping incomplete albums now shows downloaded songs
  (normal playback) above and missing iTunes tracks (30s preview + download)
  below — on both Android and web PWA
- Android: ItunesArtistScreen now renders full-screen above the tab/search bar
- Android: ArtistDetailScreen (Bibliothek) now loads iTunes data in parallel —
  adds Weltweit populär section and In Library/Unvollständig/Nicht heruntergeladen
  album sections identical to the Erkunden artist page
- Fix: artist no longer appears in its own Similar Artists row
- Fix: duplicate album entries deduplicated by collectionId in categorizeAlbums

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
HoneyandClaude Sonnet 4.6 committed 2026-06-14 20:54:32 +02:00
1 parent b25e162806
commit afae5d94df
104 files changed
+8839 -9420

No files matched your search

+21 -1
View File
@@ -186,6 +186,26 @@
<div id="itunes-album-songs"></div>
</div>
<!-- PARTIAL ALBUM DETAIL (incomplete album: downloaded + missing tracks) -->
<div class="page" id="page-partial-album-detail">
<button class="back-btn" id="partial-album-back-btn"><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="15 18 9 12 15 6"/></svg>Zurück</button>
<div class="album-header">
<div class="album-cover" id="partial-album-cover-wrap"><div class="no-art">💿</div></div>
<div class="album-meta">
<div class="album-type">Unvollständig</div>
<div class="album-name" id="partial-album-detail-name">—</div>
<div class="album-artist-name" id="partial-album-detail-artist"></div>
<div class="album-stats" id="partial-album-detail-stats"></div>
<div class="album-actions">
<button class="btn-play-all" id="partial-album-play-btn"><svg width="13" height="13" viewBox="0 0 24 24" fill="currentColor"><polygon points="5 3 19 12 5 21 5 3"/></svg>Abspielen</button>
<button class="btn-outline" id="partial-album-dl-btn"><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>Fehlende laden</button>
</div>
</div>
</div>
<div id="partial-album-downloaded"></div>
<div id="partial-album-missing"></div>
</div>
<!-- ALBUMS -->
<div class="page" id="page-albums">
<div class="page-header"><div class="page-title">Alben</div></div>
@@ -1032,7 +1052,7 @@
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="6 9 12 15 18 9"/></svg>
</button>
<div class="np-tabs">
<button class="np-tab active" id="np-tab-player" onclick="switchNpTab('player')">Jetzt läuft</button>
<button class="np-tab active" id="np-tab-player" onclick="switchNpTab('player')">Player</button>
<button class="np-tab" id="np-tab-lyrics" onclick="switchNpTab('lyrics')">Lyrics</button>
<button class="np-tab" id="np-tab-queue" onclick="switchNpTab('queue')">Queue</button>
</div>