Silo-Server/silo-server#1643 adds download progress to requests in /api/v2. Today the phone and TV apps show a request's raw status as a badge or chip ("Queued", "Downloading"), and My Requests refreshes only on pull-to-refresh (phone) or the Refresh button (TV), so a requester can't tell how far along a download is.
What the server adds
All of it is additive.
- A
RequestDownload object with:
phase: queued, downloading, paused, stalled, importing or import_blocked. Treat an unknown value as downloading.
percent: omitted while the size is unknown.
bytes_total, bytes_left, estimated_completion_at, downloads and updated_at.
- It appears in three places:
MediaRequest.download, which combines all of a request's downloads
RequestTarget.download
RequestMediaState.download on GET /api/v2/requests/detail/{media_type}/{tmdb_id}
- Capability:
download_progress_supported on GET /api/v2/requests/status.
Work
This builds on #401 (adopting request state) but doesn't depend on it: show progress whenever download is present. Request administration stays on the web.
Tracking: Silo-Server/silo-server#1643
AI disclosure
- Harness: T3 Code (Claude Code agent harness)
- Tool(s): Claude Code, GitHub CLI
- Model(s): claude-opus-5-5
- Involvement: AI-assisted; filed at the maintainer's request
- Adversarial review: n/a
Silo-Server/silo-server#1643 adds download progress to requests in
/api/v2. Today the phone and TV apps show a request's raw status as a badge or chip ("Queued", "Downloading"), and My Requests refreshes only on pull-to-refresh (phone) or the Refresh button (TV), so a requester can't tell how far along a download is.What the server adds
All of it is additive.
RequestDownloadobject with:phase:queued,downloading,paused,stalled,importingorimport_blocked. Treat an unknown value asdownloading.percent: omitted while the size is unknown.bytes_total,bytes_left,estimated_completion_at,downloadsandupdated_at.MediaRequest.download, which combines all of a request's downloadsRequestTarget.downloadRequestMediaState.downloadonGET /api/v2/requests/detail/{media_type}/{tmdb_id}download_progress_supportedonGET /api/v2/requests/status.Work
downloadas optional onMediaRequest,RequestTargetandRequestState, and decode the capability onRequestsFeatureStatus. An unknown phase must still decode.LinearProgressIndicatorand "Downloading · 43% · about 12 min left", or the phase, inRequestListItemand on the request detail screen.TvRequestListCardand on the TV request detail screen.download, reload every 30 seconds. Stop when nothing is downloading or the screen is no longer started.updated_atis more than 10 minutes old.download, and the label and fraction formatting.This builds on #401 (adopting request
state) but doesn't depend on it: show progress wheneverdownloadis present. Request administration stays on the web.Tracking: Silo-Server/silo-server#1643
AI disclosure