Closes the two TV gaps in the store-screenshot automation, found while refreshing the Play/App Store listings:
Apple TV (App Store, 1920×1080) — the harness supported tools/screenshots.sh tvos all along; the screenshots job in apple.yml just never invoked it. The job now:
installs nightly + rust-src and builds the xcframework with BUILD_TVOS=1 (the same Tier-3 -Zbuild-std recipe the distribute job already runs green on this runner),
shoots tvOS with an explicit scene list (01-stream 02-hosts 05-settings 03-pair): the gamepad-console scenes are compiled out on tvOS, and an unknown scene name falls back to a normal app launch — the capture would silently be of the real, empty app,
stays best-effort (|| ::warning::), so a tvOS hiccup can never red the job. Timeout 75 → 90 min for the cold build-std build.
Note: the job skips PRs, so this leg first exercises on the merge-to-main push.
Android TV (Google Play, 16:9 1920×1080) — the console scenes existed but Roborazzi rendered everything at phone geometry with phone-* names. New TvScreenshotTest renders console-home, console-settings, console-controllers, connecting-console and the stream HUD at w960dp-h540dp-television-xhdpi = native 1920×1080 px, prefixed tv-. Verified locally: all six scenes render at exactly 1920×1080. android-screenshots.yml needs no change (it runs the whole unit-test task and uploads the whole output dir).
Follow-ups deliberately not in this PR: mock pads for the controllers scene (it honestly renders "no controller detected"), a tablet qualifier for Play's 7″/10″ slots.
Closes the two TV gaps in the store-screenshot automation, found while refreshing the Play/App Store listings:
**Apple TV (App Store, 1920×1080)** — the harness supported `tools/screenshots.sh tvos` all along; the `screenshots` job in `apple.yml` just never invoked it. The job now:
- installs nightly + `rust-src` and builds the xcframework with `BUILD_TVOS=1` (the same Tier-3 `-Zbuild-std` recipe the distribute job already runs green on this runner),
- shoots tvOS with an **explicit scene list** (`01-stream 02-hosts 05-settings 03-pair`): the gamepad-console scenes are compiled out on tvOS, and an unknown scene name falls back to a *normal app launch* — the capture would silently be of the real, empty app,
- stays best-effort (`|| ::warning::`), so a tvOS hiccup can never red the job. Timeout 75 → 90 min for the cold build-std build.
Note: the job skips PRs, so this leg first exercises on the merge-to-main push.
**Android TV (Google Play, 16:9 1920×1080)** — the console scenes existed but Roborazzi rendered everything at phone geometry with `phone-*` names. New `TvScreenshotTest` renders `console-home`, `console-settings`, `console-controllers`, `connecting-console` and the stream HUD at `w960dp-h540dp-television-xhdpi` = native 1920×1080 px, prefixed `tv-`. Verified locally: all six scenes render at exactly 1920×1080. `android-screenshots.yml` needs no change (it runs the whole unit-test task and uploads the whole output dir).
Follow-ups deliberately not in this PR: mock pads for the controllers scene (it honestly renders "no controller detected"), a tablet qualifier for Play's 7″/10″ slots.
Google Play's Android TV slot needs 16:9 1920x1080 shots and the App Store
needs Apple TV 1920x1080 — neither existed as automation output:
- apple.yml screenshots job now runs the tvos leg. The harness supported it
all along (tools/screenshots.sh tvos); what the job was missing is the
Tier-3 tvOS xcframework slices (nightly + -Zbuild-std, same recipe the
distribute job uses on this runner) and an explicit scene list — the
gamepad-console scenes are compiled out on tvOS, and an UNKNOWN scene
name falls back to a normal app launch, which would silently capture the
real empty app. Still best-effort: a tvOS hiccup warns, never reds.
- TvScreenshotTest renders the console scenes + the stream HUD at Android
TV geometry (w960dp-h540dp-television-xhdpi = native 1920x1080, no
resampling), prefixed tv- so the artifact separates the form factors.
Verified locally: 6 scenes, all 1920x1080.
android-screenshots.yml needs no change — it runs the whole unit-test task
and uploads the whole roborazzi output dir.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Closes the two TV gaps in the store-screenshot automation, found while refreshing the Play/App Store listings:
Apple TV (App Store, 1920×1080) — the harness supported
tools/screenshots.sh tvosall along; thescreenshotsjob inapple.ymljust never invoked it. The job now:rust-srcand builds the xcframework withBUILD_TVOS=1(the same Tier-3-Zbuild-stdrecipe the distribute job already runs green on this runner),01-stream 02-hosts 05-settings 03-pair): the gamepad-console scenes are compiled out on tvOS, and an unknown scene name falls back to a normal app launch — the capture would silently be of the real, empty app,|| ::warning::), so a tvOS hiccup can never red the job. Timeout 75 → 90 min for the cold build-std build.Note: the job skips PRs, so this leg first exercises on the merge-to-main push.
Android TV (Google Play, 16:9 1920×1080) — the console scenes existed but Roborazzi rendered everything at phone geometry with
phone-*names. NewTvScreenshotTestrendersconsole-home,console-settings,console-controllers,connecting-consoleand the stream HUD atw960dp-h540dp-television-xhdpi= native 1920×1080 px, prefixedtv-. Verified locally: all six scenes render at exactly 1920×1080.android-screenshots.ymlneeds no change (it runs the whole unit-test task and uploads the whole output dir).Follow-ups deliberately not in this PR: mock pads for the controllers scene (it honestly renders "no controller detected"), a tablet qualifier for Play's 7″/10″ slots.