github vatax3/NuvioTVOS v1.0.8
Nuvio for Apple TV 1.0.8

latest releases: v1.0.44, v1.0.43, v1.0.42...
one month ago

The hero on Home stays put now. Sideload over 1.0.7; the About screen prints
1.0.8 (10).

It was scrolling away

1.0.7 made the hero follow the cursor. It was still wrong in a second way, and
this is the half that was reported as "half hidden": it scrolled. The hero and
the rails were in one scroll view, so focusing the first poster pushed the
details up and off the top of the screen.

Android's Modern home is not a scrolling column. The hero is a fixed layer and
the rows scroll inside their own viewport at the bottom of the screen. That
is the point of the layout — the details describe the card you are on, so they
cannot slide away the moment you touch a rail.

Classic is a different design and was already right: there the hero really is an
item in the list and does scroll, on both platforms.

The height of the rail viewport is worked out rather than copied. Android fixes
it at 52% of the screen, which it can afford because its poster size is fixed;
here it is a setting — Layout → Poster cards — so a constant clipped the row
labels at the default size and would have clipped far worse for anyone who
raised it. It is derived from what the row actually contains, and reserves room
for the tallest state it reaches: a card expanded into its backdrop grows a
metadata line and two lines of synopsis under it.

The menu was taking focus at launch

Opening the app sometimes left the highlight on the sidebar with the content
inert, and which one you got depended on how fast the catalogue loaded.

Two separate pieces of code, one trap between them. Reading @FocusState
straight after writing it returns what you just wrote, whether or not the focus
engine accepted it.

The rail list asked "did that work?" one line after asking for it, always got
yes, and gave up after a single attempt — so if the posters had not painted
within 250ms, nothing ever tried again.

And the shell's own repair loop treated focus sitting on the menu as proof it was
no longer needed. That is exactly backwards: a screen still fetching its first
catalogue has nothing focusable, so the engine takes the rail and stays there
once the posters arrive. It now stands down only when you have moved.

Verification

Checked on a simulator rather than reasoned about: the hero renders complete and
does not move, the first card takes focus and expands into its backdrop, and
nothing is clipped at the bottom of the screen.

129 unit tests and 8 UI tests pass.

Unchanged from 1.0.5: the Trakt, TMDB and debrid network paths, and the Android
collections round trip, are not verified here for want of the accounts.


Sideloading. Unsigned. Sign it with your own certificate and install with
Xcode, Sideloadly or your usual tool. Requires tvOS 17 or later.

Don't miss a new NuvioTVOS release

NewReleases is sending notifications on new releases.