feat: scrobbling, genre grid redesign with detail view + play button

- Scrobble to Navidrome on auto-advance (Android) and track end (web)
  so type=recent and type=frequent are accurate for the hero card
- Genre section: pill chips → grid cards with colored left bars
- Top 15 genres shown by default (sorted by song count), expand toggle
- Genre card: click → genre detail page with full song list
- Genre card: hover play button → shuffle-play without navigating
- Genre detail page reuses album-detail layout (back btn, stats, song list)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
HoneyandClaude Sonnet 4.6 committed 2026-05-21 09:18:56 +02:00
1 parent d3a1bf6a82
commit f79817410b
5 files changed
+115 -19

No files matched your search

+19 -2
View File
@@ -134,8 +134,8 @@
<div class="page active" id="page-home">
<div id="home-greeting" class="home-greeting"></div>
<div id="home-hero" class="home-hero"></div>
<div class="section-header" style="margin-top:20px"><span class="section-title">Genres</span></div>
<div id="home-genres" class="genre-chips"></div>
<div class="section-header" style="margin-top:20px"><span class="section-title">Genres</span><span class="section-more" id="home-genres-more" onclick="toggleAllGenres()" style="display:none">Alle anzeigen</span></div>
<div id="home-genres" class="genre-grid"></div>
<div class="section-header" style="margin-top:20px"><span class="section-title">Zuletzt gespielt</span></div>
<div class="scroll-row" id="home-recent"></div>
<div class="section-header"><span class="section-title">Zufällig</span><span class="section-more" onclick="navigate('random')">Mehr</span></div>
@@ -220,6 +220,23 @@
<div class="song-list" id="album-songs"></div>
</div>
<!-- GENRE DETAIL -->
<div class="page" id="page-genre-detail">
<button class="back-btn" id="genre-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="genre-cover-wrap" style="display:flex;align-items:center;justify-content:center;font-size:40px">🎵</div>
<div class="album-meta">
<div class="album-type">Genre</div>
<div class="album-name" id="genre-detail-name">—</div>
<div class="album-stats" id="genre-detail-stats"></div>
<div class="album-actions">
<button class="btn-play-all" id="btn-play-genre"><svg width="13" height="13" viewBox="0 0 24 24" fill="currentColor"><polygon points="5 3 19 12 5 21 5 3"/></svg>Shuffle</button>
</div>
</div>
</div>
<div class="song-list" id="genre-songs"></div>
</div>
<!-- STARRED -->
<div class="page" id="page-starred">
<div class="page-header"><div class="page-title">Favoriten ⭐</div></div>