=== Plugtuner Radio Player ===
Contributors: radiotuner
Tags: radio, radio player, tuner, live stream, audio
Requires at least: 5.9
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.1.9
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

A realistic analog dial radio tuner with an audio visualizer and a persistent player that keeps streams playing as visitors browse.

== Description ==

Plugtuner Radio Player adds a realistic analog dial radio player to your WordPress site. Visitors sweep across the FM dial to tune in to the radio stations you configure, and the player keeps streaming without interruption as they move between pages.

The plugin ships with no radio stations of its own: you add the stations you want, either by entering the stream details manually or by searching the free Radio-Browser directory from the station manager.

= Features =

* **Analog Dial Tuner:** Sweep across the FM scale (88.0 - 108.0 MHz) with a tuning sound effect and lock onto your stations.
* **Audio Visualizer:** A live audio spectrum display next to the playback controls.
* **Persistent Footer Player:** Optional player that floats at the bottom of every page, with minimize/expand controls.
* **Seamless Page Transitions (PJAX):** Keeps the stream playing while visitors navigate your site (with a session-resume fallback when disabled).
* **Shortcode:** Embed the player inside any post or page with `[plugtuner_radio_player]`.
* **Station Manager:** Add as many stations as you like. Set name, frequency, stream URL, genre and a cover logo from your Media Library.
* **Online Station Search:** Look up stations in the free Radio-Browser directory and autofill the form (see *External services* below).
* **Two Themes with Customizer:** Light and Dark designs. Customize background color, opacity, backdrop blur, accent color and the digital display font (including your own uploaded .ttf).
* **Likes:** Visitors can like or dislike stations.
* **Loads Locally (GDPR friendly):** Fonts and icons are bundled and served from your own site, not from third-party CDNs.

Every feature listed above is fully available in this plugin. There are no station limits, no locked features and no paywalls.

= Commercial version =

The plugin author also sells a separate commercial radio player with additional features (an 8-band graphic equalizer, analog VU meters, FM/AM band switching, live track titles and extra designs) at https://plugtuner.com/. That product is a different piece of software; none of its code is included here, and it is not required to use this plugin.

== Installation ==

1. Upload the plugin folder to the `/wp-content/plugins/` directory, or install it via **Plugins > Add New > Upload Plugin**.
2. Activate the plugin through the **Plugins** menu in WordPress.
3. Go to **Radio Tuner** in the admin menu to add your radio stations and customize the player design.
4. Add the player to your site by enabling the persistent footer player in settings, or use the shortcode `[plugtuner_radio_player]` anywhere in your content.

== Frequently Asked Questions ==

= How do I add radio stations? =
Go to **Radio Tuner > Manage Stations** in your WordPress dashboard. There you can add, edit or delete stations. You can specify frequency, name, stream URL, genre and a cover logo. You can also search the Radio-Browser directory to fill the form automatically.

= Why are there no stations after installing? =
The plugin does not bundle any radio stations, so you are in full control of which streams your site connects to. Add your first station in **Radio Tuner > Manage Stations**.

= What audio formats are supported? =
The player supports standard audio stream formats supported by modern browsers, including MP3, AAC and OGG.

= Does it support HTTPS? =
Yes. Note that modern browsers block insecure HTTP audio streams on secure HTTPS sites (mixed content restriction), so always use HTTPS stream URLs for your stations.

= Does the plugin send any data to external services? =
The plugin does not track your visitors and does not contact any service on front-end page loads. The only outgoing request is the optional station search described below, which happens in the admin when you click "Search".

== External services ==

This plugin connects to one third-party service.

1. **Radio-Browser (radio-browser.info)**
   * *What it is:* a free, community-run, open source directory of internet radio stations.
   * *What it is used for:* the optional "Search" box in **Radio Tuner > Manage Stations**, which lets you find a station and autofill its name, stream URL, genre and logo instead of typing them by hand.
   * *What data is sent and when:* only the search term you type, and only at the moment you click "Search" in the WordPress admin. The plugin first requests `https://all.api.radio-browser.info/json/servers` to pick an available mirror, then queries that mirror's `/json/stations/search` endpoint. No personal data, site data or visitor data is sent, and nothing is sent from the front end of your site.
   * *Terms and usage conditions:* https://api.radio-browser.info/ (the project states the service is free and open source and may be used in both free and non-free software).
   * *Service website / privacy information:* https://www.radio-browser.info/

Please note that the radio streams themselves are played directly by the visitor's browser from the stream URLs that you, the site owner, choose to add. The plugin does not bundle or preconfigure any stream provider.

== Credits ==

* Radio tuning sweep sound effect: "FM radio tuning sweeps" by copyc4t (freesound.org/people/copyc4t/sounds/140157/), licensed under CC BY 4.0.
* Font Awesome Free icons (fontawesome.com), Font Awesome Free License (icons CC BY 4.0, fonts SIL OFL 1.1, code MIT).
* Outfit, Roboto, Roboto Condensed, Roboto Mono and Orbitron fonts, licensed under the SIL Open Font License 1.1.
* The placeholder cover artwork bundled with the plugin is original artwork created by the author.

== Screenshots ==

1. The persistent footer player with the analog dial tuner and audio visualizer.
2. The station manager, where you add stations manually or via the directory search.
3. The design chooser with the Light and Dark player themes.

== Changelog ==

= 1.1.9 =
* The bundled player artwork carried the old product name; replaced with artwork that does not.
* Stream URLs are upgraded to https before playback, so an insecure stream can no longer cost the site its padlock.
* Fixed the Web Audio graph staying suspended on iOS, which left the visualizer and equalizer inert while audio played.
* Dynamic CSS now escapes option values for the stylesheet context rather than relying on storage-level sanitizing.

= 1.1.8 =
* Renamed the plugin to "Plugtuner Radio Player".
* No radio stations are bundled any more: the plugin no longer preconfigures third-party stream providers, and the site owner adds the stations they want.
* Removed the station limit and all feature locks - every included feature is fully available.
* Dynamic design CSS is now attached with wp_add_inline_style() instead of being printed as a raw style tag.
* All functions, classes, constants, options, AJAX actions and asset handles now use a unique plugin prefix.
* Documented the Radio-Browser directory search in the "External services" section.
* Security: all admin and public AJAX handlers verify a nonce, check capabilities and sanitize input; directory search results are sanitized before being rendered.
* The directory search returns HTTPS streams only, so added stations work on secure sites.

= 1.1.7 =
* Added GDPR compliant localized fonts and assets.
* Removed external CDN dependencies.
* Enhanced AJAX request security with nonces.
* Refactored settings sanitization.
