You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Soloist download failure logs no underlying cause #950
A user's first Soloist download failed and the log only says:
[19:14:07][spotatui::infra::soloist::download][WARN] soloist: download failed: error decoding response body
[19:14:29][spotatui::infra::soloist::download][INFO] soloist: downloaded soloist_release_x86_64.tar.gz to /home/<user>/.local/state/spotatui/soloist-bin/1793195061/soloist
The second try 22 seconds later worked. error decoding response body is reqwest's top-level text for any error while it reads the body (a reset connection, the 30 s read_timeout, a cut stream), so the log does not say which one it was. run in src/infra/soloist/download.rs logs {error} only, without the source chain.
Expected: the warning shows the underlying cause. A single automatic retry in fetch for a body read error would also have saved the user the second click.
Steps to reproduce
Set Playback Engine to Soloist on a machine without the binary.
Have the connection drop or stall during the download.
The log shows download failed: error decoding response body and nothing more.
Frontend
Terminal app
Source
Spotify
spotatui version
0.47.0
OS
Debian
How you installed spotatui
Download from GitHub Releases
Debug log
The two lines above are from the user's log; the rest of it is unrelated librespot audio-key errors from before the switch.
A user's first Soloist download failed, and the log only said soloist: download failed: error decoding response body. That text is reqwest's top-level message for any error while reading the body, so the log hides the real cause. A second try 22 seconds later worked. The reporter wants the warning to show the full error source chain, and suggests one automatic retry in fetch when the body read fails. The changelog does not show this as fixed.
Key points
spotatui 0.47.0 from GitHub Releases on Debian, terminal app, Spotify source.
Log line: soloist: download failed: error decoding response body. A retry 22 seconds later downloaded soloist_release_x86_64.tar.gz.
The reporter says the error can come from a reset connection, the 30 s read_timeout or a cut stream, and the log does not say which.
run in src/infra/soloist/download.rs logs only {error}, without the source chain.
Suggested: log the underlying cause, and retry once in fetch on a body read error.
Where to look
src/infra/soloist/download.rs: run logs the warning, and fetch sets the 30 s read_timeout and reads the body with response.chunk(). Also, the failed helper turns each error into a String with to_string(), so the source ch
src/core/app/soloist.rs: Probably holds soloist_download_finished and soloist_download_progress, which take the download result and progress. A retry would have to fit with them.
Possible duplicates: none found
Compared against 44 open and 100 recently closed issues.
I can take this: the download warning will include the full error chain (the underlying connection reset or timeout, not just "error decoding response body"). The automatic retry I would keep as a separate follow-up.
Activity
spotatui commentedon Oct 28, 2026
🎧 spotatui triage
Auto-triaged with
claude-opus-5-5.Label:
enhancementLikely area: Soloist binary download (infra/soloist)
Summary
A user's first Soloist download failed, and the log only said
soloist: download failed: error decoding response body. That text is reqwest's top-level message for any error while reading the body, so the log hides the real cause. A second try 22 seconds later worked. The reporter wants the warning to show the full error source chain, and suggests one automatic retry infetchwhen the body read fails. The changelog does not show this as fixed.Key points
soloist: download failed: error decoding response body. A retry 22 seconds later downloaded soloist_release_x86_64.tar.gz.read_timeoutor a cut stream, and the log does not say which.runin src/infra/soloist/download.rs logs only{error}, without the source chain.fetchon a body read error.Where to look
src/infra/soloist/download.rs:runlogs the warning, andfetchsets the 30 s read_timeout and reads the body withresponse.chunk(). Also, thefailedhelper turns each error into a String withto_string(), so the source chsrc/core/app/soloist.rs: Probably holdssoloist_download_finishedandsoloist_download_progress, which take the download result and progress. A retry would have to fit with them.Possible duplicates: none found
Compared against 44 open and 100 recently closed issues.
niukanen1 commentedon Oct 28, 2026
I can take this: the download warning will include the full error chain (the underlying connection reset or timeout, not just "error decoding response body"). The automatic retry I would keep as a separate follow-up.
fix(infra): include the error source chain in soloist download failur…