Embeddable player (premium feature #7)
Standalone /embed page (no shell) with a compact audio player for the site
tracks, intended for an <iframe> on external sites. The page runs on the klonkt
origin, so audio requests from the iframe remain same-origin -> the
/audio/stream gate lets them through, even on an external site. Helmet's
X-Frame-Options + frame-ancestors are overridden per route (frame-ancestors *)
so external embedding is allowed.
- routes/embed.js (premium-gated): GET /embed.
- views/pages/embed-player.ejs: standalone HTML, inline css/js, play/pause, track
click, auto-next, progress bar; themable on site.accent.
- admin-audio: embedUrl + "Embeddable player" section with copyable iframe code +
preview link (premium).
node --check passed.
Co-Authored-By: Claude <noreply@…>