=== LMC Radio ===
Contributors: mauriciosoto
Tags: radio, audio, music, podcast, streaming, schedule, player
Requires at least: 6.0
Tested up to: 6.8
Requires PHP: 8.1
Stable tag: 1.3.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Simulated radio station for WordPress. Schedule programs, manage audio, and stream a continuous radio experience without a streaming server.

== Description ==

LMC Radio turns your WordPress site into a simulated live radio station. Schedule programs by day and time, upload episodes with audio tracks, configure jingles, and let visitors listen to a continuous radio experience — no Icecast, Shoutcast, or streaming server required.

**How it works:** When a visitor presses play, the engine calculates what should be playing at the current moment based on the schedule, and seeks to the correct position in the audio file. Every visitor hears the same program at the same point, just like a real radio.

= Features =

* **Simulated live radio** — real-time playback synchronization
* **Weekly schedule** — time slots with conflict detection
* **Calendar events** — override weekly schedule on specific dates
* **Audio library** — upload and manage audio with automatic duration detection
* **Programs and episodes** — organize content into shows
* **Jingle system** — intro, outro, and cortinas
* **Fallback playlists** — per-day-of-week music when no program is scheduled
* **Live mode** — switch to YouTube/Twitch/direct stream for real broadcasts
* **Persistent player bar** — floating radio bar on every page
* **Shortcodes** — embed player, schedule, and live stream anywhere
* **REST API** — public endpoints for status and playlist
* **Internationalization** — translation-ready

= Shortcodes =

* `[lmc_radio_player]` — inline audio player widget
* `[lmc_radio_program_info]` — current program and episode info
* `[lmc_radio_schedule]` — weekly schedule grid
* `[lmc_radio_live]` — live stream embed (hidden when not live)

= Quick Start =

1. Open **Radio** and follow the first broadcast checklist.
2. Create a program, upload audio, create an episode, and assign audio tracks.
3. Add an active weekly slot for the program.
4. Configure fallback audio to avoid silence outside scheduled slots.
5. Visit the public site and press play in the persistent bar or shortcode player.

= Audio Privacy =

This plugin does not implement DRM. Audio files stored in the WordPress media library are publicly accessible by default. Use the `lmc_radio_audio_url` filter hook to modify audio URLs for private storage integrations.

== Installation ==

1. Upload the `lmc-radio` folder to `/wp-content/plugins/`
2. Activate through the Plugins menu
3. Find **Radio** in the admin sidebar

= From source (development) =

`composer install && npm install`

== Frequently Asked Questions ==

= Does this require a streaming server? =

No. LMC Radio simulates a radio broadcast by serving audio files from your WordPress media library and synchronizing playback positions based on the schedule.

= Can I do a real live broadcast? =

Yes. Use the Live mode to embed a YouTube, Twitch, or direct stream. The live mode can be toggled manually or scheduled.

= Are audio files protected? =

No. This plugin does not implement DRM. Files in WordPress uploads are public by default. See the Audio Privacy section for options.

= What audio formats are supported? =

MP3, WAV, and OGG. Duration is automatically extracted using getID3.

== Screenshots ==

1. Radio dashboard with real-time monitor
2. Weekly schedule editor
3. Calendar for date-specific events
4. Audio library management
5. Frontend radio player bar

== Changelog ==

= 1.2.0 =
* Improved simulated on-air engine reliability for slot changes, scheduled seeking, and failed audio recovery
* Added deterministic jingles and deterministic random episode selection
* Added per-day fallback consistency improvements and safer paginated fallback saving
* Added configurable persistent player bar and standalone inline player support
* Added public calendar overrides in program info with special-event badges
* Improved live mode handling for direct audio streams and Facebook embeds
* Added audio library filter for unassigned files
* Added uninstall data retention setting
* Updated security and release metadata for WordPress.org readiness

= 1.1.0 =
* Simulated radio engine with real-time playback synchronization
* Weekly schedule system with conflict detection
* Calendar for date-specific programming events
* Audio library with getID3 duration extraction
* Jingle system (intro, outro, cortina)
* Live transmission mode (manual and scheduled)
* REST API endpoints
* Persistent player bar and shortcodes
* Fallback playlist per day of week
* PHPUnit and Jest test suites
* Internationalization support

= 1.0.0 =
* Initial release

== Upgrade Notice ==

= 1.2.0 =
Reliability, frontend consistency, live mode, and WordPress.org readiness update.
