A signed-in listener's radio history, kept by the Worker (worker/src/radio.ts, GET and POST /jev/me/radio), so the radio avoids repeats across sessions and devices. Anonymous radio never calls these: its history lasts the tab (JevPicks.jsx).
5export const RADIO_HISTORY = '/jev/me/radio';
Song ids, newest first; [] when it cannot be read (the radio then picks as it would anonymously).
9export async function radioHistory() { 10 try { 11 const res = await fetch(RADIO_HISTORY, { credentials: 'same-origin' }); 12 if (!res.ok) return []; 13 const { plays } = await res.json(); 14 return Array.isArray(plays) ? plays.map((p) => p.song).filter((id) => typeof id === 'string') : []; 15 } catch { 16 return []; 17 } 18}
The radio started songId; fire and forget: a lost record costs only a
possible repeat.