Browsing
Everything you can browse comes from an addon. With no addons installed, the home feed is empty and says so; see Addons.
#Home
The home page is assembled from four things, each arriving independently behind its own skeleton:
- a rotating hero spotlight drawn from your catalogs,
- continue watching, enriched with real titles and artwork rather than the raw content ids the progress records hold,
- your library,
- a row per catalog your addons expose: the first eight by default, or the ones you arranged in Settings → Home.
None of it blocks the page. Navigation completes on the shell, and each row fills in when its addons answer. A row whose addon fails degrades to empty rather than taking the page down with it, and the page distinguishes "you have no titles yet" from "we could not reach your addons" — the first offers to add an addon, the second offers a retry.
#Discover
The full catalog browser: any catalog from any installed addon, filtered by genre, paginated. Catalogs that advertise genre or skip support get the corresponding controls; those that do not are simply listed.
#Search
Search fans out across every addon that serves a search catalog and merges the results. Recent queries are remembered locally so a repeat search is one click.
#Calendar
The calendar lists the episodes of the series in your library: what aired in the past week and what is coming up, grouped by day (Today, Tomorrow, then the weekday and date, in your time zone and language). Each episode opens its series' page. Dates come from the same place as a detail page's "Airs" line: the addon's own episode listing, then TVmaze for the next airing when the listing has run out. A series whose addon cannot be reached is left out rather than failing the page. On a phone it is a tab of its own, between Library and Profile.
The library marks a series New episode when an episode came out in the last seven days that you have neither started nor have in your watch history.
#Detail pages
A title's page carries:
- synopsis, cast and crew, IMDb rating, trailer,
- the season and episode carousel for a series,
- for a series still airing, when the next episode airs ("Airs Sep 28 : S38E1 · Title"). From the addon's own listing when it dates an unaired episode; otherwise from TVmaze, which is looked up by IMDb id, so a series known only by a TMDB or Kitsu id gets no date,
- a where to watch row: the official streaming, rent and buy options for
your region, from JustWatch. This is availability metadata, and the links send
you to the rights holder's own paid source. Set your region in Settings →
Playback, or leave it on
autoto derive it from the browser.
Cast details (photo, short biography) come from Wikipedia's public REST summary
API, fetched from the browser — Wikipedia sends
Access-Control-Allow-Origin: *, so no third-party biography text transits the
server. Those fetches share a small global request budget so a cast list of
thirty people does not open thirty connections.
#Why pages feel the way they do
Everything a page needs for its URL is fetched by the server, for that URL, and streamed down as it resolves. The alternative — fetching from the browser after the page has shipped and hydrated — costs a full extra round trip that can only start once the device is ready, and makes first paint hostage to the slowest phone on the network. See Architecture.
This guide lives in the project repo: edit it there, and this page follows with the next release.