github vatax3/NuvioTVOS v1.0.2
Nuvio for Apple TV 1.0.2

latest releases: v1.0.46, v1.0.45, v1.0.44...
one month ago

Keyboard Escape no longer ends playback, three subtitle defects fixed, and the
port is now reconciled against a named upstream release. Sideload over 1.0.1 —
the About screen prints 1.0.2 (4), which is how this build is told from the
one it replaces.

Escape means what Menu means

From inside the subtitle panel, the keyboard's Escape key closed the panel and
ended playback, dropping the viewer back on the stream list. Menu, from the
remote, did the right thing — which is why it went unnoticed.

They are not the same event. The press recognizer that claims Menu for the
player filters on UIPress.PressType.menu, and a key is not that press type, so
Escape could never reach it; onExitCommand on tvOS is the Menu button, so it
did not catch it either. The key travelled up unclaimed and was read further out
as a request to dismiss the presentation, which takes the whole player with it.
The player claims Escape explicitly now, on the same ordered chain as the remote,
and stops it going further.

This one could not be tested. typeKey does not exist on tvOS at runtime and
typeText needs a focused text field, so no automated test can inject the key —
that is measured, not assumed. The reasoning above is from the code; the fix is
sound but unverified on hardware.

Subtitles

Three defects, found by checking upstream's changelog against this code rather
than taking it on trust.

A second speaker's line was dropped. Only one cue was ever drawn, so when two
cues overlap — two people answering each other, a translated sign over dialogue —
the second was discarded. Missing dialogue does not look like a bug on screen; it
looks like a subtitle nobody wrote.

Cyrillic and Greek were mojibake. The charset fallback chain could not work:
Windows-1252 assigns a character to nearly every byte, so it never failed and
everything behind it was unreachable. Foundation's detector now weighs the whole
buffer, with UTF-8 kept in front of it.

The first cue of a BOM-marked file never appeared. The byte order mark was
not stripped, so it became a real U+FEFF in front of the first cue number and
the cue failed to parse. Windows editors write one by default, so this was
common.

New: Strip SDH subtitles, in Playback settings. Sidecar tracks go through a
filter of Nuvio's own, muxed tracks through mpv's native one. It is deliberately
conservative — (SIGHS) and MAN: go, but (the one from before) and
But then: nothing stay, because eating a line of dialogue is the same failure
as the dropped-cue bug above.

Elsewhere

Refreshing the source list no longer empties it. A refresh is asked for while
comparing sources; blanking the list threw away both the comparison and whatever
the remote had focused. The chosen addon tab also survives it now.

Playback survives an audio route change. Connecting or disconnecting AirPods
deactivated the audio session and stopped the film. The session is retaken and
playback resumed, attributed by a short window so a deliberate pause is never
overridden. Untested — a simulator has no Bluetooth audio route.

The library's type tab is remembered, along with the debrid cloud list's.

Upstream parity

docs/UPSTREAM-PARITY.md records the port as reconciled through NuvioTV
0.8.7-beta. That claim is narrow on purpose: every upstream release up to
that tag has been read, and each change ported, judged inapplicable, or declined
with a reason. It does not claim the two apps have the same feature set — they
cannot, since roughly a third of each upstream release is ExoPlayer, Compose or
Android TV platform work. The version lines stay independent for the same reason.

66 tests, 18 of them new.


Unsigned and unnotarised. Sideload with your own tool; this is not distributed
through the App Store and there is no signing identity attached to it.

Don't miss a new NuvioTVOS release

NewReleases is sending notifications on new releases.