github vatax3/NuvioTVOS v1.0.10
1.0.10 — the artwork reaches the edge

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

Reported from a real Apple TV: a grey band down the left of the screen, and a menu sitting further in than it needs to.

Both were the same cause

The shell lays every destination out beside the menu column rather than under it, and that is load-bearing rather than a spacing choice: a leftward move only considers what lies to the left of the focused item, so as overlapping layers the pill and the content are not neighbours in any direction and LEFT — the whole interaction — has nothing to travel to. The column bought that gesture.

The backdrop was paying for it. The artwork stopped where the column did, at 204pt: a hard vertical seam with a tenth of the screen of flat grey in front of it.

It was never part of the bargain. The gap is published to each screen now, and the backdrop paints back over it — offset, not padding, because this is paint and not layout, so every focusable frame stays exactly where the focus engine last saw it and the gesture is untouched. Home in both layouts, and the detail screen, which had the same seam.

Worth recording because the first attempt looked right and was not: the widening has to happen at the frames inside the layer. Wrapping a fixed-width child in a wider frame does not widen it — the child is aligned in the new frame and the whole thing slides left, trading a seam on the left for a seam on the right. Measured at 80pt of bare background down the trailing edge.

The menu sits on the safe margin

tvOS already insets the scene by the 80pt title-safe margin every television is guaranteed to show, and the app was adding another 28 on top of it. The pills move from 108pt to 88pt — as close to the edge as a menu can go without gambling on a set with overscan.

Two more, sent while this was in progress

Horizontal rows in Settings had no delimited zone. They spilled out of the card they belong to, past the rounded corner and over the section beside them. scrollClipDisabled is all-or-nothing across both axes, and these rows genuinely need it for one of them — a chip lifts and glows on focus, and clipping to the scroller's own bounds shears the top and bottom off. Padded bounds, clip, then take the padding back out of the layout: horizontal clipped at the real edge, vertical not clipped at all.

About would not scroll. tvOS moves a scroll view by moving focus into something below the fold, and About and Licences are the only screens in the app made entirely of text — not one focusable thing on either, so the page was frozen at the top with the rest of it unreachable. Each block is a quiet focus stop now, which is also how you would read them.


Verified on the simulator by measuring the scanline at both screen edges before and after, and by walking About with the remote.

164 unit tests, 8 UI tests.

The IPA is unsigned — sideload it with your own signing.

Don't miss a new NuvioTVOS release

NewReleases is sending notifications on new releases.