android: the handoff — the pending rounds, the pipeline, and what is unverified
Everything written this session that has not been through the device: rounds 43 to 48 (each patch adversarially verified, 43's transient-notice expectation fixed), a partial round 49, the pipeline scripts, the Android Auto design and the icon comparison mock. Also the two harness changes that were never A/B'd — adaptive waits, which may only shorten a declared wait and never lengthen it, and a ship that runs the mock walk and the deploy at the same time. The A/B and its 255-step baseline are in handoff/tools; main stays at what the phone has actually walked.
This commit is contained in:
1 parent
867fd42972
commit
9f0601027c
400 files changed
+26401
-3
No files matched your search
@@ -0,0 +1,24 @@
|
||||
- **Android Auto can see the app, and there is nothing inside.** Round
|
||||
forty-nine made `MediaService` a `MediaLibraryService`, put three actions
|
||||
on one intent filter (media3's `MediaLibraryService` and
|
||||
`MediaSessionService`, plus the legacy
|
||||
`android.media.browse.MediaBrowserService` that Auto actually binds), and
|
||||
added `res/xml/automotive_app_desc.xml` with the
|
||||
`com.google.android.gms.car.application` meta-data that declares the app to
|
||||
Auto. So Auto lists SoulStream, opens it, and gets a root — immediately,
|
||||
from `Futures.immediateFuture`, with nothing on the main thread — and the
|
||||
root is empty. `onGetChildren` is not overridden, so the default answers
|
||||
`ERROR_NOT_SUPPORTED` and the tree is one browsable folder with no rows in
|
||||
it. What is still missing is everything under it: the library read out of
|
||||
the database **read-only** from a process with no Activity and no Tauri
|
||||
(`crates/library` is plain rusqlite and `JNI_OnLoad` publishes the Context
|
||||
at `System.loadLibrary` time, so browse can work cold), playing what it
|
||||
lists — which needs `COMMAND_SET_MEDIA_ITEM` and its neighbours, still
|
||||
deliberately unadvertised, plus the `queueBase` → `playQueueAt()` mapping —
|
||||
and search. Catalog and Soulseek rows will never play from cold: the
|
||||
resolver is 872 lines of shared JS and Soulseek needs a live session, so
|
||||
they get `STATE_ERROR` with a resolution intent instead, which is also what
|
||||
Google's quality bar asks for. The walk proves the two front doors resolve
|
||||
(`auto-browse`, `auto-library`) and `tools/auto-prober/` proves the root
|
||||
comes back cold; the car screen itself still needs the Desktop Head Unit or
|
||||
a car.
|
||||
Reference in new issue
Block a user