Skip to content

Qobuz Connect: two cases where the renderer screen stays empty - #794

Open
Gjuju wants to merge 2 commits into
moode-player:developfrom
Gjuju:contrib/qobuz-metadata-fallback
Open

Qobuz Connect: two cases where the renderer screen stays empty#794
Gjuju wants to merge 2 commits into
moode-player:developfrom
Gjuju:contrib/qobuz-metadata-fallback

Conversation

@Gjuju

@Gjuju Gjuju commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

The renderer screen can come up with nothing on it, for two unrelated reasons.
Both leave qbzactive=1, so the overlay is there, showing nothing.

1. The session is handed over paused

TrackStarted is the only writer of qbzmeta.json, and the file is truncated
when a session ends. The Qobuz app hands a session over paused, though: the
daemon loads the track and waits for a play command, so no TrackStarted is
emitted and the event log just repeats:

- Cover URL: empty
- Update cache: skipped

Measured: qbzactive=1, qbzmeta.json 0 bytes, while the daemon knew the
track, the artist and a position all along.

When the cache is empty, read .current_track from /api/queue (title,
artist, album, duration, artwork, bit depth and sample rate, which rebuild the
same SFORMAT string TrackStarted produces) instead of giving up.

2. A session reconnects mid-track

The Connect branch raises the overlay and tells the front end qbzactive1, but
never says what is on it -- the cache is pushed by TrackStarted and by a
play/pause change only. Reconnecting during a track therefore shows an empty
screen until the next track starts.

Observed: reconnect at 16:25:13 with the cache holding the track that was
playing; the screen stayed blank for two minutes, and filled in only when the
next TrackStarted fired.

Re-send the cache on connect.

Validation

Both on x86_64 and on a Raspberry Pi running stock 10.3.4:

  • taking a session without pressing play now shows the track instead of nothing
    (- Daemon metadata: <title> / <artist> in the event log);
  • reconnecting mid-track fills the screen immediately.

Four degenerate answers from the daemon were checked for the first case -- empty
queue, unreachable, malformed reply, no artwork -- and each leaves the variables
untouched, so the skip happens exactly as before. The second is guarded on the
cache being non-empty.

Reversibility

40 lines, no deletions. Reverting restores both previous behaviours.

Gjuju and others added 2 commits September 10, 2026 14:52
TrackStarted is the only writer of qbzmeta.json, and the file is truncated
when a session ends. The Qobuz app hands a session over PAUSED, though: the
daemon loads the track and waits for a play command, so no TrackStarted is
emitted and the renderer screen sits empty until playback is started -- the
event log just repeats "Cover URL: empty / Update cache: skipped".

The daemon knows the track the whole time. When the cache is empty, read
.current_track from /api/queue (title, artist, album, duration, artwork,
bit depth and sample rate, which rebuild the same SFORMAT string TrackStarted
produces) instead of giving up. A daemon that answers nothing -- empty queue,
unreachable, malformed reply -- leaves the vars untouched and the skip happens
exactly as before.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The Connect branch raises the renderer overlay and tells the front end
qbzactive1, but never says what is on it. The metadata cache is pushed by
TrackStarted and by a play/pause change only, so a session that reconnects
mid-track shows an empty renderer screen until the next track starts.

Observed on x86_64: reconnect at 16:25:13 with the cache holding the track
that was playing; the screen stayed blank for two minutes and only filled in
when the next TrackStarted fired.

Re-send the cache, guarded on it being non-empty so a reconnect with nothing
cached behaves exactly as before.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Gjuju Gjuju changed the title Qobuz Connect: show the track when the session is handed over paused Qobuz Connect: two cases where the renderer screen stays empty Sep 10, 2026
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.

1 participant