New: an “Upgrade to Pro” page under Media that lists the MediaPilot AI Pro feature set, plus an “Upgrade to Pro” link on the plugin’s row on the Plugins screen.
1.6.0
New: media-usage detection is now globally extensible. A generic reference scanner understands how any theme/plugin stores media — single IDs, comma-separated lists, serialized arrays, JSON, and upload URLs — so custom fields, Metabox, ACF galleries, Houzez, and similar frameworks are recognised without dedicated code, making the “Unused” results far more accurate.
New developer hooks: mdpai_register_usage_sources (register a custom reference scanner), mdpai_usage_post_references (add/adjust the references found for a post), and mdpai_attachment_in_use (a global veto to protect any attachment from cleanup, even one the scanner didn’t detect).
Safety: the mdpai_attachment_in_use veto is enforced everywhere media can be cleaned up, so protected files are never listed as unused, never trashed, and never removed when resolving duplicates.
Internal: page-builder detection (Elementor, Beaver Builder, Bricks, WPBakery, Divi) refactored onto the same pluggable source pipeline; no change to what is detected.
1.5.5
New: Safe cleaning — duplicates and unused media now move to a restorable Trash instead of being deleted immediately. Files stay on disk and can be restored from the new Trash panel on the Media › Duplicates screen, or permanently removed as a separate, explicit step.
New: Trashed clean-up items auto-delete after a configurable retention period (default 30 days).
Improved: every clean-up candidate is still re-verified as genuinely unused right before it is trashed, so anything still in use is skipped, never removed.
1.5.4
Fixed: the “Unused” Smart View could return an HTTP 500 error while browsing the Media Library on sites with a large usage index. The view now excludes used files with a database subquery instead of an oversized exclusion list, so it stays reliable and fast as the library grows.
Improved: Smart View counts no longer load every used-file ID into memory, and all “Unused” queries safely no-op if the usage table is unavailable.
1.5.0
MediaPilot Settings tabs are now extensible: add-ons can register their own tabs via the mdpai_settings_tabs filter and render them via the mdpai_settings_render_tab action, so a Pro add-on can live inside the Settings screen instead of adding separate menus.
1.4.0
Added developer seams so add-ons can extend optimization on a single screen: mdpai_optimization_settings_after (action, render extra UI on the Optimization screen) and mdpai_local_optimization_enabled (filter, lets an add-on disable local optimization when it takes over).
1.1.0
Added developer extension hooks for add-on integrations: mdpai_attachment_url (filter, per-attachment delivery URL), mdpai_attachment_uploaded (action), and mdpai_attachment_deleted (action).
No changes to existing features and no database changes; these hooks are inert unless an add-on uses them.
1.0.0
Initial release.
Hierarchical folder system for the media library with drag-and-drop and bulk assignment.
Usage tracker across posts, pages, products, page builders, and widgets, with a one-click “Rebuild Usage Index” and an “Unused Media” view.
Analytics: storage totals, storage by file type and folder, upload activity, insert/download counts, and CSV export. Storage sizes are backfilled automatically for existing media.
Duplicate detection (exact + visually similar) with a cancellable, batched background scan.
Document Library shortcode and password-protected Client Portal share links.
Optional CDN URL rewriting (opt-in) and gallery blocks/widgets for the native block editor and the major page builders.
Chart.js is bundled locally; no third-party CDNs are used for plugin assets.