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.
11 lines
604 B
Plaintext
11 lines
604 B
Plaintext
hasNext: player.qi + 1 < player.queue.length || player.repeat > 0,
|
|
hasPrev: true,
|
|
};
|
|
/* the window, clamped at both ends. `at` is recomputed rather than
|
|
assumed to be QUEUE_WINDOW: at the top of the queue the slice starts
|
|
at 0 and the current item is the first entry, not the eleventh. */
|
|
const lo = Math.max(0, player.qi - QUEUE_WINDOW);
|
|
const win = player.qi < 0 ? [] : player.queue.slice(lo, player.qi + QUEUE_WINDOW + 1);
|
|
const at = player.qi - lo;
|
|
state.queue = win.map(windowItem);
|
|
state.queueIndex = at >= 0 && at < win.length ? at : null; |