=== MediaBlaster Changelog === = 3.2.0 = * NEW: **Totally new MediaBlaster admin UI** — modern admin shell, clearer Features settings, grouped sections, toggle switches, and consistent styling across settings and feature screens. * NEW: **Setup Wizard (onboarding)** — guided multi-step wizard for new installs (content, platforms, branding, hosting, links, review); skip / resume / restart; drafts apply only on Finish Setup. * NEW: **Vimeo Integration rebuilt from the ground up** — three-step Vimeo Connection (credentials, Redirect URI, Connect + upload), import defaults, unsaved-credential Connect guard, post metabox, and reliable API/SSL wrapper (replaces older Extender-era flows). * NEW: **Import from Vimeo** guided importer UI — readiness filters, summary counts, shared **Loading Data** modal (`MediaBlaster_Admin_UI` / `MediaBlasterAdminUI.loading`), Review bulk flow (legacy DataTables mass import no longer used on this screen). * NEW: Shared admin **Loading Data** modal for core and add-on importers — `MediaBlaster_Admin_UI::render_loading_dialog()`, doc `admin-loading-modal.md`. * NEW: **Live Channels & EPG (Beta)** module — enable under Features (`rovidx_smart_tv_live_channels_enabled`). * NEW: **Live** post type with stream mode, default duration, and fallback content metadata. * NEW: **Channel Playlists** (admin CPT + Playlist Builder with Series expansion from existing `rovidx_smarttv_playlist` order). * NEW: **Channels** CPT with timezone, fallback playlist, schedule horizon, EPG visibility, and weekly **Channel Schedule** three-panel admin UI (no modal). * UPDATED: **Channel Scheduler** — channel-local times, exact second durations, configurable snap (15/5/1), live resize with magnets/collision clamp, overnight segments, optimistic save + Undo, DST-safe weekly recurrence, occurrence-aware overlap (409 conflict details), unsaved-change protection. * FIXED: **Channel Scheduler** — dual-edge resize (top/bottom hit areas, no internal grip); previous-block clamp; weekly anchor updates for start-edge edits; overnight handle assignment by segment start/end. * NEW: Schedule compiler generates `{prefix}mediablaster_channel_airings` from playlists and schedule blocks (UTC storage) for the electronic program guide. * NEW: Linear TV / EPG REST API — `/channels`, `/channels/{id}/now`, `/channels/{id}/schedule`, `/epg`, `/live`, plus admin `/linear/*` routes. * NEW: App Config and discovery expose `linearTv`, `features.linear_tv`, `enableLive`, and `enableEPG` when the module is enabled. * NEW: Deep linking supports `mediaType=liveFeed` for Live posts and Channels. * NEW: In-plugin docs — Live Streams, Channel Playlists, Channels, Channel Scheduler, Linear TV REST API, and updated Vimeo guides. * UPDATED: Features tab is the master switchboard for Podcasts, Live Channels / EPG, and Vimeo Integration (each off by default). * UPDATED: **Podcasts leave Beta** — production-ready podcast CMS (still opt-in / off by default). * NEW: Immutable episode GUIDs (`rovidx_smarttv_podcast_episode_guid`) with batched upgrade migration; legacy `urn:mediablaster:episode:{id}` preserved. * NEW: Podcast episodes use canonical subscription entitlements (`_wpst_*`) with legacy free/premium mirror for one release. * NEW: Podcast CPT capabilities (`edit_podcast_shows`, `edit_podcast_episodes`, `manage_podcast_integrations`, `distribute_podcast_episodes`) with role migration. * NEW: Write-capable Podcast REST — create/update/validate shows and episodes; public transcript/chapters endpoints for free episodes. * NEW: Production RSS — full catalogs (no 100-item cap), Atom/iTunes/Podcast Index namespaces, ETag/Last-Modified/304, enclosure validation, streaming batches. * NEW: **Podcasts → RSS Diagnostics** and shared validation service for show readiness. * NEW: Provider-neutral podcast integration API (`mediablaster_get_podcast_*`, hooks) for future distribution add-ons (no Spreaker code in core). * NEW: **Podcasts → Integrations** admin shell (`manage_podcast_integrations`) lists registered distribution add-ons and settings links. * NEW: Distribution side metabox on podcast shows/episodes applies `mediablaster_podcast_distribution_actions` (`$actions, $post_id, $object_type`). * UPDATED: Audio player — mute/volume, loading/error/retry, coordinated playback, localized ARIA, dynamic init; Gutenberg ID `0` uses current episode. * FIXED: Entitled subscribers can play protected podcast audio; unauthorized viewers never receive protected media via v3 or `/wp/v2`. * FIXED: Public show REST no longer exposes `owner_email`; episode counts respect viewer context. * FIXED: Public show template pagination; featured episodes are not duplicated in Latest. = 3.1.2 = * NEW: Roku deep-link resolution API — `GET /wp-json/mediablaster/v3/deep-link/{content_id}?media_type=` resolves numeric WordPress post IDs to playable content and series/season navigation behavior. * NEW: `deep_link` metadata on content REST items (`content_id`, `default_media_type`, `supported_media_types`). * NEW: In-plugin documentation — **MediaBlaster → Docs** → REST API — Deep Linking. = 3.1.1 = * UPDATE: Minor bug fixes and additions to support our new Roku Launch Kit. = 3.1.0 = * NEW: Platform App Config admin screen — **MediaBlaster → App Config** (positioned under General Settings) with an **App Settings** tab for connected TV and mobile clients. * NEW: Public App Config REST endpoint — `GET /wp-json/mediablaster/v3/config?platform=roku` (discoverable via `links.config` on the v3 index). * NEW: App Config covers app name, content availability, branding colors, fallback images, support/privacy links, sidebar, navigation features, labels, home layout, home tag rows, and boot behavior. * NEW: App Config branding colors use WordPress color pickers with custom hex input. * NEW: App Config fallback images support manual URL or Roku package paths (`pkg:/images/…`) plus WordPress Media Library selection with admin preview. * NEW: App Config **Clear** on image fields restores built-in Roku placeholder paths. * NEW: App Config admin uses CMB2-style grouped sections, toggle switches, inline field descriptions, and a read-only REST endpoint card. * NEW: App Config in-plugin documentation under **MediaBlaster → Docs** (App Config and REST API — App Config guides). * NEW: App Config is distinct from subscription `GET /app/config` (Stripe and auth client settings when subscriptions REST is enabled). = 3.0.0 = * REBRAND: WP Smart TV is now MediaBlaster. * NEW: Updated plugin positioning for modern media publishing, video libraries, podcasts, subscriptions, and headless WordPress workflows. * NEW: MediaBlaster website added: mediablaster.io * NEW: Community link added: Skool community * NEW: Vimeo integration is now built into the core plugin. * NEW: Vimeo OAuth connection flow. * NEW: Vimeo metadata, thumbnail, tag, title, and description syncing. * NEW: Redesigned Vimeo Mass Import workflow. * NEW: Guided Review & Import process for Vimeo videos. * NEW: General Settings reorganized into clearer feature sections. * NEW: Subscription and entitlement foundation. * NEW: Subscription tiers and access groups. * NEW: Stripe Checkout foundation for web subscriptions. * NEW: Stripe billing portal and webhook handling. * NEW: REST API foundation under `/wp-json/mediablaster/v3/`. * NEW: API direction for headless WordPress, custom apps, mobile apps, TV apps, and subscriber-aware media experiences. * NEW: Podcast Shows and Episodes (beta), RSS feeds, public pages, and Podcast Audio Player. * NEW: MediaBlaster Player — Video.js HTML5 player with shortcode, Gutenberg block, and Elementor widget. * NEW: In-plugin documentation under MediaBlaster → Docs. * NEW: Legacy Controls toggle for optional trickplay, subtitle, advanced, and advertising metaboxes. * UPDATED: Vimeo integration and podcasts are opt-in via General Settings (off by default). * UPDATED: Subscriptions require `WPST_SUBSCRIPTIONS_ENABLED` in `wp-config.php`. * UPDATED: Documentation and branding moved to MediaBlaster. * REMOVED: Roku Direct Publisher REST feed at `/wp-json/tv/roku/` (use WP Smart TV – Legacy plugin: https://github.com/rovidxmedia/wp-smart-tv-legacy). * REMOVED: Legacy REST namespace `/wp-json/wpst/v1/`. * REMOVED: Roku Direct Publisher admin screens (Roku Settings, Recipes, feed export UI). * REMOVED: Import/Export admin tab (prefer REST API for catalog access). * REMOVED: Separate Vimeo Extender add-on requirement (merged into core). * REMOVED: EDD software licensing and automatic update checker. * FIXED: Improved Vimeo importer reliability, security, and error handling. * FIXED: Better admin structure for modern WordPress media workflows. = 2.2.5 = * NEW: Merged the former Vimeo Extender add-on into the core plugin. * NEW: Added Vimeo Integrations and Vimeo Settings tabs. * NEW: Added Vimeo OAuth connection flow. * NEW: Added Vimeo URL metabox support. * NEW: Added Vimeo Mass Import tools. * SECURITY: Hardened Vimeo AJAX requests. * COMPAT: Preserved existing Vimeo option keys, post meta keys, and AJAX action names. * FIXED: Vimeo Mass Import DataTables Ajax errors. * FIXED: Vimeo API SSL certificate handling. * REMOVED: Removed the separate Vimeo Extender license/update requirement. = 2.2.4 = * UPDATE: Admin menu labels renamed. * UPDATE: General Settings deprecation notices added. * UPDATE: Roku Publisher deprecation notice added. * MISC: Readme and internal version bump.