The radio listener count, previewed at the app's real geometry before anything ships. Decided behaviour: hidden below two listeners (at one, the card is exactly today's card); from two upward the number appears, sitting in the live ring. The count exists only while the radio is live, and the expanded Orbital player is the only radio surface that can be live — so this page previews that card, on both of its hosts (Signal tab and Base tab).
Everything is decided: the CAPTION form — the count in the ring's lower opening, the word beneath it at a tightened line box; threshold below two (at one listener this is exactly today's card); abbreviation from 10,000; unknown shows nothing — no dash, no held value; no tilde cue; refresh once per minute, fetched only while the surface is visible plus once on becoming visible. This page now shows that one shape; the remaining toggles are the ones still worth eyes: count, width, surface, language, live vs unknown. The wording is approved (2026-08-29): EN LISTENERS, DE HÖRER, ES OYENTES.
The volume gauge sweeps 300° starting at 210° (bottom-left), so the track, all 52 level bars, and the knob's whole travel leave one 60° opening at the bottom of the ring. The badge sits on the track's own circle (r 135.5) at the bottom of that opening — the knob's orbit, in the one region of the ring band where nothing is ever drawn. Measured clearances at the largest ladder step (39 pt capsule at 9999): 4.5 pt to the live disc above it, ≈48 pt to the nearest track cap. The 26 pt badge clears the dashed live ring (r 120.5 ± 0.5) by 1.5 pt, and the caption sits entirely below the ring band — its top edge is 29.5 pt below the dashed ring's lowest point. Neither element occludes anything that carries state. (The stacked variant, which breached that ring, was not chosen and is gone.)
| display | glyphs | text pt @11 | badge pt | shape |
|---|---|---|---|---|
| 2 … 9 | 1 | 6.60 | 26 | circle |
| 47 | 2 | 13.20 | 26 | circle |
| 999 | 3 | 19.80 | 32 | oval |
| 1234 / 9999 | 4 | 26.40 | 39 | oval |
| 12K / 99K | 3 | 19.80 | 32 | oval |
| width budget | — | — | 108 | a chosen budget, not a wall — no ring element actually caps the oval (a wider capsule slides ≈2 pt beneath the track caps without touching them); the card itself is the hard stop |
The ring is a fixed 290 pt on both surfaces and never scales with the
card, so the ladder is identical on Signal and Base and at every device width.
The card widths differ — Signal min(W−48, 344), Base
W−48 uncapped — but the oval grows into the gauge's own opening, and
nothing else owns that space: no element gives, at any step. At 320 pt the card
clips the ring 9 pt per side on device (RN clips at the border box; this page's
CSS clips at the padding box — 10 pt here, a known 1 pt divergence); the
bottom opening is untouched either way. Abbreviation — decided: below 10,000 the raw digits ride (they fit with
better than half the measured cap to spare); from 10,000 the value goes through
formatDiffFloor unchanged — truncate toward zero, never round up:
19,999 → 19K, never 20K. The helper and its twelve miner call sites are
untouched.
| word (draft) | width pt @6.5/2 | ink top, of the 5.41 pt ascent |
|---|---|---|
| EN LISTENERS | 53.1 | 3.80 |
| DE HÖRER | 29.5 | 4.75 — the Ö dieresis, the tallest ink |
| ES OYENTES | 41.3 | 3.80 |
The caption's line box is tightened from the card's 1.32 house box to Courier New's own ascent-plus-descent: 1.1328 em = 7.36 pt at size 6.5 — the smallest box that still contains every glyph. The clipping warning does not arise: all three words are caps-only (no descenders exist to cut), and the tallest ink, HÖRER's dieresis at 4.75 pt, sits 0.66 pt under the ascent. Clearance to the title slot: 0.9 pt at the 1.32 house box, 2.1 pt at the tightened box, and 3.1 pt after the 1 pt caption lift (badge-to-caption gap 2 → 1, decided 2026-08-29) — identical at every device width (the ring, the 15 pt card gap and the one-line nowrap caption are all width-fixed) and in all three languages (same box height, no descenders). Measured to the title's own glyph box the margin is 4.6 pt. Only the caption moved: the badge stays at r 135.5 with its 1.5 pt dashed-ring clearance, the ring and the card width are untouched.
The card cannot grow, by construction: the badge and the caption are absolutely
positioned inside the fixed 290 pt ring box and take no layout space, the
caption is one line and nowrap, and the card width is
min(W−48, 344) on Signal / W−48 on Base — no content
term exists in either chain. The app carries the same structural guarantee: the
ring box is a fixed 290×290 and everything painted inside it is absolute.
Separately reported and not fixed here: the live dressing keeps spinning while
the stream is paused (live has no paused term). Does a label make that
worse? The count is a claim about the station — N people listening — and it
stays true while your own playback is paused; pausing does not falsify it. The
chosen caption is a word form, so it sets an explicit, true, present-tense claim
(“47 LISTENERS”) beside the dressing's implicit false one — corroborating detail
that lends the false reading credibility. Whether a paused client counts itself
in N belongs to the data path.
cubic-bezier(0.22,0.9,0.24,1)). No count-up, no
flash, no scale, no colour. Press COUNT ▸ STEP to watch it.filter: blur()/shadowBlur against Skia's
MaskFilter σ — converted (CSS = 2σ) but not identical;
halo spill and bar glows are close, not pixel-equal. The conic track is drawn as
120 solid segments of the app's exact 5-stop ramp.