commit 4aa9d9d3ada3867c23215b3182bed85823415b3c Author: David Keane Date: Tue Jun 9 02:32:38 2026 +0100 wiki: initial 6 pages for the oldest RangerHQ family sibling Mirrors the rangerhq-tuner + rangerhq-buddy wiki pattern. Radio is the project where the four-button-search affordance and the per-user wp_usermeta storage pattern were both pioneered, so the wiki explicitly traces the lineage to the rest of the family. - Home: 44 SomaFM stations, v0.7.6, status table, source layout - Architecture: per-user wp_usermeta (3 keys), HTML5 audio + vanilla JS controller, hand-curated stations registry, pop-out window via admin-post.php?action=radio_popout - Stations: why curated not dynamic, 10 genres, station entry shape, how to add a station, how to retire one - The 4 Buttons: dedicated page explaining the Spotify/YouTube/Apple/ Bandcamp public-URL pattern (this is where it was born), why link-out beats embed - Privacy: per-user storage inventory, 'only somafm.com' outbound audit, GDPR notes, three-option wipe runbook - Family: positions Radio as the OLDEST sibling, traces the lineage byte-for-byte to Tuner's history.js, names Buddy as a different product that inherits the same architectural ethos diff --git a/Architecture.md b/Architecture.md new file mode 100644 index 0000000..bc5519a --- /dev/null +++ b/Architecture.md @@ -0,0 +1,126 @@ +# Architecture + +RangerHQ Radio is hand-rolled PHP + a single vanilla-JS controller file. No Composer, no npm, no build step. The whole plugin is ~7 PHP files plus one stylesheet and one JS file. + +## High-level component map + +``` + wp-admin + ┌────────────────────────────────────────────────────────────────┐ + │ WP Dashboard │ + │ ┌──────────────────────────────────┐ │ + │ │ Radio Dashboard Widget │ inc/dashboard-widget.php│ + │ │ - station picker (44 channels) │ │ + │ │ - Play / Pause / Volume │ │ + │ │ - now-playing metadata │ │ + │ └──────────────────────────────────┘ │ + │ │ + │ Sidebar: 📻 Radio ▾ │ + │ ├─ Player inc/admin-page.php (full-page player) │ + │ ├─ History inc/history.php (tracks + 4-button search) │ + │ ├─ Settings inc/settings.php │ + │ └─ About inc/about.php │ + │ │ + │ + optional Pop-out window │ + │ admin-post.php?action=radio_popout (chromeless) │ + └────────────────────────────────────────────────────────────────┘ + │ + │ HTML5