fix(client/apple): let the pad drive two overlays on tvOS #458

Merged
enricobuehler merged 2 commits from fix/tvos-overlay-pad-input into main 2026-08-30 23:35:12 +00:00
2 Commits
Author SHA1 Message Date
enricobuehler 77d75c73c1 Merge branch 'main' into fix/tvos-overlay-pad-input
apple / swift (pull_request) Successful in 2m6s
apple / distribute (pull_request) Skipped
apple / screenshots (pull_request) Skipped
ci / web (pull_request) Successful in 1m58s
ci / docs-site (pull_request) Successful in 1m57s
ci / docs-drift (pull_request) Successful in 51s
ci / bun-nix (pull_request) Successful in 51s
ci / rust-arm64 (pull_request) Successful in 3m44s
ci / rust (pull_request) Canceled after 6m56s
2026-08-30 22:44:31 +00:00
enricobuehler f6f40f4dd3 fix(client/apple): let the pad drive two overlays on tvOS
apple / swift (pull_request) Successful in 2m12s
apple / distribute (pull_request) Skipped
apple / screenshots (pull_request) Skipped
ci / web (pull_request) Successful in 2m8s
ci / bun-nix (pull_request) Successful in 36s
ci / rust-arm64 (pull_request) Successful in 3m8s
ci / docs-site (pull_request) Successful in 2m57s
ci / docs-drift (pull_request) Successful in 1m6s
ci / rust (pull_request) Failing after 6m22s
On an Apple TV the wake prompt was a dead end: the host failed to wake,
and neither Cancel nor Try Again could be pressed with a controller.

`ConnectOverlay` and `TrustCardView` each mount a zero-size view that
owns a `GamepadMenuInput` for the overlay's lifetime, and both gated it
to iOS and macOS. That is not tvOS being driven some other way — the
console home underneath runs the same binding there, and it gates itself
inactive while an overlay is up, so with no binding in the overlay
nothing read the pad at all. The trust card had the same hole, between a
pad-only Apple TV and every unknown host.

`GamepadPrompt` keeps its exclusion: it replaces system alerts that the
tvOS focus engine already drives, which its own header says.

Both bindings need an EXTENDED gamepad, the same thing that turns the
console UI on, so this covers the takeover exactly. A Siri Remote is not
one and reaches these buttons through the focus engine or not at all;
whether focus lands in either overlay is unverified and not addressed.

Refs #453
2026-08-30 23:22:16 +02:00