=== Shrinkwell Image Optimizer ===
Contributors: levmedia123
Tags: image optimization, webp, image compression, media library, performance
Requires at least: 6.0
Tested up to: 6.9
Requires PHP: 7.4
Stable tag: 1.14.11
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Optimize images locally, create WebP, run safe media library optimization, and prove saved space with backups and delivery checks.

== Description ==

Optimize images without losing control.

Shrinkwell Image Optimizer is a local-first image optimizer for WordPress sites. Core optimization runs on your WordPress installation, keeps original backups when enabled, creates WebP versions, and gives you proof of saved space before handing a site back to a client.

Features:

* Optimize JPEG, PNG, and WebP uploads automatically.
* Choose Balanced, High compression, Near lossless, or Custom compression.
* Re-save images with clear compression profiles and a 1-10 Custom strength slider.
* Resize oversized images to a maximum width and height.
* Optimize thumbnails when enabled.
* Remove image metadata/EXIF where possible.
* Generate WebP versions when supported by the server.
* Serve WebP files on the frontend with safe JPEG/PNG fallback markup.
* Keep original backups before replacing files.
* Optimize existing images from Media > Shrinkwell.
* See optimization status in the Media Library list view.
* Use a tabbed settings page under Settings > Shrinkwell Image Optimizer.
* Review recent bulk results and run a frontend delivery test.
* Manage original backups and restore all optimized files at once.
* Scan the media library and receive recommended settings for the current site.
* Apply recommended settings directly after scanning.
* Run a safe 5-image bulk test before optimizing a full client media library.
* Scan image SEO issues without automatically changing content.
* Review an optimization log with saved bytes, generated WebP counts, and skipped image details.
* See clearer skip reasons with file size, image dimensions, and the configured local processing limit.
* Review current settings directly from the Overview page.
* Use modest in-plugin review prompts only after Shrinkwell has produced real results.

Shrinkwell uses WordPress' local image editor. It does not require an external API key, tracking service, or paid account.

= What Shrinkwell does not do =

* It does not send images to an external optimization service for core local features.
* It does not require an account for free local optimization.
* It does not automatically rewrite SEO content.

== Privacy ==

Shrinkwell optimizes images locally on your WordPress server. The free plugin does not send media files to an external optimization API.

== License And Assets ==

Shrinkwell is licensed under GPLv2 or later.

The included Shrinkwell logo and wordmark are original Levmedia brand assets and are distributed with this plugin under GPLv2 or later.

== Installation ==

1. Upload the plugin folder to `/wp-content/plugins/`.
2. Activate "Shrinkwell Image Optimizer" in WordPress.
3. Open Media > Shrinkwell.
4. Save your preferred settings and run the bulk optimizer.

== Frequently Asked Questions ==

= Does this use an external compression API? =

No. It uses the image editor available on your WordPress server, usually GD or Imagick.

= Does it convert images to AVIF? =

Not in the free local-first release. AVIF can be heavy on shared hosting, so Shrinkwell starts with WebP for stability.

= Can I restore originals? =

Yes. The plugin creates backup files when "Keep backups for restore" is enabled, and optimized items get a "Restore original" action in the Media Library.

= Does the SEO check rewrite alt text or filenames? =

No. Shrinkwell only reports missing alt text and weak filenames so you can review changes manually.

== Screenshots ==

1. Overview with current settings, compact site status, recommendations, and quick actions.
2. Settings tab with compression profiles, WebP settings, AVIF placeholder, and frontend delivery test.
3. Media Optimization tab with safe test workflow, progress, current image, and recent log.
4. SEO report for missing alt text and weak filenames.
5. Backup manager with original storage and restore controls.

== Changelog ==

= 1.14.11 =
* Fix: Page Proof now reports partial WebP evidence correctly instead of showing "not detected" when WebP markup exists but coverage is incomplete.
* Tweak: Added clearer cache guidance when WebP files are ready but cached page HTML still exposes JPG/PNG URLs.
* Tweak: Added Page Proof data for distinguishing missing WebP files from delivery/cache coverage issues.

= 1.14.10 =
* Added a lightweight frontend HTML pass so theme logos, page builder images, and other images outside post content can receive WebP delivery.
* Added WebP replacement for local upload background images when a matching WebP file exists.
* Improved WebP handling for image preload links on normal frontend pages.
* Added developer filters to disable frontend HTML, background image, or image preload rewriting on edge-case sites.

= 1.14.9 =
* Made the page proof scan stricter by detecting local JPG/PNG URLs that still appear uncovered even when WebP files are ready.
* Added WebP delivery coverage and uncovered image examples to the copyable page proof report.
* Improved page proof messaging for partially covered pages, including theme logos, page builder images, preloads, and cached markup.

= 1.14.8 =
* Split the media optimization queue into safe to optimize, already optimized, and too-large counts.
* Fixed the active optimization filename after skipped images so the running status no longer appears stuck.
* Clarified the public translation path through WordPress.org translation packs.

= 1.14.7 =
* Improved media optimization queue clarity when remaining images are too large for safe local processing.
* Count only processable images as ready to optimize and point oversized images to Advanced limits.
* Added a modest in-plugin WordPress.org review prompt after real optimization results.

= 1.14.6 =
* Made contextual help tips more subtle and kept them inline with their labels.

= 1.14.5 =
* Added visible log entries for single-image restores so restore testing is easier to verify.

= 1.14.4 =
* Improved page proof scan wording when WebP files exist but page HTML does not clearly serve them, and avoided negative savings wording.

= 1.14.3 =
* Added lightweight contextual help tips for settings, format delivery, advanced limits, and media optimization.

= 1.14.2 =
* Renamed homepage proof wording to page proof and added a copyable page proof report.

= 1.14.1 =
* Restored KPI icons using CSS masks so they remain visible while keeping Plugin Check output clean.

= 1.14.0 =
* Fixed Plugin Check findings for hidden files, escaped SVG output, sanitized AJAX input, and modern WordPress.org translation loading.

= 1.13.9 =
* Expanded the frontend proof scan so any same-site page URL can be scanned.
* Added page-level payload evidence that compares found original JPG/PNG file sizes with available WebP files.

= 1.13.8 =
* Increased dashboard KPI icon size for clearer visual balance.

= 1.13.7 =
* Added a frontend proof scan that checks live page HTML for WebP sources and flags JPG/PNG background images for manual review.

= 1.13.6 =
* Centered the dashboard metric icons and kept them magenta by preventing label styles from overriding the SVG color.

= 1.13.5 =
* Clarified the pending media metric by showing "Ready to re-optimize" when existing optimized images need processing again for current settings.

= 1.13.4 =
* Fixed metric card icons by replacing small admin-font icons with lightweight inline SVG icons.
* Clarified that the 10 MB local processing limit is a starting point and that pixel dimensions also affect memory use.

= 1.13.3 =
* Replaced prototype-style metric icons with lightweight Dashicons-based admin icons.
* Added a maximum file-size setting for local optimization limits.
* Improved skipped-image details with file size, dimensions, and configured limits where available.
* Improved the Image SEO scan with thumbnails, status labels, and practical suggestions.
* Prepared the plugin for WordPress locale-based translations through a languages directory.

= 1.13.2 =
* Kept AVIF disabled in the free local-first flow to avoid memory-heavy failures on normal hosting.
* Made skipped-image messages shorter and easier to read during media optimization.
* Modernized the media optimization log styling.

= 1.13.1 =
* Updated the admin UI look and feel with stronger header actions, modern tabs, larger metric cards, and softer dashboard cards.
* Renamed the user-facing library workflow to Media Optimization.

= 1.13.0 =
* Renamed the Bulk tab to Library for a clearer user-facing workflow.
* Merged Optimize and Formats into one Settings page.
* Made recommended settings more conservative by leaving AVIF optional instead of enabling it automatically.
* Added safer local AVIF limits and raised the WordPress image memory limit before local processing where WordPress allows it.

= 1.12.5 =
* Refined the Bulk page into a more compact control center with a circular progress meter.
* Added live run stats for saved space and skipped images.
* Kept the safe workflow visible without adding extra advanced filter choices.

= 1.12.4 =
* Added a clear warning to keep the Bulk page open while optimization is running.
* Added a browser leave warning during active bulk optimization.
* Added visible skipped-image errors during the current run.
* Added client-side error logging so failed browser requests also appear in the recent bulk log.

= 1.12.3 =
* Made bulk optimization more reliable on shared hosting by processing one image per request.
* If one image request fails, Shrinkwell now skips that item, logs the problem, and continues instead of stopping the whole run.
* Added local safety checks for very large files and dimensions to reduce memory-related failures.
* Removed the visible advanced filter block from the Bulk page to keep the scan and bulk workflows clearer.
* Updated the admin header and bulk copy around local-first, safety-focused positioning.

= 1.12.2 =
* Simplified the Overview page by removing internal launch/proof panels and moving site status into a compact sidebar.
* Removed automatic bulk-start remnants from the recommendation flow.

= 1.12.1 =
* Changed the recommended settings flow so applying recommendations no longer starts bulk optimization automatically.
* Cleaned up the remaining Plugin Check sanitization warning for admin result notices.

= 1.12.0 =
* Simplified admin navigation to Overview, Optimize, Formats, Bulk, SEO, Backups, and Advanced.
* Merged the settings summary into the Overview page.
* Added safe extension hooks for AVIF availability, bulk batch sizing, review URL, and after-optimization events.
* Added an in-plugin review request that only appears after real usage and no recent errors.

= 1.11.1 =
* Cleaned up Plugin Check findings for translator comments, read-only admin URL handling, AJAX input sanitization, file replacement, and the readme short description.

= 1.11.0 =
* Renamed internal public prefixes from the older short prefix to the safer `shrinkwell_`, `SHRINKWELL_`, and `shrinkwell-` patterns for WordPress.org review.
* Simplified the public plugin name to `Shrinkwell Image Optimizer`.
* Updated the WordPress.org contributor account to `levmedia123`.

= 1.10.0 =
* Added a launch readiness checklist and optimization proof overview.
* Stored delivery test and SEO scan results so site readiness is easier to review.
* Added a 5-image bulk test run for safer first use on client sites.
* Prevented WebP source files from being processed as duplicate WebP copies.
* Removed the dashboard widget from the first WordPress.org submission build to keep the admin footprint focused.

= 1.9.0 =
* Added smart bulk filters and an image SEO report for missing alt text and weak filenames.

= 1.8.0 =
* Rebranded the plugin to Shrinkwell, improved the bulk flow, and simplified Custom compression controls.

= 1.7.0 =
* Added a settings summary page and replaced the technical custom quality input with a 1-10 compression strength slider.

= 1.6.0 =
* Added an apply button for site scan recommendations and quick follow-up links.

= 1.5.0 =
* Improved compression explanations, clarified WebP/AVIF settings, added recommendation markers, and added a site recommendation scan.

= 1.4.0 =
* Added a backup manager tab with backup storage stats, per-image restore links, and restore-all support.

= 1.3.0 =
* Added bulk logs, WebP/AVIF delivery test, and a WordPress dashboard widget.

= 1.2.0 =
* Added tabbed settings pages, compression profiles, AVIF creation/serving, EXIF removal option, thumbnail optimization control, status checks, and improved bulk progress.

= 1.1.0 =
* Added frontend WebP serving with picture/source fallback.

= 1.0.0 =
* Initial version.
