=== NaveenCodes Image Optimizer ===
Contributors: shinu1503
Donate link: https://naveencodes.com/support/
Tags: image optimizer, image compression, webp, avif, performance
Requires at least: 5.8
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.5.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Optimize WordPress images with bulk compression, upload optimization, Media Library actions, and zero tracking.

== Description ==

💛 This plugin is dedicated to my mother. Every update carries her blessings.

NaveenCodes Image Optimizer helps you compress images across your WordPress site without feature locks, tracking code, or disruptive upsells. It supports automatic upload optimization, bulk processing for existing Media Library items, and clear before-and-after reporting so administrators can verify what changed.

The plugin is designed to stay simple in wp-admin. Site registration is automatic after activation, the optimization service connection is handled by the plugin, and administrators can manage compression behavior, batch size, resize rules, formats, retries, and metadata handling from one interface.

The plugin is designed to remain fully free:

* No locked features
* No artificial monthly limits
* No ads
* No tracking
* No upsells

Features include:

* Automatic optimization on upload
* Async or sync processing modes
* Background queue backed by a custom database table
* Bulk optimization with progress updates and resume support
* Full compression profile controls in wp-admin for quality, resize rules, metadata handling, formats, retries, and batch size
* Automatic site-specific API key provisioning after plugin install
* Optional WebP and AVIF sidecar generation
* Optional backup copies before replacement
* Dashboard analytics for images optimized, bytes saved, compression rate, failures, queue status, and service health
* Media Library badge and single-image optimization action
* Before and after reporting for recently optimized images
* Local-only logging for troubleshooting
* Optional and non-intrusive donation page

= How It Works =

* New uploads can be optimized automatically.
* Existing Media Library images can be queued in bulk.
* Individual images can be optimized directly from the Media Library.
* The dashboard shows total savings, failures, progress, registration state, and health status.

= External Service Disclosure =

This plugin connects to an external image optimization service in order to compress images.

Service URL:

* `https://naveencodes.com`

When the plugin communicates with the service, it may send:

* The image binary being optimized
* Optimization options such as quality, resize width, metadata handling, and output formats
* The site URL during automatic site registration

The service is used only for optimization and registration required by the plugin workflow.

* No analytics or advertising scripts are included.
* No unrelated remote calls are made.
* No user account is required.

== Installation ==

1. Upload the `naveencodes-image-optimizer` folder to `/wp-content/plugins/`, or install the plugin ZIP from `Plugins > Add New > Upload Plugin`.
2. Activate the plugin through the `Plugins` screen in WordPress.
3. Open wp-admin once after activation so the website can complete automatic registration.
4. Go to `NaveenCodes Image Optimizer > Batch Settings` to review compression quality, batch size, resize rules, metadata handling, formats, backup behavior, and retry timing.
5. Go to `NaveenCodes Image Optimizer > Optimize Media` to queue existing Media Library images for bulk processing.
6. Optionally optimize single images from the Media Library list view.

== Frequently Asked Questions ==

= Does the plugin need manual configuration in wp-admin? =

No manual service credentials are required. The website registers automatically after activation, and administrators can review the compression profile and batch settings from wp-admin.

= Does the plugin require a third-party account? =

No. The plugin does not require a separate dashboard account or subscription.

= Are any features locked behind payment? =

No. All features ship enabled in the free plugin. Donations are optional.

= What image formats are supported? =

JPG, PNG, GIF, WebP, and AVIF uploads are supported. Optional WebP and AVIF sidecar files can also be stored when the optimization service returns them.

= Can I optimize one image at a time? =

Yes. The Media Library includes a plugin status badge and a single-image optimization action.

= Does it block uploads? =

Not when async mode is enabled. New uploads are queued and processed in the background through WP-Cron.

= What happens if the optimization service is offline? =

The original image remains in place, the error is logged locally, and queued jobs retry based on your retry setting.

= What data is sent to the external service? =

The plugin sends the image being optimized and the selected optimization profile values. During automatic registration it also sends the site URL required to issue the site-specific key.

= Is it multisite compatible? =

Yes. Activation, scheduling, uninstall cleanup, and queue tables are handled per site.

== Screenshots ==

1. Dashboard showing optimization totals, space saved, queue state, registration, and health.
2. Optimize Media screen with live bulk progress and a table of optimized images.
3. Batch Settings screen with compression profile, reliability controls, and registration details.
4. Media Library list view with plugin badge and single-image optimization action.
5. Logs screen showing recent optimization activity and failures.
6. Donation screen with optional support details and QR payment option.

== Changelog ==

= 1.5.0 =
* Added: LQIP blur placeholders — a tiny blurred thumbnail is generated automatically for each optimized image and stored as post meta. On the front end, the placeholder appears instantly while the full image loads, then fades away smoothly. Works on all images added via wp_get_attachment_image() and in post content. Enable/disable from Settings → Performance.

= 1.4.1 =
* Fixed: Plugin URI updated to the WordPress.org plugin page (was pointing to dev site).

= 1.4.0 =

* Added: Three one-click compression presets (Lossy, Balanced, Pixel-perfect) on the Batch Settings screen — click a preset card to instantly load recommended quality, mode, and smart compression values, then save.
* Added: Resumable bulk queue — the plugin now saves scan session state so returning to the Optimize Media screen shows exactly how many images are pending and lets you resume processing without re-scanning the full Media Library.
* Added: Smart bulk button that shows Start, Resume Scan, or Resume Optimization depending on current session state.

= 1.3.7 =

* Added: A small tribute in memory of Maa ❤️

= 1.3.6 =

* Added attachment pre-check warnings for missing titles, duplicate titles, duplicate file names, and suspicious filenames.
* Improved failed optimization messages so relevant warnings can appear alongside the core failure reason.

= 1.3.5 =

* Removed the extra Optimized Images section from the Optimize Media page.
* Improved optimization failure messages so users see more specific reasons when an image cannot be processed.
* Refined log context display for clearer troubleshooting.

= 1.3.4 =

* Added image links to the Logs screen when attachment context is available.
* Improved Optimize Media status switching so only the selected panel opens instantly.
* Tightened mobile and tablet responsiveness across admin screens.

= 1.3.3 =

* Added a direct Settings action link on the Plugins screen.
* Expanded the Optimize Media page with Pending, Processing, Completed, and Failed image tables linked to Media Library items.

= 1.3.2 =

* Updated generated WebP and AVIF sidecar naming to keep the original extension, improving compatibility with LiteSpeed-style rewrite setups.

= 1.3.1 =

* Added a review request notice for administrators after real plugin usage.
* Kept the notice dismissible per admin user and suppressed donation prompts until the review prompt is handled.
* Refined admin notice behavior for a cleaner post-activation experience.

= 1.3.0 =

* Renamed the plugin for WordPress.org submission as NaveenCodes Image Optimizer.
* Updated plugin metadata, contributor details, and submission-facing branding.
* Refactored internal prefixes to the distinct `naveencodes_` family.
* Removed the public REST registration callback and aligned registration with direct validated service responses.
* Tightened submission package identifiers, hooks, options, and transport headers.

= 1.1.1 =

* Improved admin readability with a lighter UI redesign and cache-busted assets.
* Added plugin page banner and a WordPress Dashboard widget.
* Cleaned several WordPress.org scanner issues in templates and admin code.
* Refined uninstall cleanup and packaging for submission readiness.

= 1.1.0 =

* Redesigned dashboard, optimize media, and settings screens.
* Added full compression profile controls in wp-admin.
* Added Media Library optimization badge and single-image action.
* Added recent image before/after reporting and registration status UI.

= 1.0.0 =

* Initial public release.
* Added sync and async optimization workflows.
* Added background queue table with cron processing.
* Added bulk optimization screen with progress and resume support.
* Added analytics dashboard, logs page, and donation page.
* Added support for JPG, PNG, GIF, WebP, and AVIF.

== Upgrade Notice ==

= 1.4.1 =
* Fixed: Plugin URI updated to the WordPress.org plugin page (was pointing to dev site).

= 1.4.0 =

Adds compression presets (Lossy/Balanced/Pixel-perfect) for one-click quality setup and a resumable bulk queue that picks up from where it left off.

= 1.3.7 =

Adds a small tribute in memory of Maa ❤️

= 1.3.6 =

Adds smarter attachment pre-check warnings so failed image optimizations are easier to diagnose.

= 1.3.5 =

Improves error clarity and simplifies the Optimize Media screen.

= 1.3.4 =

Improves log visibility, status panel behavior, and admin responsiveness.

= 1.3.3 =

Adds a direct Settings link and live queue status tables on the Optimize Media screen.

= 1.3.2 =

Improves generated WebP and AVIF sidecar naming for broader LiteSpeed compatibility.

= 1.3.1 =

Adds a review request notice after the plugin has demonstrated value and keeps admin notice flow cleaner.

= 1.3.0 =

Introduces the final NaveenCodes branding, stronger internal prefixing, and a review-safe registration flow for WordPress.org submission.

= 1.1.1 =

Refined the admin experience, improved WordPress.org submission readiness, and cleaned compliance-related implementation details.

= 1.1.0 =

Refined admin experience with Media Library actions, full profile controls, and cleaner progress reporting.

= 1.0.0 =

Initial release of NaveenCodes Image Optimizer.
