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.
12 lines
510 B
Plaintext
12 lines
510 B
Plaintext
|
|
/** "4:31", "1:02:07" — a length or a position in MILLISECONDS, which is how
|
|
* a playlist row's cue and an import draft's track both carry one. Hours
|
|
* only when there are hours; `mmss` above is the seconds-in version. */
|
|
export function stamp(ms) {
|
|
const s = Math.floor((ms || 0) / 1000);
|
|
const h = Math.floor(s / 3600);
|
|
const m = Math.floor((s % 3600) / 60);
|
|
const sec = s % 60;
|
|
return (h ? h + ":" + String(m).padStart(2, "0") : String(m)) + ":" + String(sec).padStart(2, "0");
|
|
}
|