feat: artist in filename, hide album=title subtitle, remove title hover

Naming convention (download + edit-metadata):
  Before: {01 - }Title.ext
  After:  {01 - }Artist1, Artist2 - Title.ext
- ytdlp.js: builds fileBase with artist prefix; findExistingTrack checks
  both new and old format so existing files aren't re-downloaded
- metadata.js: findExistingTrack accepts optional safeArtist param
- novasonic-server.js: file rename on title edit now includes artist
  (falls back to Navidrome's stored artist if not provided in body)

Song list subtitle: hide album name when album === title (singles where
the album is named after the track appear to duplicate the title)

Player bar: removed .player-title:hover underline/colour effect

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
HoneyandClaude Sonnet 4.6 committed 2026-05-23 22:33:35 +02:00
1 parent 2dd3d7c7e5
commit 7ba5b8ce9a
5 files changed
+26 -17

No files matched your search

+2 -1
View File
@@ -40,7 +40,8 @@ export function makeSongItem(s, idx, list, { noArtistLink = false, noAlbumLink =
: `<span class="song-link" onclick="event.stopPropagation();s_goArtist(event,'${esc(a.name)}','${a.id||''}')">${esc(a.name)}</span>`
).join('<span style="color:var(--text3)"> • </span>')
: '';
const albumHtml = !noAlbumLink && (s.albumId||s.album)
// Hide album in subtitle when it's identical to the track title (common for singles)
const albumHtml = !noAlbumLink && (s.albumId||s.album) && s.album !== s.title
? `<span style="color:var(--text3)"> · </span><span class="song-link" onclick="event.stopPropagation();s_goAlbum(event,'${s.albumId||''}','${esc(s.album||'')}','${esc(s.artist||'')}','${s.artistId||''}')">${esc(s.album||'')}</span>`
: '';
const playsHtml = S.cfg.showPlayCount