feat(tv-remote): add hardware and media buttons for TV targets

Merged
MI
1d ago
+497-53

Summary

Extend tv-remote with 22 volume, power, media, channel, and color buttons plus android-keycode:N on Android TV (local ADB and Limrun). Keep TV-only admission. tvOS and Vega retain their eight navigation buttons and refuse unsupported buttons before dispatch.

Remove the unshipped hardware-key command and its parallel runtime operation. Phone controls are scoped separately in #3848. Scope: 23 files; no phone or Appium expansion and no new flags.

agent-device tv-remote volume-down --platform android --target tv
agent-device tv-remote android-keycode:300 --platform android --target tv
await client.command.tvRemote({ button: 'media-play-pause', platform: 'android', target: 'tv' });

Validation

Tested SHA: 1276904d752bdf66b297ad6e9eaccd063fd5ebbb.

  • pnpm check:affected --run --head HEAD: passed, exactCommit: true. Receipt: run-yjck6Z/receipt.json (summary in the update comment).
  • All 1,027 related files / 9,285 tests passed, including provider scenarios. Format, lint, typecheck, layering, Fallow, build, command docs, links, and prose passed.
  • Claude independent review: recording finding fixed; final follow-up found no remaining issues.
  • Live TV evidence: Android TV replay dispatched 25/85/24, changed/restored volume, and used helper 0.21.29-dev; tvOS refused before button dispatch.
  • Draft: direct current-head CLI response echoes and an unchanged tvOS runner log remain pending. T3’s pinned 0.21.25 launcher requires replay; failure diagnostics request a snapshot. GitHub owns device/provider CI obligations; skipped lanes are not passes.