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.
22 lines
2.4 KiB
Plaintext
22 lines
2.4 KiB
Plaintext
vp: innerWidth + 'x' + innerHeight,
|
|
/* the sheet's controls: any one of them off the viewport is the landscape bug */
|
|
npOut: [].filter.call(document.querySelectorAll('.sheet.up .np-frame, .sheet.up .np-meta, .sheet.up .np-scrub, .sheet.up .np-transport, .sheet.up .np-foot'), function (x) { var b = x.getBoundingClientRect(); return b.height > 0 && !inside(b); }).length,
|
|
/* stacked = the portrait column; beside = the cover left of the controls; face = a face has the column and the thumbnail is gone */
|
|
npCols: (function () { var a = box('.sheet.up .np-frame'), b = box('.sheet.up .np-transport'); if (!a || !b) return ''; if (!a.height) return 'face'; return a.bottom <= b.top + 1 ? 'stacked' : 'beside'; })(),
|
|
faceH: Math.round((box('.sheet.up .np-face') || { height: 0 }).height),
|
|
/* WHICH face: the queue's own, up whether or not anything is after this one */
|
|
qFace: !!document.querySelector('.sheet.up .q-face'),
|
|
/* a half sheet: how tall it is allowed to be, that it is all on screen, and that its body still reaches its last row */
|
|
halfH: Math.round((box('.halfsheet.up') || { height: 0 }).height),
|
|
halfIn: inside(box('.halfsheet.up')),
|
|
hsScroll: (function () { var x = document.querySelector('.halfsheet.up .hs-body'); return x ? getComputedStyle(x).overflowY : ''; })(),
|
|
hsTail: (function () { var x = document.querySelector('.halfsheet.up .hs-body'); return x ? x.scrollHeight - x.clientHeight : -1; })(),
|
|
heroH: Math.round((box('.screen .hero') || { height: 0 }).height),
|
|
/* what a page offers first: Play on an artist hero, Play on a record head */
|
|
actsIn: inside(box('.screen .hero-acts') || box('.screen .rec-acts')),
|
|
recCols: (function () { var c = box('.screen .rec-cover'), m = box('.screen .rec-meta'); return c && m ? (c.bottom <= m.top + 1 ? 'stacked' : 'beside') : ''; })(),
|
|
/* the glass bar above plus the floating bars below, as a share of the screen */
|
|
chromePct: (function () { var g = box('.gbar'), low = box('.mini') || box('.nav'); return Math.round((((g ? g.height : 0) + (low ? innerHeight - low.top : 0)) / innerHeight) * 100); })(),
|
|
miniLeft: Math.round((box('.mini') || { left: -1 }).left),
|
|
screenPadL: (function () { var x = document.querySelector('.screen'); return x ? Math.round(parseFloat(getComputedStyle(x).paddingLeft)) : -1; })(),
|