a9d76decae
Adds the Update URI guard pattern so one source tree produces two compliant build artifacts: * Gitea install (default): `Update URI:` header points at git.davidtkeane.com → wp.org skips this plugin → self-hosted updater runs normally. * WordPress.org submission zip (build script strips that line): header is empty → `radio_should_skip_custom_updater()` returns true → entire updater file short-circuits at load time → wp.org takes over update delivery as guideline 8 requires. Settings page now guards the Updates panel render with `function_exists()` because the panel function only exists when the updater was allowed to load. Also adds a dedicated `== Privacy ==` section to readme.txt covering every outbound connection (none from the plugin itself; SomaFM audio + 30s songs.json poll while playing) and adds an explicit link to SomaFM's terms of use (somafm.com/legal/). No user-visible behaviour change in either distribution.
141 lines
11 KiB
Plaintext
141 lines
11 KiB
Plaintext
=== RangerHQ Radio ===
|
||
Contributors: ir240474
|
||
Donate link: https://buymeacoffee.com/davidtkeane
|
||
Tags: radio, music, audio, internet radio, background music
|
||
Requires at least: 5.3
|
||
Tested up to: 7.0
|
||
Stable tag: 0.7.3
|
||
Requires PHP: 7.4
|
||
License: GPLv2 or later
|
||
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
||
|
||
A small, focused internet radio player for your WordPress admin — 44 hand-curated stations, history, favourites, and a pop-out window.
|
||
|
||
== Description ==
|
||
|
||
**RangerHQ Radio** adds a tiny, focused internet radio player to your WordPress dashboard so you can have background music while you work in the admin — without leaving the page, opening Spotify, or installing a desktop client.
|
||
|
||
= What you get =
|
||
|
||
* **44 hand-curated stations from [SomaFM](https://somafm.com)** across 10 genres — ambient, electronic, lounge, rock, metal, jazz, world, reggae, holiday and specials. From coding-focus ambient (Groove Salad, Drone Zone) to drive-time electronic (DEF CON Radio, Beat Blender) to mellow lounge (Lush, Secret Agent).
|
||
* **Now-playing indicator** — small CSS dancing-bars equalizer that pulses while audio is playing. A Web Audio frequency visualizer kicks in automatically when the browser allows it (with a graceful fallback to the CSS bars).
|
||
* **Track history + favourites** — every track that scrolls past is logged to your personal History page (capped at 500); a star toggle promotes the good ones to a separate Favourites tab that doesn't age out. Each row has four search links (Spotify, YouTube, Apple Music, Bandcamp) so you can find that track on whichever service you use.
|
||
* **Pop-out mini-player** — a 380×560 standalone window that persists across the main tab's navigation, so background music doesn't cut when you move between Plugins, Posts, Users, etc.
|
||
* **OS media keys** — F8/headphone buttons/lock-screen widget play and pause the radio (via MediaSession API).
|
||
* **Mute toggle** — the speaker icon is clickable; remembers prior volume.
|
||
* **Dark theme** — explicit dark option for the player surface (`Settings → Theme`).
|
||
* **Per-user state** — your chosen station, volume, theme, history, and favourites all live in `user_meta`, so each WordPress user has their own setup.
|
||
|
||
= Third-party service =
|
||
|
||
This plugin streams audio from **[SomaFM](https://somafm.com)** — an independent, listener-supported, commercial-free internet radio network broadcasting from San Francisco since 2000. RangerHQ Radio is a small WordPress wrapper around their public streams; the service itself provides all the music. SomaFM's terms of use are at [somafm.com/legal/](https://somafm.com/legal/). If you enjoy the music, please consider [supporting SomaFM directly](https://somafm.com/support/).
|
||
|
||
See the dedicated Privacy section below for everything that does and does not leave your site.
|
||
|
||
== Privacy ==
|
||
|
||
RangerHQ Radio is privacy-respecting by design:
|
||
|
||
* **No telemetry from the plugin.** RangerHQ Radio does not phone home, report usage statistics, or contact the plugin author's servers in any way.
|
||
* **No data leaves your site.** All per-user state — station choice, volume, theme, listening history, favourites — is stored in your own WordPress database (`wp_usermeta`) and never transmitted anywhere.
|
||
* **Audio streams come from SomaFM directly.** When you press Play, your browser opens an HTTP stream to `https://somafm.com` — the plugin does not proxy, log, or analyse this connection. SomaFM's own privacy practices apply to the stream; see [SomaFM legal](https://somafm.com/legal/).
|
||
* **Current-track display** polls SomaFM's public songs endpoint (`https://somafm.com/songs/{station}.json`) every 30 seconds **while audio is playing**. The plugin sends no identifying information with this request. Polling stops the moment you pause.
|
||
* **Search-provider links** (Spotify / YouTube / Apple Music / Bandcamp) are outbound only. Clicking one opens a new tab with a search URL on that service — the plugin sends no data and stores no information about which links you click.
|
||
* **No third-party JavaScript** is loaded from outside your own server. All scripts ship inside the plugin.
|
||
* **Self-hosted updater** (`inc/updater.php`) is included in the WordPress.org distribution but is automatically disabled — WordPress.org handles updates per the directory guidelines. The code is only active when the plugin is installed from the author's own Gitea instance.
|
||
|
||
If you do not want any third-party traffic at all, simply do not press Play.
|
||
|
||
== Installation ==
|
||
|
||
1. Upload the plugin folder to `/wp-content/plugins/` (or install from the WordPress plugin directory).
|
||
2. Activate the plugin through the **Plugins** menu in WordPress.
|
||
3. Open **Radio → My Radio** in the admin sidebar and press Play. Your station and volume choice are saved per user.
|
||
|
||
There is no separate configuration step — defaults are sensible (Groove Salad at 60% volume). Settings are at **Radio → Settings**.
|
||
|
||
== Frequently Asked Questions ==
|
||
|
||
= Does this work on the front-end of my site? =
|
||
|
||
No — RangerHQ Radio is admin-only. It adds a player to the WordPress dashboard for you (and your other authenticated admins) to use while working. It does not embed a radio player on the public-facing site.
|
||
|
||
= Can I add my own stations? =
|
||
|
||
Not via the admin yet. The station list is hard-coded in `inc/stations.php` (44 SomaFM stations). If you'd like to add custom stations or other internet radio sources, please open an issue on the [Gitea repo](https://git.davidtkeane.com/ranger/a-radio).
|
||
|
||
= The pop-out window doesn't open. =
|
||
|
||
Your browser may be blocking pop-ups. Click the address bar's pop-up icon to allow pop-ups for this site, then try again.
|
||
|
||
= Why does Touch ID / a passkey prompt appear when I press Play? =
|
||
|
||
It shouldn't. This plugin uses no biometrics or authentication of its own — that's a different plugin in the RangerHQ family.
|
||
|
||
= The current-track display says nothing / is hidden. =
|
||
|
||
SomaFM's track-info endpoint (`somafm.com/songs/{station}.json`) is fetched best-effort. If it's unreachable or the browser blocks the request, the track display silently hides. The player keeps working regardless.
|
||
|
||
== Screenshots ==
|
||
|
||
1. Dashboard widget — compact mini-player on the WordPress Dashboard, sits alongside your usual dashboard widgets.
|
||
2. Settings page — choose default station, default volume, theme; admin-only Updates panel below.
|
||
3. Track History page — every track that scrolled past, star-to-favourite, with Spotify / YouTube / Apple / Bandcamp deep-link search per row.
|
||
4. Pop-out mini-player window — 380×560 standalone window that keeps playing while you navigate the rest of the admin.
|
||
5. About page — what Radio does, who it's for, credits, full version history.
|
||
|
||
== Changelog ==
|
||
|
||
= 0.7.3 =
|
||
* WordPress.org guideline 8 compliance + Privacy documentation. Added `Update URI: https://git.davidtkeane.com/ranger/a-radio` header so installs from the author's Gitea continue to receive updates from there, while wp.org-distributed copies (where the build script strips this line) hand update delivery to WordPress.org — the self-hosted updater short-circuits at load time and the Updates panel hides automatically. Added a dedicated `== Privacy ==` section to the readme covering every outbound connection (none from the plugin itself; SomaFM audio + 30-second songs.json poll while playing). Added explicit link to SomaFM's terms of use at https://somafm.com/legal/. No user-visible behaviour changes.
|
||
|
||
= 0.7.2 =
|
||
* Screenshots + correct wp.org contributor handle. Five `screenshot-N.png` files added at plugin root (Dashboard widget, Settings page, History page, Pop-out window, About page). `Contributors` header updated from placeholder to actual wp.org username `ir240474`.
|
||
|
||
= 0.7.1 =
|
||
* Plugin Check follow-up — `Tested up to` bumped from 6.7 to 7.0 (PCP `outdated_tested_upto_header`). Stray `.DS_Store` files re-deleted (macOS Finder regenerated them between PCP runs; they won't be in the submission zip).
|
||
|
||
= 0.7.0 =
|
||
* WordPress.org submission prep — full PCP-clean. Plugin name normalised to **RangerHQ Radio** (SomaFM stays in the description as the data source). Text Domain renamed `radio` → `a-radio` everywhere (134 i18n call sites updated). Six `printf` / `sprintf` calls now carry translator comments. All admin `$_POST` access now `wp_unslash()` + `sanitize_*` at the access point. `Requires at least` bumped to 5.3 (matches `wp_date()` usage). Pop-out window now uses `wp_enqueue_*` + `wp_print_styles()` / `wp_print_footer_scripts()` instead of raw `<link>` / `<script>` tags; popup-specific CSS moved into `radio.css` under `body.radio-popout` scope. `.DS_Store` files removed. Proper `readme.txt`.
|
||
|
||
= 0.6.3 =
|
||
* Discreet "buy me a coffee" support link in the Updates panel and the About-page Credits card. Single `RADIO_SUPPORT_URL` constant; conditional render — silently hidden if the constant is empty.
|
||
|
||
= 0.6.2 =
|
||
* Current version badge on the Settings page — small grey pill follows the H1 reading `v{RADIO_VERSION}`.
|
||
|
||
= 0.6.1 =
|
||
* About page restructure — 3-card top row (What / Who / Credits) + full-width Version history with the latest expanded and earlier releases as one-liners.
|
||
|
||
= 0.6.0 =
|
||
* Pop-out mini-player. `↗ Pop out` button beside Play opens a 380×560 standalone window that persists across the main tab's navigation, so background music keeps playing while you click around Plugins / Posts / Users.
|
||
|
||
= 0.5.0 =
|
||
* Track history + favourites. Every track that scrolls past is logged to a per-user `Radio → History` page (capped at 500). Star toggle promotes tracks to a separate Favourites tab. Four search-provider links per row (Spotify, YouTube, Apple Music, Bandcamp).
|
||
|
||
= 0.4.0 =
|
||
* Now-playing visual indicator. CSS dancing-bars equalizer that pulses while audio is playing. Web Audio frequency visualizer kicks in when the browser allows it (with graceful fallback).
|
||
|
||
= 0.3.0 =
|
||
* Dark theme, mute toggle on the speaker icon, MediaSession API (OS media keys), SomaFM current-track polling under the station description.
|
||
|
||
= 0.2.0 =
|
||
* UI rebuilt to WordPress admin standards — postbox container, native play/pause button with text label, picks up the user's admin colour scheme via `var(--wp-admin-theme-color)`.
|
||
|
||
= 0.1.0 =
|
||
* First release — 44 SomaFM stations across 10 genres, dashboard widget + dedicated admin page, per-user state, self-hosted Gitea updater.
|
||
|
||
== Upgrade Notice ==
|
||
|
||
= 0.7.3 =
|
||
WordPress.org submission compliance — adds `Update URI` header so the self-hosted updater stays dormant on wp.org installs (guideline 8). Adds Privacy section + SomaFM terms link. No user-visible changes.
|
||
|
||
= 0.7.2 =
|
||
Screenshots + correct wp.org contributor handle. No user-visible changes.
|
||
|
||
= 0.7.1 =
|
||
PCP follow-up — `Tested up to` bumped to 7.0. No user-visible changes.
|
||
|
||
= 0.7.0 =
|
||
WordPress.org submission prep. Plugin name now "RangerHQ Radio". Text Domain renamed `radio` → `a-radio`. No user-visible behaviour changes; settings, history, and favourites all survive the upgrade.
|