Silo now lets a profile add a movie or series to its watchlist before the
library has it, usually from Discover. The server keeps the entry by TMDB ID,
can request the title, and moves the entry onto the library watchlist when the
title arrives. The iOS, tvOS and macOS apps can't add these titles and don't
show them, so a profile that adds one on the web sees nothing on Apple devices
until the title arrives.
Server change: Silo-Server/silo-server#1711. Contract, in that PR: docs/architecture/api-contract.md
("Watchlist titles") and docs/architecture/external-watchlist.md. The server
change is merged.
Check GET /api/v2/requests/status first. Show everything below only when
watchlist_titles_supported and requests_enabled are both true. The server
reports watchlist_titles_supported false while requests are off, when the title
operations answer 409 capability_disabled.
What to build:
- Discover watchlist button. On a Discover title and its poster cards,
add "Add to Watchlist" / "On Watchlist". Read the state from in_watchlist
on search, section, browse and detail results. Add with
PUT /api/v2/watchlist/titles/{media_type}/{tmdb_id} and remove with
DELETE on the same path. The add answers 200 with item_id set when the
library already has the title, and with the title's request state. Both
calls are non_retryable: don't retry them automatically after an
uncertain response.
- "Not in your library yet" on the watchlist. List entries with
GET /api/v2/watchlist/titles (limit, cursor). Show a poster, title,
year and status for each, with no Play action. status is active,
needs_review or removed; read an unknown value as active. For
needs_review ("TMDB lists it twice") and removed ("No longer listed on TMDB"),
offer a search for the title and a remove action. While request.download
is present, show its progress. The web shows this as a second tab next to
"In your library", with the entry count.
- Request status badge. Add the
request_status card overlay to the
overlay settings and poster rendering. Offer it only when the settings
manifest_revision is at least 15; an older server rejects a stored value
that contains it. The web labels are "Downloading 43%", "Out Dec 18",
"Approved", "Awaiting approval", "Not requested", "Needs attention" and
"Not on TMDB".
- Profile setting. Add the profile setting
requests.watchlist_auto_request ("Request titles I add to my watchlist",
default on) to the app's request settings. watchlist_requests on the
request status is the effective answer for the acting profile. The web shows
the switch when that is true, or when the profile has turned the setting
off, so it can turn it back on.
Requests now carry source (direct or watchlist, open set). Nothing needs
to show it, but a model that decodes requests strictly must accept it.
Silo now lets a profile add a movie or series to its watchlist before the
library has it, usually from Discover. The server keeps the entry by TMDB ID,
can request the title, and moves the entry onto the library watchlist when the
title arrives. The iOS, tvOS and macOS apps can't add these titles and don't
show them, so a profile that adds one on the web sees nothing on Apple devices
until the title arrives.
Server change: Silo-Server/silo-server#1711. Contract, in that PR:
docs/architecture/api-contract.md("Watchlist titles") and
docs/architecture/external-watchlist.md. The serverchange is merged.
Check
GET /api/v2/requests/statusfirst. Show everything below only whenwatchlist_titles_supportedandrequests_enabledare both true. The serverreports
watchlist_titles_supportedfalse while requests are off, when the titleoperations answer
409 capability_disabled.What to build:
add "Add to Watchlist" / "On Watchlist". Read the state from
in_watchliston search, section, browse and detail results. Add with
PUT /api/v2/watchlist/titles/{media_type}/{tmdb_id}and remove withDELETEon the same path. The add answers200withitem_idset when thelibrary already has the title, and with the title's
requeststate. Bothcalls are
non_retryable: don't retry them automatically after anuncertain response.
GET /api/v2/watchlist/titles(limit,cursor). Show a poster, title,year and status for each, with no Play action.
statusisactive,needs_revieworremoved; read an unknown value asactive. Forneeds_review("TMDB lists it twice") andremoved("No longer listed on TMDB"),offer a search for the title and a remove action. While
request.downloadis present, show its progress. The web shows this as a second tab next to
"In your library", with the entry count.
request_statuscard overlay to theoverlay settings and poster rendering. Offer it only when the settings
manifest_revisionis at least 15; an older server rejects a stored valuethat contains it. The web labels are "Downloading 43%", "Out Dec 18",
"Approved", "Awaiting approval", "Not requested", "Needs attention" and
"Not on TMDB".
requests.watchlist_auto_request("Request titles I add to my watchlist",default on) to the app's request settings.
watchlist_requestson therequest status is the effective answer for the acting profile. The web shows
the switch when that is true, or when the profile has turned the setting
off, so it can turn it back on.
Requests now carry
source(directorwatchlist, open set). Nothing needsto show it, but a model that decodes requests strictly must accept it.