feat: unified artist page with full iTunes/Navidrome album categorization

- loadArtistDetail now works for both Navidrome artists and iTunes-only
  artists (id=null + itunesArtistId). loadItunesArtistResults from global
  search now navigates to the same artist-detail page.
- Album sections: "In Library" (fully downloaded), "Unvollständig" (partial
  — e.g. 2/12 tracks), "Noch nicht heruntergeladen" (iTunes-only). Partial
  albums show X/Y badge and a direct download button on hover.
- iTunes albums now fetched via lookup endpoint (up to 200 albums) instead
  of search (max 20), fixing the missing-albums problem.
- "Alle X Songs in Library" expand button fetches all songs across albums
  and renders them grouped by album with play/context-menu support.
- Back button uses _navGoBack() for context-aware navigation.
- CSS: .section-count, .album-partial-badge, .card-dl-btn (hover reveal)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
HoneyandClaude Sonnet 4.6 committed 2026-04-26 19:10:52 +02:00
1 parent 5987e1f303
commit 72f6087043
4 files changed
+213 -140

No files matched your search

+4
View File
@@ -622,6 +622,10 @@ nav{flex:1;overflow-y:auto;padding:4px 10px}
.lyrics-line.past{color:rgba(255,255,255,.45)}
.lyrics-line.active{color:#fff;font-size:21px;font-weight:600}
.lyrics-plain{font-size:15px;line-height:1.9;color:rgba(255,255,255,.65);white-space:pre-wrap;text-align:center}
.section-count{font-size:11px;font-weight:500;color:var(--text3);background:var(--surface2);padding:2px 8px;border-radius:10px;flex-shrink:0}
.album-partial-badge{position:absolute;bottom:5px;left:5px;background:rgba(0,0,0,.72);color:#fff;font-size:9px;font-weight:700;padding:2px 6px;border-radius:4px;pointer-events:none;z-index:2}
.card-dl-btn{position:absolute;top:5px;right:5px;z-index:3;width:26px;height:26px;border-radius:50%;background:rgba(0,0,0,.65);border:none;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;transition:opacity .2s;backdrop-filter:blur(6px)}
.card:hover .card-dl-btn,.card-dl-btn:focus{opacity:1}
.np-queue-item{display:flex;align-items:center;gap:10px;padding:9px 6px;border-radius:10px;cursor:pointer;transition:background .15s}
.np-queue-item:hover{background:rgba(255,255,255,.06)}
.np-queue-item.nq-active .nqi-title{color:var(--accent)}