=== Media Trim — Unused & Duplicate Media Cleaner ===
Contributors: mehedi2509
Tags: media library, cleanup, unused media, duplicates, performance
Requires at least: 6.0
Tested up to: 6.9
Stable tag: 1.0.3
Requires PHP: 7.4
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html

Clean up your WordPress media library by finding and removing unused, duplicate, and orphaned media files. Reclaim disk space instantly.

== Description ==

**Media Trim** is the ultimate solution for keeping your WordPress media library clean and optimized. Stop wasting server space on unused images and forgotten uploads.

Whether you're managing a small blog or a large content site, Media Trim scans your entire media library, identifies files that aren't being used anywhere, and gives you the power to safely remove them with a single click.

== Why Choose Media Trim? ==

*   **Smart Detection:** Advanced scanning algorithms detect truly unused media by checking posts, pages, custom post types, meta fields, widgets, and theme options.
*   **Safe Cleanup:** Files are moved to a trash system first, allowing you to restore them if needed before permanent deletion.
*   **Duplicate Finder:** Identify and merge duplicate files to save even more space.
*   **File System Scanner:** Find orphaned files on disk that aren't in the media library.

== Key Features ==

*   **Unused Media Detection:** Scan and identify media files not used anywhere on your site.
*   **Duplicate Media Finder:** Find files with identical content and merge them.
*   **File System Scanner:** Discover orphaned files in your uploads folder.
*   **Trash System:** Safe deletion with restore capability before permanent removal.
*   **Bulk Actions:** Delete, trash, or restore multiple files at once.
*   **Detailed Reports:** See exactly where each media file is being used.
*   **Performance Optimized:** Batch processing to handle large media libraries.

== External Services ==

This plugin connects to external third-party services to provide specific features. Below is a detailed disclosure of each service used:

= Pexels API =
This plugin includes an optional "Stock Images" feature that integrates with the **Pexels API** to search and import free stock photos directly into your site.

* **What it does:** Provides a searchable library of free-to-use stock images within the "Stock Images" tab.
* **When data is sent:** Only when you actively search for images or import a specific photo. No data is sent automatically or in the background.
* **What data is sent:** Your search terms and pagination preferences are sent to Pexels. Your Pexels API key (if provided in Settings) is sent as an authorization header.
* **Service Provider:** Pexels (Canva Pty Ltd)
* **Terms of Use:** [https://www.pexels.com/terms-of-service/](https://www.pexels.com/terms-of-service/)
* **Privacy Policy:** [https://www.pexels.com/privacy-policy/](https://www.pexels.com/privacy-policy/)

== Installation ==

1.  Go to **Plugins > Add New** in your WordPress dashboard.
2.  Search for `Media Trim`.
3.  Click **Install Now** and then **Activate**.
4.  Go to **Media Trim** in your admin menu and start scanning!

== Frequently Asked Questions ==

= What is Media Trim? =
Media Trim is a WordPress plugin that helps you find and remove unused, duplicate, and orphaned media files from your site.

= Is it safe to delete unused media? =
Yes! Media Trim moves files to a trash system first. You can review and restore any file before permanently deleting it.

= Will this affect my live content? =
No. Media Trim only identifies files that are not being used anywhere. Your active content remains untouched.

= Can I undo a deletion? =
Yes, files go to the Media Trim trash first. You can restore them any time before permanent deletion.

= Does it work with page builders? =
Yes! Media Trim scans post content, meta fields, and serialized data to detect usage in popular page builders like Elementor, Divi, and Beaver Builder.

= How does duplicate detection work? =
Media Trim compares file hashes to find identical content, regardless of filename. You can then choose which copy to keep and merge the duplicates.

== Development ==

This plugin uses `@wordpress/scripts` for building the admin dashboard React application. The human-readable source code is located in the `admin/dashboard/` directory. To build the assets:

1. Run `npm install` to install dependencies.
2. Run `npm run build` to compile the production assets into `assets/admin/`.


== Changelog ==

= 1.0.3 - 10 May 2026 =
*   Added: Brand UI Rebranding — updated the entire dashboard with a new premium steel blue and navy palette.
*   Added: Welcome Banner — new dashboard overview section with "Smart Media Cleanup" brand messaging.
*   Added: Scanning Line Animation — real-time visual scanning effect that matches the brand identity.
*   Added: Glassmorphism effects and refined card aesthetics for a more modern experience.
*   Improved: Dashboard performance and visual consistency across all tabs.

= 1.0.2 - 10 March 2026 =
*   Fix: Bulk restore from trash now correctly handles failed restorations — trash records are preserved and success count is accurate.
*   Fix: Scan completion error ("Unexpected token" / database column mismatch in ScanManager) resolved.
*   Fix: Unused Media pagination now works correctly.
*   Fix: Duplicates page pagination reduced to 10 items per page for better usability.
*   Fix: Bulk delete permanently now uses safer JSON parsing for trash IDs.

= 1.0.1 - 2 March 2026 =
*   Fix: Resolved issues with the Duplicates feature.
*   Added: Plugin icon, logo, and banner assets.

= 1.0.0 - 5 February 2026 =
*   Initial release to the WordPress repository.
*   Added: Unused media scanner.
*   Added: Duplicate media finder.
*   Added: File system scanner for orphaned files.
*   Added: Trash system with restore capability.
*   Added: Bulk delete and restore actions.
