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.
20 lines
1.4 KiB
Plaintext
20 lines
1.4 KiB
Plaintext
Every update also carries a **queue window**, and since round forty-eight the
|
|
card is built out of it. `NowPlaying` (Rust) and `NowPlayingArgs` (Kotlin)
|
|
hold a `queue` of at most twenty-one entries — the current item and ten either
|
|
side, each with its id, title, artist, album, duration and art key — plus
|
|
`queueIndex`, where the current one sits *within that window* rather than
|
|
within the whole queue, `queueBase`, where the window starts in the whole
|
|
queue, and `repeat`. `src/mobile/media.svelte.js` fills all of them from
|
|
`player.queue`, `player.qi` and `player.repeat`, and
|
|
`SoulStreamPlayer.getState()` turns them into the media3 playlist, the current
|
|
index and the repeat mode. `queueBase` is what gives an entry a stable
|
|
`MediaItemData` uid as the window slides past it, so a track change is one
|
|
media-item transition rather than twenty-one re-labelled rows — and it is half
|
|
of the mapping Android Auto will need to turn a tapped queue row back into a
|
|
`playQueueAt()`. `repeat` crosses so the player's state is not a lie to
|
|
whatever reads it — the system's own media controls now, Auto later — and so
|
|
media3's view of "is there a next item" agrees with the `hasNext` the next
|
|
button is advertised on. Its numberings are SWAPPED: the app 0 off · 1 ALL ·
|
|
2 ONE, media3 0 OFF · 1 ONE · 2 ALL, so `SoulStreamPlayer` maps across rather
|
|
than casting, which would have turned repeat-all into repeat-one.
|