Skip to content

Promote dev → staging (remove Android Auto from the shipping app) - #810

Merged
patrickrb merged 3 commits into
stagingfrom
dev
Sep 9, 2026
Merged

patrickrb merged 3 commits into
stagingfrom
dev

Conversation

@patrickrb

Copy link
Copy Markdown
Owner

Promotes PR #809 to staging so the internal-track build carries a manifest with
no Android Auto marker.

What's in this promotion

Three commits, all one work item — clearing the Play Auto rejection.

The rejection. Play rejected the update under "Auto App Quality Guidelines:
Visual info on phone — Your app does not disable features requiring phone
interaction while in driving mode."
Both evidence screenshots were the same car
screen: the Auto idle state reading "Open FT8AF on your phone to start the FT8
engine"
— the fallback QsoStatusScreen/RecentDecodesScreen render whenever
MainViewModel.peekInstance() is null, i.e. any Auto connect before the phone
app has been opened. The car told the driver to pick up their phone, with
nothing gating it on the car being stopped.

This is the second Auto rejection in two months (versionCode 1327 was rejected
in July under the NAVIGATION category), so #809 takes Play's other path rather
than answering findings again.

c95b4a05 — made the car UI compliant. Idle message is status only
(car_engine_idle, en + pt-BR); the one phone-reaching action is wrapped in
ParkedOnlyOnClickListener so the host only runs it when parked.

5177c3de — unwired Auto from the shipping app. Dropped the
com.google.android.gms.car.application descriptor, the
androidx.car.app.minCarApiLevel meta-data and the FT8AFCarAppService
service; deleted res/xml/automotive_app_desc.xml; flipped
CarAppManifestWiringTest into a guard asserting Auto is unwired, recording
both rejections so a third revival is deliberate.

The car/ package, its tests and the androidx.car.app:app dependency stay
in-tree — dead but compiling — as they did after the July removal, and now carry
the compliance fix so a revival starts clean.

Verification

Follow-up outside the repo

Play Console → Advanced settings → Form factors still declares Android Auto.
Google requires Auto support removed from all active artifacts across tracks
before the Remove button works, so the order is: land this build on the
tracks that hold Auto artifacts (production via the manual workflow_dispatch
on the android-v* tag; replace/halt any open or closed testing builds), then
click Remove. Internal-track builds never trigger Auto review, but they do keep
the Remove button disabled.

🤖 Generated with Claude Code

https://claude.ai/code/session_01B4bi57TiMribneqcSBddRB

patrickrb and others added 3 commits September 9, 2026 13:03
Play rejected versionCode 2100 under "Auto App Quality Guidelines: Visual
info on phone — your app does not disable features requiring phone
interaction while in driving mode". The review evidence is the car-screen
idle state, which read "Open FT8AF on your phone to start the FT8 engine":
the car both instructed phone interaction and left it available while
driving.

The idle template is now status only ("FT8AF is not on the air yet. QSO
status appears here once it is running."), and the one action that does
reach the phone — starting the app so it can create the engine — is
wrapped in ParkedOnlyOnClickListener, so the Auto host runs it only when
the car is parked and otherwise shows its own "not available while
driving" notice.

Template content is split out from resource lookup so the guarantee is
unit-testable: CarIdleTemplateTest pins the action as parked-only, and
checks the shipped string itself for phone-interaction wording so a later
copy edit can't quietly reintroduce the rejection.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01B4bi57TiMribneqcSBddRB
Second Auto rejection in two months, so take Play's other path and stop
shipping as an Auto app rather than keep answering review findings.

versionCode 2100 was rejected under "Visual info on phone — your app does
not disable features requiring phone interaction while in driving mode";
versionCode 1327 was rejected in July under the NAVIGATION category ("does
not load map and user location"). The IOT/templates shape restored after
that first removal is what drew this one. No approved Auto category fits a
ham-radio QSO monitor well enough to be worth the review cycle right now.

- AndroidManifest.xml: drop the com.google.android.gms.car.application
  descriptor, the androidx.car.app.minCarApiLevel meta-data and the
  FT8AFCarAppService service. Nothing marks the app as Auto-enabled, so
  Play no longer routes it through Auto app-quality review.
- Delete res/xml/automotive_app_desc.xml (dead once the descriptor is gone).
- CarAppManifestWiringTest: flip back from "AA is wired in the approved IOT
  shape" to a guard asserting AA is unwired, with both rejections recorded
  so a third revival is a deliberate act.

The car/ Kotlin package, its tests and the androidx.car.app:app dependency
stay in-tree (dead but compiling), as they did after the July removal, so
the feature can be revived. It carries the previous commit's driving-mode
fix, so a revival starts compliant with the finding that triggered this.

The debug-only AAOS scaffolding (src/debug CarAppActivity +
DebugInjectReceiver) is untouched; it never merges into release.

Verified: full testDebugUnitTest suite (3724 tests, 0 failures) plus
processReleaseMainManifest — the merged release manifest keeps only the
car-app library's own entries (connection provider, permission activity,
notification receiver), which carry no Auto descriptor or CarAppService.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01B4bi57TiMribneqcSBddRB
…ompt

Remove Android Auto from the shipping app (clears the driving-mode rejection)
@codecov

codecov Bot commented Sep 9, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 43.75000% with 9 lines in your changes missing coverage. Please review.
✅ Project coverage is 42.40%. Comparing base (fe346e4) to head (caadc95).
⚠️ Report is 16 commits behind head on staging.

Files with missing lines Patch % Lines
...n/kotlin/radio/ks3ckc/ft8af/car/QsoStatusScreen.kt 46.66% 8 Missing ⚠️
...tlin/radio/ks3ckc/ft8af/car/RecentDecodesScreen.kt 0.00% 1 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@              Coverage Diff              @@
##             staging     #810      +/-   ##
=============================================
- Coverage      42.64%   42.40%   -0.24%     
- Complexity       226      228       +2     
=============================================
  Files            267      270       +3     
  Lines          32068    32450     +382     
  Branches        3664     3735      +71     
=============================================
+ Hits           13675    13761      +86     
- Misses         18132    18413     +281     
- Partials         261      276      +15     
Flag Coverage Δ
android 17.21% <43.75%> (+0.13%) ⬆️
desktop 63.89% <ø> (-0.07%) ⬇️
ios 97.71% <ø> (ø)
native 9.93% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...tlin/radio/ks3ckc/ft8af/car/RecentDecodesScreen.kt 0.00% <0.00%> (ø)
...n/kotlin/radio/ks3ckc/ft8af/car/QsoStatusScreen.kt 5.92% <46.66%> (+5.92%) ⬆️

... and 13 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@patrickrb
patrickrb merged commit 9455e67 into staging Sep 9, 2026
38 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant