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.
16 lines
941 B
Plaintext
16 lines
941 B
Plaintext
val args = invoke.parseArgs(NowPlayingArgs::class.java)
|
|
/* The window is on no screen anywhere — MediaService ignores it and
|
|
the card cannot show it — so logcat is the only place on the
|
|
device it can be read back, and tests/mobile/smoke.mjs reads it
|
|
from exactly here. One line per update, and an update is a track
|
|
change, a transport change or the thirty-second top-up, never a
|
|
position tick. `at=` goes LAST because a title may hold anything,
|
|
spaces and `=` included. */
|
|
val window = args.queue ?: emptyList()
|
|
android.util.Log.i(
|
|
"SoulStream",
|
|
"media window n=" + window.size + " i=" + (args.queueIndex ?: -1) +
|
|
" art=" + window.count { !it.artKey.isNullOrEmpty() } +
|
|
" at=" + (window.getOrNull(args.queueIndex ?: -1)?.title ?: ""),
|
|
)
|
|
ensureNotificationPermission() |