Promote ios + target:'tv' into an explicit tvOS Apple-OS leaf. Behavior already exists (XCUIRemote focus, no coordinate tap) — this is a rename/extraction, not a rewrite.
Do-not-flatten
Preserve the tvOS focus-only interaction contract: tap(x,y) returns UNSUPPORTED off the focused element. A uniform tap across Apple OSes is wrong by design — keep the per-OS gate.
Sites (~11 non-test target === 'tv' / !== 'tv')
src/platforms/apple/core/devices.ts:117, src/platforms/ios/interactions.ts:270,284,333, src/core/dispatch-interactions.ts:424,455,869,893,920, src/core/interactors/apple.ts:92,110, src/core/command-descriptor/registry.ts:45,49,54. Plus ~23 target:'tv' test fixtures.
(src/platforms/android/app-lifecycle.ts:158 is Android-TV — unrelated, do not touch.)
Gate
Tests that preserve focus-only navigation + the UNSUPPORTED coordinate-tap behavior.
Refs
perfect-shape.md §7; ADR-0009. (Phase 3 step d.2.)
Part of #972 (Phase 3 — Apple PlatformPlugin).
Promote
ios + target:'tv'into an explicit tvOS Apple-OS leaf. Behavior already exists (XCUIRemote focus, no coordinate tap) — this is a rename/extraction, not a rewrite.Do-not-flatten
Preserve the tvOS focus-only interaction contract:
tap(x,y)returnsUNSUPPORTEDoff the focused element. A uniform tap across Apple OSes is wrong by design — keep the per-OS gate.Sites (~11 non-test
target === 'tv'/!== 'tv')src/platforms/apple/core/devices.ts:117,src/platforms/ios/interactions.ts:270,284,333,src/core/dispatch-interactions.ts:424,455,869,893,920,src/core/interactors/apple.ts:92,110,src/core/command-descriptor/registry.ts:45,49,54. Plus ~23target:'tv'test fixtures.(
src/platforms/android/app-lifecycle.ts:158is Android-TV — unrelated, do not touch.)Gate
Tests that preserve focus-only navigation + the UNSUPPORTED coordinate-tap behavior.
Refs
perfect-shape.md §7; ADR-0009. (Phase 3 step d.2.)
Part of #972 (Phase 3 — Apple PlatformPlugin).