Release notes / WPMediaVerse Pro
Premium Plugin Plugin

WPMediaVerse Pro

Once media is the main activity, three things break: storage costs spiral, video buffers, members ask for showcase formats. WPMediaVerse Pro adds five layout modes, photo competitions, S3 and BunnyCDN storage, HLS transcoding with auto-captions, and per-user quotas tied to memberships.

7 releases
v1.3.0 latest
May 17, 2026 shipped

v1.3.0 Latest

May 17, 2026
New 3 Improve 3 Fix 3 Compat 2

New

  • Storage Management admin UI under Settings, Storage tab. Two batched actions: Move next 20 copies local public media to your active cloud driver (S3 or BunnyCDN); Delete next 20 removes the local copies after a verified cloud upload. Confirmation modal on every destructive click.
  • 100% JavaScript translation coverage. Connector flow strings and Instagram-layout strings now flow through WordPress translations.
  • Storage drivers expose the new download() method. Enables Free's "wp mvs migrate-storage" command to copy media between local and cloud, or between cloud providers.

Improve

  • Inherits Free's image optimization pipeline. Every JPEG, PNG, GIF uploaded to Pro storage drivers (S3 or BunnyCDN) is automatically re-encoded smaller. WebP and AVIF siblings are pushed alongside the original.
  • Connection settings labels now match each vendor's dashboard wording (Amazon S3 and BunnyCDN). Two-step setup walkthroughs explain each field in plain language.
  • Pro inherits Free's security hardening including the activity privacy fix and REST per-page caps. Per-page caps apply across Challenge, Tournament, Connector, and Transcode endpoints.

Fix

  • S3 driver path encoding now works on Cloudflare R2, MinIO, and Backblaze B2. The previous encoding worked on AWS S3 by coincidence but failed on other S3-compatible backends.
  • BunnyCDN file-exists check no longer always returns false. BunnyCDN does not support HEAD requests; switched to a small Range-GET. The migrate-storage CLI no longer re-uploads files that already exist on Bunny.
  • Cloud-storage settings no longer wipe stored secrets on form save. Previously saving the form with an empty password field would overwrite the stored secret.

Compat

  • Requires WPMediaVerse Free 1.3.0. Install both updates together. Pro 1.3.0 calls Free 1.3.0 APIs and will not function on older Free versions.
  • Image compressor integration via Free's mvs_optimize_image filter. Pro intentionally does not bundle an adapter for EWWW, Imagify, Smush, or ShortPixel; customers pick their preferred tool through a short mu-plugin snippet documented in the Free plugin.

v1.2.0

May 5, 2026
New 8 Fix 9

New

  • All Pro features are now Gutenberg blocks - `mvs/pro-tournament`, `mvs/pro-tournaments-list`, `mvs/pro-challenge`, `mvs/pro-challenges-list`, `mvs/pro-battle`, `mvs/pro-battles-active`, `mvs/pro-instagram-feed`, `mvs/pro-flickr-feed`, `mvs/pro-pinterest-feed`, `mvs/pro-dribbble-feed`, `mvs/pro-leaderboard`, `mvs/pro-compete-hub`. Each ships with a matching shortcode (kebab-case → camelCase attr translation). Single-entity blocks carry an ID picker; list/aggregate blocks carry the standard layout attrs only.
  • Per-page Layout blocks - Instagram / Flickr / Pinterest / Dribbble feeds embeddable on any page. Layout classes now expose `render_feed(array $args = []): string`; site-wide path unchanged.
  • Standard inspector panels - Spacing / Border / Shadow / Visibility appear on every Pro block in the same canonical order as wbcom-essential and Free. Per-instance scoped CSS via `MVS_CSS::add()` keyed off `mvs-block-{uniqueId}`, dumped on `wp_footer`.
  • MigrationPage split by platform - the 1,866-line god class is now a 627-line generic shell hosting per-platform `Integrations\<Platform>\MigrationAdmin` cards. Three subclasses (RtMedia, MediaPress, BuddyBoss) own per-platform detection, run-batch mapping, album creation, and rtMedia activity rewriting. Two pre-existing bugs fixed in the same pass: detect queries no longer use `_mvs_*`-prefixed meta keys (the import path stamps non-prefixed keys → "Imported" count was always 0); MediaPress run-batch now declares `global $wpdb`.
  • `AbstractBatchImporter` base class - three CLI importers (RtMedia, MediaPress, BuddyBoss) used to duplicate ~80% of orchestration. Now they extend the base and supply only platform-specific bits (env probe, source query, dedup meta key, per-row mapping). Rule 7.2 unblocked.
  • Admin AJAX handler allowlist (Rule 5) - `bin/coding-rules-check.sh` rejects any `add_action('wp_ajax_*')` outside the documented 5-handler allowlist. Off-list registrations fail the gate.
  • Block render-asset enqueue gate (Rule 6) - any block whose `render.php` instantiates a `WPMediaVersePro\Frontend\Layouts\*` class MUST call `$layout->enqueue_assets()` in the same file. Idempotent. Prevents the bug class that briefly shipped in 1.2.0 (feed blocks instantiated Layout but never enqueued per-layout CSS, so SVG icons rendered at viewBox-default size).
  • Phase 2 restructure - 14 platform-coupled files moved into `includes/Integrations/<Platform>/`. Class names role-named, never vendor-prefixed (`Integrations\AmazonS3\StorageDriver`, not `S3StorageDriver`). Rule 4 in `bin/coding-rules-check.sh` rejects re-introductions at legacy paths.

Fix

  • Pro layout cards now open the lightbox on click - eight templates (Pinterest, Pinterest profile, Flickr, Flickr profile, Dribbble, Dribbble profile, Instagram, Instagram fallback) had the Interactivity API context wired but missed the `data-wp-on--click="actions.openLightbox"` directive on the actual clickable element. Result: clicking a card / expand button did nothing on every Pro layout demo. Now all 8 templates fire the lightbox correctly. Anchor-based templates (Flickr / Dribbble) keep the `href` as a graceful fallback so non-JS clicks still navigate to the single-media page.
  • Author profile URLs no longer leak BuddyPress mention HTML. Instagram feed cards (and the leaderboard top-creators rows) built `/media/@username/` URLs inline. When BuddyPress's `bp_activity_at_name_filter` ran on the surrounding output, the `@username` substring inside the URL was rewritten into a full BP mention `<a class='bp-suggestions-mention' …>@username</a>` - corrupting the URL with literal HTML and producing dead links. All 3 Pro sites now route through Free's canonical `TemplateHelpers::get_user_profile_url()`.
  • Explore filters a11y (`templates/layouts/partials/explore-filters.php`) - Media / People search-mode toggle gains `role="tablist"` / `role="tab"` / `aria-selected` semantics; search input gets a screen-reader-only `<label>`.
  • Leaderboard list rendering - `<ol>` swapped to `<ul>` with explicit `list-style:none` so themes that add `1. 2. 3.` markers don't double up with the leaderboard's own rank numbers.
  • Video poster filter `mvs_pro_poster_frame` now passes the actual source-video file path as its third argument. The filter site referenced an undefined `$file_path` variable (the parameter in scope was `$input`); PHP emitted an `Undefined variable` warning and any consumer of the filter received `null` for the path argument. Fixed; PHPStan baseline entry dropped.
  • AI transcription (Whisper-powered captions) now works on every install. The provider was reading the OpenAI API key from a stale, pre-1.0 option name and silently produced empty transcripts even when the key was correctly configured under WPMediaVerse → Settings → AI. After upgrading to 1.2.0, please re-run any video / audio captioning that previously came back blank - no settings change required, just trigger the transcription again. Affected since: every Pro install that used Whisper captions. Commit: `5efff75`.
  • Pro-owned options renamed from `mvs_*` to `mvs_pro_*` with an automatic activation migration so settings carry over cleanly. No manual action required.
  • Whisper provider now consumes the same `mvs_openai_api_key` option / filter / `MVS_OPENAI_API_KEY` constant chain as Free, single-sourced through `Core\SettingsHelper` (architecture invariant A4). Includes a guarded fallback for installs still on pre-1.2.0 Free.
  • Messaging residue cleanup - all Pro-side messaging features now live in Free only. Pro's `Plugin.php` already declared messaging deferred to Free, but a stale fork of Free's MessagingService had drifted ~4 features behind under `includes/Messaging/` and `assets/js/messaging.*`. Deleted the unloaded duplicate (5 PHP files + 2 JS files + chat-panel template). The live Instagram-layout JS (the only consumer of the old `mvs-pro/messaging` Interactivity store) now calls Free's `store('mvs/messaging')` via the documented cross-store bridge. Customer impact: zero - none of the deleted code was wired into Pro's bootstrap.

v1.1.3

April 29, 2026
Improve 1

Improve

  • Version bumped to match Free 1.1.3 - all lightbox improvements (full-viewport layout, full-resolution images, correct close button positioning, Lucide icons) are in the Free plugin that Pro extends

v1.1.2

New 1 Fix 5

New

  • Mobile UX on Battles, Challenges, and Tournaments now inherits the same Apple-quality touch-target, safe-area, and z-index tokens as the Free plugin - every interactive element clears the 44×44 floor, floating elements respect the iOS home bar, and the mobile experience is uniform across Free + Pro

Fix

  • Challenges and Tournaments now store start/end dates in the site's timezone correctly - previously, when the site used a non-UTC timezone (for example UTC+5:30), challenges were stored 5.5 hours in the future and stayed "scheduled" forever instead of going live
  • Challenge admin list now has a "View" link alongside Edit / Cancel, so admins can preview what users see on the frontend in one click
  • Photo Battles now keep the two contenders side-by-side on mobile (≤640px) instead of stacking vertically - the head-to-head matchup feel is preserved, with 144×144 photos and a VS divider between them
  • Challenge admin form now has a Cover Image upload field - the database and frontend already supported it, but the form had no way to set it. Comes with a media library picker, preview, and Replace / Remove buttons
  • Challenge lifecycle emails + in-app notifications now fire on every stage - the creator gets notified when the challenge is created, each entrant gets a confirmation email + notification on submit, top-3 winners get a congratulations email on finalize, and non-winning participants get a thank-you email

v1.1.1

Fix 5

Fix

  • Battle Arena now shows correct winner using mvs_competition_matches table
  • Challenge schedule dates can be updated for active and voting statuses
  • Duplicate "Compete" nav menu items - now only injects in primary menu
  • Deep-link to specific battle via /media/battles/{id}/
  • Battle page passes battleId to Interactivity API context for direct access

v1.1.0

New 6 Improve 5 Fix 5

New

  • Load More on all feed and profile templates (Pinterest, Flickr, Dribbble, Instagram)
  • User Reports tab merged into unified Moderation page
  • Video Analytics tab merged into unified Stats page
  • rtMedia migration rewrites activity content with native video/audio players
  • Multi-media activity support - activities with multiple items render in grid
  • Re-migration support - safely re-run migration on previously migrated content

Improve

  • Replaced Instagram infinite scroll with Load More button
  • Theme library clear active/inactive status with icons
  • Admin UX aligned with free plugin v1.1.0 improvements
  • Migration preserves all rtMedia engagement data (views, reactions, downloads, ratings)
  • Competition URLs now link to individual battles, challenges, and tournaments

Fix

  • Duplicate quota package creation on plugin activation
  • Pinterest layout and explore filter refinements
  • Video activities in BuddyPress feed render as playable video instead of broken image
  • Audio activities render as audio player instead of broken image
  • Group media migration preserves group context and privacy

v1.0.0

Note 10

Note

  • Initial release
  • Cloud storage integration (Amazon S3, BunnyCDN)
  • Video intelligence (transcoding, chapters, resume playback, captions)
  • Direct messaging with REST polling transport
  • Instagram feed layout override
  • Advanced analytics dashboard
  • Additional AI providers (Google Vision, AWS Rekognition)
  • Watermarking for content protection
  • Data migration from rtMedia, MediaPress, and BuddyBoss
  • License management with EDD SL SDK