Skip to content

Show download progress on requests #409

Description

@Quick104

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

  • Decode download as optional on MediaRequest, RequestTarget and RequestState, and decode the capability on RequestsFeatureStatus. An unknown phase must still decode.
  • Phone: a LinearProgressIndicator and "Downloading · 43% · about 12 min left", or the phase, in RequestListItem and on the request detail screen.
  • TV: the same in TvRequestListCard and on the TV request detail screen.
  • While My Requests or a request detail screen is visible and shows a request with download, reload every 30 seconds. Stop when nothing is downloading or the screen is no longer started.
  • Hide the ETA when it has passed or updated_at is more than 10 minutes old.
  • Tests: shared serialization with and without download, and the label and fraction formatting.

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

api-v2API v2 / Huma program (epic silo-server#135)enhancementNew feature or request

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions