StreamInfo gains is_live: true when the core read the player response's
isLive (its stream type is then VideoLiveStream), false for an ordinary
video and for a stream that has just ended. On 2026-10-24 (UTC) the core's
stream lookup gave VideoLiveStream for 3 of 3 live videos tried and
VideoStream for the one regular video tried. The app carries it as
ResolvedPlayback.live; the play queue uses it in a later commit.
SearchItem gains no_views_yet, set only from a channel's RSS feed when
its <media:statistics views="0"/> says no views. In 160 channel feeds
captured on 2026-10-22, all 2,184 entries carried that element and 8
had zero views; looked up on 2026-10-24, 4 of the 8 were upcoming
streams and 4 ordinary uploads (2 of them Shorts) published 3 minutes
to 46 hours before the capture. The count itself is still not shown.
StreamItem carries the mark as noViewsYet; the feed uses it in a later
commit.
A test pins that an RSS entry never carries a live state: the feed
overlays the lookup's live state only on an item whose own is None, so
an RSS entry marked live could never lose the mark. Before, marking
every RSS entry live passed every test.