Skip to content

Show music note for songs without cover art - #16

Merged
hatstand merged 1 commit into
mainfrom
claude/cover-placeholder
Sep 30, 2026
Merged

hatstand merged 1 commit into
mainfrom
claude/cover-placeholder

Conversation

@hatstand

Copy link
Copy Markdown

Clementine sends its "no cover" picture (a jewel case) for songs without cover art, which the app now recognizes and filters out. Songs without covers now display a music note icon instead, matching the Android remote's behavior.

Key changes:

  • Added Song.hasCover(_:) method to detect Clementine's "no cover" picture by checking if art_automatic and art_manual are both empty, or if art_manual is "(unset)"
  • Updated Song.init(metadata:) to use hasCover() when deciding whether to keep artData
  • Modified Artwork view to accept a Song? instead of just Data?, allowing it to distinguish between "no song playing" (Clementine mark) and "song without cover" (music note)
  • Added music note display in Artwork for songs without covers, styled as 40% of the artwork size in on-surface-variant color
  • Updated all Artwork call sites in PlayerView, SongDetailsView, and MiniPlayer
  • Added comprehensive tests in SongArtTests covering automatic covers, manual covers, and the "(unset)" case
  • Updated design documentation to reflect the new behavior

The change ensures the app properly handles Clementine's "no cover" picture while maintaining visual consistency with the Android remote.

https://claude.ai/code/session_015dJQ8hcp9Vd6tD9gJAXxTx

Clementine sends its "no cover" picture, a jewel case that isn't square
and was cropped, as the art of a song without a cover. The app now
recognises it by the song's empty art_automatic and art_manual (or an
art_manual of "(unset)") and drops it, as the Android remote does, so
the player, the mini player, the song details and the lock screen show
no cover for it. The artwork then shows a music note, as Android's does;
the Clementine mark is left for when nothing's playing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015dJQ8hcp9Vd6tD9gJAXxTx
@github-actions

Copy link
Copy Markdown

Screenshots

From run 36698787369, against a real Clementine. Left: main. Right: this pull request, light and dark.

Screen main This PR This PR, dark
01_connect
02_queue
03_player
04_connection
05_settings
06_library
07_library_album
08_search
09_outputs
10_internet
11_internet_radio

@hatstand
hatstand merged commit 8dd9bfe into main Sep 30, 2026
4 checks passed
@hatstand
hatstand deleted the claude/cover-placeholder branch September 30, 2026 10:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants