The desktop's debug overlay, on the dev flavour. Polled once a second while this screen is open.
{#if failed}
No diagnostics.
{failed}
{/if}
This process
App CPU{pct(stats?.cpuProcess)}
System CPU{pct(stats?.cpuSystem)}
Memory{size(stats?.memWorkingSet)}
System memory{size(stats?.memSystemUsed)} of {size(stats?.memSystemTotal)}
Processes{stats?.processCount ?? "—"}
Up{upfor(stats?.uptimeSecs)}
Processes counts this app's own tree. Android runs the WebView in a system process of its own, so it is outside these numbers; on the desktop the whole WebView2 family is inside them.
Network
Down{rate(stats?.netRxBps)}
Up{rate(stats?.netTxBps)}
Every interface on the phone, not this app alone.
The track playing
Stream{!stats ? "—" : stats.dlTotal ? size(stats.dlReceived) + " of " + size(stats.dlTotal) + (stats.dlDone ? " · done" : "") : "nothing streaming"}
Normalization{!stats ? "—" : stats.normalizationEnabled ? "on · " + (stats.targetLufs ?? -14) + " LUFS" : "off"}
Measured{stats?.loudness?.lufs != null ? stats.loudness.lufs.toFixed(1) + " LUFS" + (stats.loudness.analyzing ? " · measuring" : "") : "—"}
Gain{db(stats?.normNowDb)}{stats && stats.normNowDb != null && stats.normNowDb !== stats.normTargetDb ? " → " + db(stats.normTargetDb) : ""}
On deck
{#if stats?.preloadDl?.length}
{#each stats.preloadDl as p (p.username + p.path)}
{basename(p.path)}
{p.username} · {p.state}{p.place != null ? " · queue " + p.place : ""}{p.speedBps ? " · " + fmtBytes(p.speedBps) + "/s" : ""}
{#if p.total}{fmtBytes(p.received)}{/if}
{/each}
{:else}
Nothing pre-buffering. The player readies the next three tracks while one plays.
{/if}
Library
Play rows{plays != null ? plays.toLocaleString() : "—"}