feat: timer scrobble (12s), artist topsong star+menu, play count toggle
Scrobbling: - Replace end-of-track scrobble with 12s timer approach - Android: schedule on onTrackChanged, cancel on pause - Web: schedule in playCurrent, cancel in togglePlay pause + onEnded - Skip/new track resets the timer automatically (new song ID) Artist top songs: - Add star button and 3-dots context menu to every top song row - Topsong grid expanded to 5 columns to fit action buttons Settings — play count toggle: - New "Bibliothek" section with toggle switch - When on: shows play count in album/playlist song rows - Artist page always shows play count regardless of toggle - Persisted in ns_cfg localStorage Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
f79817410b
commit
7e07fef7ba
7 files changed
+57
-13
No files matched your search
+2
-1
@@ -219,6 +219,7 @@ button:focus{outline:none}
|
||||
.song-info .song-artist{font-size:11px;color:var(--text2);margin-top:1px}
|
||||
.song-meta{display:flex;align-items:center;gap:6px}
|
||||
.song-dur{font-size:11px;color:var(--text3);font-family:var(--mono)}
|
||||
.song-plays{font-size:11px;color:var(--text3);font-family:var(--mono)}
|
||||
.song-actions{display:flex;gap:2px;opacity:0;transition:opacity .15s}
|
||||
.song-item:hover .song-actions{opacity:1}
|
||||
@media (hover:none),(pointer:coarse){.song-actions{opacity:1}}
|
||||
@@ -768,7 +769,7 @@ button:focus{outline:none}
|
||||
#spotify-enrich-status{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text2);padding:8px 12px;margin-bottom:8px;background:var(--surface);border:1px solid var(--border2);border-radius:8px;transition:opacity .4s}
|
||||
#spotify-enrich-status.done{color:var(--accent)}
|
||||
#spotify-enrich-status .enrich-spinner{width:12px;height:12px;border:2px solid var(--border2);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;flex-shrink:0}
|
||||
.topsong-item{display:grid;grid-template-columns:28px 44px 1fr auto;align-items:center;gap:10px;padding:7px 10px;border-radius:8px;cursor:pointer;transition:background .15s}
|
||||
.topsong-item{display:grid;grid-template-columns:28px 44px 1fr auto auto;align-items:center;gap:10px;padding:7px 10px;border-radius:8px;cursor:pointer;transition:background .15s}
|
||||
.topsong-item:hover{background:var(--surface)}
|
||||
.topsong-num{font-size:11px;color:var(--text3);font-family:var(--mono);text-align:center}
|
||||
.topsong-thumb{width:44px;height:44px;border-radius:6px;overflow:hidden;background:var(--surface2)}
|
||||
|
||||
Reference in new issue
Block a user