Repository navigation
feat(android): detect Fire OS devices as Android TV targets and document Fire TV support - #3923
Conversation
|
Size Report
Startup median (7 runs, lower is better):
|
|
The Fire OS detection looks right at fb6a58a, and the 19 checks are green, but I could not find live evidence for the changed Android TV routes yet. I only read the code; I did not re-run the tests or the checks, and I had no Fire OS hardware or image, so the claim that real Fire TV firmware omits the leanback, television and That run listed no apps on a TV target and opened a package that resolves under LEANBACK, so the new LAUNCHER fallback never ran. The union listing (LEANBACK_LAUNCHER plus LAUNCHER) and the fallback launch only have fixture-adb unit tests. Can you run this on an Android TV emulator at fb6a58a? First, run Not blocking, take or leave: the TV category order now lives in two places, app-helpers.ts and app-lifecycle.ts, so a follow-up could share one resolver; commands.md:319 calls the LAUNCHER listing a fallback, but it is a union on every TV target (and for |
|
All items applied at
Live evidence, at
|
|
This PR is ready at bbcc604, and the Fire OS detection and the launcher category route now match the live output in the PR body. The earlier request for live evidence is satisfied, and I found no code problems. The Coverage job fails in the "Run coverage" step without printing a failing test, which matches the screenshot-diff.test.ts timeout described in #3933 (this PR is listed there as hit twice). This diff only touches the Android launcher and inventory code plus docs, so the failure looks unrelated, but that is attribution by signature, not proof. Merge waits only on that job, which should pass once the #3933 fix lands or the job is re-run. Not blocking, and you can take or leave these: |
|
Applied all three notes at
Unit tests: 46/46 green ( |
|
The PR is ready at 467e134. The rename, the removed private helper and the added export in platform-android keep the launch category lists unchanged, so the clean result from the earlier review (bbcc604) still applies. I did not re-run unit tests, and the live Android TV evidence was captured at bbcc604. Fire OS detection through amazon.hardware.fire_tv is covered by unit tests and Android TV emulator runs, not Fire OS hardware. Not blocking, take or leave: The Coverage check is the only one not passing. This PR does not touch |
…ent Fire TV support Fire TV devices running Fire OS are Android-based and automate over ADB, but TV detection only read the AOSP leanback/television features and app launch used the LEANBACK_LAUNCHER category alone. Fire OS devices declare amazon.hardware.fire_tv and may declare no leanback feature, and Fire OS apps can register under either launcher category. - Inventory: treat amazon.hardware.fire_tv as a TV feature signal. - App launch and listing on a TV target: query LEANBACK_LAUNCHER first, fall back to LAUNCHER, and launch the resolved component under the category it resolved under. - Docs and versioned help: Fire TV (Fire OS) connects as an Android TV device; Vega OS remains VVD-only and is a different OS; Electron/Chromium macOS apps automate through the accessibility tree.
|
Rebased onto main (
The live Android TV evidence in the body stands from |
* origin/main: fix(android): bound the dumpsys reads behind dialog and foreground checks (#3936) feat(android): detect Fire OS devices as Android TV targets and document Fire TV support (#3923) docs(macos): document Electron/Chromium app automation through the accessibility tree (#3932) test(capture-kit): encode solid test PNGs unfiltered to stay inside the unit budget (#3933) fix: guard bounded lifecycle and claim recovery (#3911) fix(ios): clear a long text value wherever the caret lands (#3908) fix(snapshot): stop iOS 27 floating-bar containers from covering content (#3912) ci: cache and bound the Linux desktop dependency install (#3919) fix: refuse resource operations in bounded composites (#3910) refactor(ios): decide bridge-failure scope and warning once (#3914) refactor(capture-kit): encode post-gesture stabilization baseline provenance (#3915) perf: expect the persistent session on Android snapshot-raw (#3913) test(ios): hold the fill read-count pin to the route it measures (#3909) perf(ios): admit tap text-input probes from fresh target evidence (#3881) feat(perf): time every Android command against the fixture app (#3902) chore: mark 0.21.31 as released
* origin/main: fix(android): bound the dumpsys reads behind dialog and foreground checks (#3936) feat(android): detect Fire OS devices as Android TV targets and document Fire TV support (#3923) docs(macos): document Electron/Chromium app automation through the accessibility tree (#3932) test(capture-kit): encode solid test PNGs unfiltered to stay inside the unit budget (#3933) fix: guard bounded lifecycle and claim recovery (#3911) fix(ios): clear a long text value wherever the caret lands (#3908) fix(snapshot): stop iOS 27 floating-bar containers from covering content (#3912) ci: cache and bound the Linux desktop dependency install (#3919)
* origin/main: fix(android): bound the dumpsys reads behind dialog and foreground checks (#3936) feat(android): detect Fire OS devices as Android TV targets and document Fire TV support (#3923) docs(macos): document Electron/Chromium app automation through the accessibility tree (#3932) test(capture-kit): encode solid test PNGs unfiltered to stay inside the unit budget (#3933) fix: guard bounded lifecycle and claim recovery (#3911) fix(ios): clear a long text value wherever the caret lands (#3908) fix(snapshot): stop iOS 27 floating-bar containers from covering content (#3912) ci: cache and bound the Linux desktop dependency install (#3919)
Summary
Fire TV devices running Fire OS are Android-based and automate over ADB, but the docs framed TV support as Android TV / tvOS / Vega VVD only, and TV detection missed them: detection read only the AOSP leanback/television features, while Fire OS declares
amazon.hardware.fire_tv(Amazon, "Identify Fire TV Devices") and may declare no leanback feature. App launch and listing on a TV target queriedLEANBACK_LAUNCHERonly, while Fire OS apps can register under either launcher category.launcher-categories.ts(new): one shared TV/mobile launcher-category resolver;app-lifecycle.tsandapp-helpers.tsboth read launch, fallback, and listing categories from it. TV listing is the union ofLEANBACK_LAUNCHERandLAUNCHER; launch prefersLEANBACK_LAUNCHERand falls back toLAUNCHER, launching under the category the component resolved under.inventory.ts:amazon.hardware.fire_tvcounts as a TV feature signal, so a Fire TV is discovered withtarget=tv.help tv: Fire TV (Fire OS) = Android TV backend over ADB (adb connect <ip>:5555, ADB debugging); Vega OS remains a different, VVD-only OS. Docs state only the Android 6.0 (API 23) helper requirement; no per-command enumeration beyond what the Android TV backend runs.Validation
df2f9120ce66426d384a228b4cb813f7b68fe67a: rebased onto main after test(capture-kit): encode solid test PNGs unfiltered to stay inside the unit budget #3933 (coverage timeout fix) and docs(macos): document Electron app automation through the accessibility tree #3932 (Electron docs) merged; conflicts resolved by keeping main's Electron sentences and only adding the Fire OS wording, so no Electron text is re-added or duplicated. The one post-467e134change is the review's single-spelling note:androidLaunchCategorynow returnsandroidLauncherCategories(target)[0]!.pnpm check:affected --run --head df2f9120ce66426d384a228b4cb813f7b68fe67a: all runnable checks passed,exactCommit=true(receipt.tmp/validation/run-05ZPGb/receipt.json).467e13402ed220e58fdac45d42a53f179a7f1303adds only the review's naming/dedup/assertion refactor inlauncher-categories.ts/app-lifecycle.ts/app-helpers.ts; the emitted adb argv is byte-identical to thebbcc604runs quoted below (the argv unit tests re-ran green at the new head).pnpm check:affected --run --head 467e13402ed220e58fdac45d42a53f179a7f1303: all runnable checks passed,exactCommit=true(receipt.tmp/validation/run-VsQOlP/receipt.json). Unit tests: Fire OS detection on thepm list featurespath and thecmd package has-featurepath (device that failsro.build.characteristics, answers no AOSP leanback/television feature, and answersamazon.hardware.fire_tvtrue — decided tv before the feature-list probe, asserted); TV fallback argv; TV listing queries both categories on the daemon and executor-helper paths. Each new production behavior fails on base for the intended reason.bbcc604599, on emulators created for this run: Android TVfireos_docs_tv(android-tv API 34, arm64, emulator-5554) and phonefireos_docs_phone(google_apis API 35, emulator-5556), both removed after. Two purpose-built APKs installed:com.example.fireosdocs(LAUNCHER-only activity) andcom.example.fireosdocslb(LEANBACK_LAUNCHER-only). adb argv captured with a forwarding wrapper that logs each invocation, then execs the real platform-tools 37.0.1 adb; CLI built from the head sha.1.
apps --target tvlists the LAUNCHER-only package next to the leanback app:wrapper log — both category queries ran:
2.
open com.example.fireosdocs --target tvruns the fallback and the app resumes:wrapper log — primary
-c LEANBACK_LAUNCHER -pstart (which fails on the device with raw adb'sError: Activity not started, unable to resolve Intent { ... cat=[android.intent.category.LEANBACK_LAUNCHER,android.intent.category.DEFAULT] ... pkg=com.example.fireosdocs }), thenresolve-activityforLEANBACK_LAUNCHER(misses), thenresolve-activityforLAUNCHER(resolves), then the secondam start -nwith-c LAUNCHER:3. Mobile-target open on the phone emulator still runs one
am start -c LAUNCHER(zero LEANBACK occurrences in the whole request log):e9250ed(pre-amend):devicestarget=tv,snapshot -ion the helper backend (helperVersion 0.21.32-dev),tv-remotedown/select/volume-down/home/back/android-keycode,screenshot1920x1080,logs,network dump,is visible/is focusedselectors,close.amazon.hardware.fire_tvrests on unit tests against the documented feature format plus the live Android TV runs above, not on Fire TV firmware.🤖 Generated with Claude Code