Sources/App/PlayerView.swift:66:
if player.current?.artwork == nil, player.duration > 0 {
VideoSurface(view: player.videoView)
The comment says "VLC-only video (mkv/webm/…) draws here; audio shows the placeholder square" — but the condition never checks whether the item is video. duration > 0 is true for audio too, so any audio file with no embedded cover renders the (empty) VLC video surface.
The music.note placeholder in the else branch is only reachable while duration == 0, i.e. before load completes — so in practice it never shows for a loaded track.
Impact — audio files without embedded art show a blank box instead of the placeholder.
Fix sketch — Player.Item has no isVideo flag; LibraryItem does. Thread it through and gate the branch on it rather than on duration.
Possibly related to #3, but distinct: that one is about playlist entries being routed audio-only by design.
Sources/App/PlayerView.swift:66:The comment says "VLC-only video (mkv/webm/…) draws here; audio shows the placeholder square" — but the condition never checks whether the item is video.
duration > 0is true for audio too, so any audio file with no embedded cover renders the (empty) VLC video surface.The
music.noteplaceholder in theelsebranch is only reachable whileduration == 0, i.e. before load completes — so in practice it never shows for a loaded track.Impact — audio files without embedded art show a blank box instead of the placeholder.
Fix sketch —
Player.Itemhas noisVideoflag;LibraryItemdoes. Thread it through and gate the branch on it rather than onduration.Possibly related to #3, but distinct: that one is about playlist entries being routed audio-only by design.