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.
65 lines
5.0 KiB
Plaintext
65 lines
5.0 KiB
Plaintext
/* ── the long session: what the app is still HOLDING ─────────────
|
|
Minutes is all a walk has ever been. These are the numbers that
|
|
decide what hours look like: the thumbnail map and its side
|
|
tables (from the store itself — they are module-private, so
|
|
artTally is the only way to see them), the catalog's ten
|
|
session maps, the queue, the transfer list, the DOM, and the
|
|
live listeners and timers.
|
|
|
|
The listener and timer counts come from a registry that a step
|
|
installs IN THE PAGE, not from here: they are -1 until it is
|
|
installed, which means every step before the session block, every
|
|
step after it puts itself away again, and the whole phone walk,
|
|
where it is never installed at all. They count what was
|
|
registered AFTER the install and is still ATTACHED — window,
|
|
document, or an element that is connected — so the absolute
|
|
number is small and depends on how much of the walk ran first;
|
|
it is the DELTA across the laps that means anything. Attached
|
|
rather than add-minus-remove because that counter is a liar in
|
|
this app: {#key nav.seq} replaces the .screen element on every
|
|
navigation, so each new screen gets its own scroll handler and
|
|
the old element is simply dropped.
|
|
|
|
grew* is the same number against whatever the block latched into
|
|
window.__ssBase, and -1 when nothing has. Every backslash here is
|
|
doubled and there is not one backtick, comment included — this
|
|
block lives inside a template literal. */
|
|
tallyArt: (function () {
|
|
/* one census per probe, kept in __ssLast for the fields below:
|
|
a field of an object literal cannot see its siblings, and
|
|
this insert is the only part of the probe this round owns.
|
|
All of it is a read; nothing here fetches or evicts. */
|
|
window.__ssCensus = function () {
|
|
var out = { art: 0, chars: 0, accents: 0, pending: 0, cat: 0, queue: 0, xfer: 0, nodes: 0, ears: -1, timers: -1, ticks: -1 };
|
|
try { var a = __ss.artTally(); out.art = a.art; out.chars = a.chars; out.accents = a.accents; out.pending = a.pending; /* waiting is a SUBSET of pending, never a second queue */ } catch (e) {}
|
|
try {
|
|
var c = __ss.catalog;
|
|
var ks = ['artists', 'albums', 'extras', 'profiles', 'seeds', 'albumInfo', 'popular', 'heroSeeds', 'overviews', 'listeners'];
|
|
for (var i = 0; i < ks.length; i++) out.cat += Object.keys(c[ks[i]] || {}).length;
|
|
} catch (e) {}
|
|
try { out.queue = __ss.player.queue.length; } catch (e) {}
|
|
try { out.xfer = Object.keys(__ss.transfers.items).length; } catch (e) {}
|
|
try { out.nodes = document.getElementsByTagName('*').length; } catch (e) {}
|
|
try { var k = window.__ssCount(); out.ears = k.listeners; out.timers = k.timeouts; out.ticks = k.intervals; } catch (e) {}
|
|
return out;
|
|
};
|
|
window.__ssLast = window.__ssCensus();
|
|
return window.__ssLast.art;
|
|
})(),
|
|
tallyChars: (function () { try { return window.__ssLast.chars; } catch (e) { return 0; } })(),
|
|
tallyAcc: (function () { try { return window.__ssLast.accents; } catch (e) { return 0; } })(),
|
|
tallyPend: (function () { try { return window.__ssLast.pending; } catch (e) { return 0; } })(),
|
|
tallyCat: (function () { try { return window.__ssLast.cat; } catch (e) { return 0; } })(),
|
|
tallyQueue: (function () { try { return window.__ssLast.queue; } catch (e) { return 0; } })(),
|
|
tallyXfer: (function () { try { return window.__ssLast.xfer; } catch (e) { return 0; } })(),
|
|
tallyNodes: (function () { try { return window.__ssLast.nodes; } catch (e) { return 0; } })(),
|
|
tallyEars: (function () { try { return window.__ssLast.ears; } catch (e) { return -1; } })(),
|
|
tallyTimers: (function () { try { return window.__ssLast.timers; } catch (e) { return -1; } })(),
|
|
tallyTicks: (function () { try { return window.__ssLast.ticks; } catch (e) { return -1; } })(),
|
|
grewArt: (function () { try { return window.__ssLast.art - window.__ssBase.art; } catch (e) { return -1; } })(),
|
|
grewCat: (function () { try { return window.__ssLast.cat - window.__ssBase.cat; } catch (e) { return -1; } })(),
|
|
grewEars: (function () { try { return window.__ssLast.ears - window.__ssBase.ears; } catch (e) { return -1; } })(),
|
|
grewTimers: (function () { try { return window.__ssLast.timers - window.__ssBase.timers; } catch (e) { return -1; } })(),
|
|
grewTicks: (function () { try { return window.__ssLast.ticks - window.__ssBase.ticks; } catch (e) { return -1; } })(),
|
|
grewNodes: (function () { try { return window.__ssLast.nodes - window.__ssBase.nodes; } catch (e) { return -1; } })(),
|