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

Free local image optimization for WordPress. No account. No external API. WebP, backups, SEO checks, and proof reports included.

== Description ==

Shrinkwell Image Optimizer helps WordPress site builders optimize images locally, without an external API or account. It compresses JPEG/PNG images, creates WebP versions, keeps original backups, checks image SEO, and gives clear proof of delivery and savings.

Use the safe 5-image test first, review the result, then optimize the full media library with more confidence.

= Local-first optimization =

* Automatically optimize JPEG, PNG, and WebP uploads on upload.
* Choose from Balanced, High compression, Near lossless, or Custom compression profiles.
* Use controlled compression settings designed to preserve quality while reducing file size.
* Resize oversized images to a maximum width and height.
* Optimize thumbnails and strip image metadata/EXIF where possible.

= Safe media library workflow =

* Run a safe 5-image optimization test before committing to a full media library run.
* Optimize existing images directly from Media > Shrinkwell.
* Review saved space, skipped files, and recent results before continuing.

= WebP delivery checks =

* Generate WebP versions when supported by your server.
* Use the local `cwebp` binary when available, with WordPress image editor fallback.
* Generate missing WebP files without recompressing originals.
* Serve WebP on the frontend with safe JPEG/PNG fallback markup.

= Page Proof reports =

* Run a Page Proof scan on a live frontend page to verify WebP delivery, estimate image payload savings, and identify cached JPG/PNG URLs.
* Copy or download a plain-text proof report for your own checks or client handoff.

= Image SEO Check =

* Find images with missing alt text, weak alt text, and weak filenames.
* Use safe one-click alt text suggestions when Shrinkwell has a reliable source.
* Avoid blindly reusing random filenames, GUIDs, or camera-style names as SEO text.
* Save alt text inline without leaving the Shrinkwell screen.

= Backups & Restore =

* Keep original backups before replacing any files.
* Restore all optimized images at once from a single screen.

= Quick Start =

1. Install Shrinkwell and open Media > Shrinkwell.
2. Run the 5-image safe test.
3. Review savings, skipped files, and backups.
4. Run Media Optimization for the full media library.
5. Use Page Proof to verify WebP delivery on a real frontend page.

= Insights & Logging =

* View optimization status directly in the Media Library list view.
* Review an optimization log showing saved bytes, WebP counts, and skipped files with clear reasons such as file size, dimensions, and processing limits.
* Review current settings from the Overview page at a glance.

= Settings & Recommendations =

* Configure everything from the Shrinkwell admin page under Media > Shrinkwell.
* Scan your media library and receive tailored setting recommendations for your site.
* Apply recommended settings in one click after scanning.
* Scan for image SEO issues without automatically modifying content.

Review prompts appear only after Shrinkwell has produced measurable results.

= What Shrinkwell Does Not Do =

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

== Privacy ==

Shrinkwell optimizes images locally on your WordPress server. The free plugin never sends media files to an external API.

== License & 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. Recommended settings scan and quick actions for common web-builder workflows.
3. Settings tab with controlled compression, WebP delivery, and compact encoder status.
4. Page Proof result with plain-language delivery guidance and downloadable proof report.
5. Media Optimization tab with the safe 5-image test workflow.
6. Image SEO check with safe suggestions and weak filename guidance.
7. Backup manager with original storage and restore controls.
8. Advanced safety limits for backups, large-image resizing, and server checks.

== Changelog ==

= 1.14.27 =
* Tweak: Refined WordPress.org positioning around free local optimization, no account, no external API, WebP, backups, SEO checks, and proof reports.
* Tweak: Added a Quick Start section and refreshed screenshot captions for the public plugin page.
* Tweak: Added a client-side Page Proof .txt download button.

= 1.14.26 =
* Tweak: Improved WordPress.org tags and description to highlight image SEO and the local workflow.
* Tweak: Added a small in-plugin note that Shrinkwell is actively improved and WordPress.org updates will continue.

= 1.14.25 =
* Tweak: Reduced Page Proof visual noise by collapsing technical checks, long URL lists, cache headers, and scan notes by default.
* Tweak: Made WebP/AVIF encoder status less prominent in Settings.

= 1.14.24 =
* Tweak: Improved SEO suggestions so weak filenames, random IDs, and weak alt text are not reused as one-click suggestions.
* Tweak: Simplified the SEO table by removing the title field from the suggestion column and keeping the focus on alt text.

= 1.14.23 =
* Tweak: Reworked Advanced server safety status into clear status cards with plain-language explanations.

= 1.14.22 =
* Tweak: Cleaned up the SEO table spacing and removed the decorative-image control from the compact SEO action column.
* Tweak: Made Media Issue Center cards more compact and readable for long safe-skip messages.

= 1.14.21 =
* Tweak: Made Page Proof copy more beginner-friendly with a simple result, action checklist, and technical details last.
* Tweak: Made media log sections collapsible to reduce visual noise.
* Tweak: Made SEO suggestions auto-save when clicked and simplified the SEO table status display.
* Tweak: Removed duplicate "Suggestion:" wording from SEO suggestion text.

= 1.14.20 =
* Tweak: Added a guided after-restore flow that points users straight to WebP rebuild.
* Tweak: Replaced scattered skipped-image summaries with a Media Issue Center for Needs action, Safe skips, and Done.
* Tweak: Made SEO edits easier with use-suggestion, decorative image, empty-alt warning, and bulk save controls.
* Tweak: Added a Page Proof cache checklist for WordPress cache, Divi/static CSS, hosting/CDN/Varnish, and browser cache.

= 1.14.19 =
* Fix: Existing WebP files that are larger than the original are no longer counted as usable delivery files or served in frontend markup.
* Tweak: Page Proof now reports larger-than-original WebP copies separately from usable WebP files.
* Tweak: Page Proof now diagnoses the most likely delivery cause, including disabled delivery settings, cache-hidden rewrites, background images, and missing WebP files.
* Tweak: Page Proof copy now says "usable WebP files" to avoid implying every existing WebP copy should be served.

= 1.14.18 =
* Tweak: Simplified Advanced server status and moved technical engine details behind a disclosure.
* Tweak: Formatted PHP memory and safe image size values for normal users.
* Tweak: Clarified Page Proof cache/delivery guidance before release upload.

= 1.14.17 =
* Tweak: WebP-only runs now distinguish safe skips from real errors in the live progress UI.
* Tweak: Restore can recreate a missing current media file when a matching Shrinkwell backup exists.
* Tweak: Improved restore and WebP skip messages so missing files, already-WebP sources, and not-worth-keeping WebP copies are clearer.

= 1.14.16 =
* Tweak: Page Proof now ignores favicons and meta/social icons when measuring visible page image delivery.
* Tweak: Added a rewrite preview to show whether Shrinkwell can add WebP picture markup before cache/CDN output.
* Tweak: Added cache header details to Page Proof reports for easier cache troubleshooting.

= 1.14.15 =
* Tweak: Improved backup restore notices so partial restore failures show how many images need attention.
* Tweak: Added inline Image SEO alt text and title editing from the SEO scan table.
* Tweak: Split the media optimization log into attention items first and completed items below, with clearer skipped-image labels.

= 1.14.12 =
* Tweak: Added a compact skipped-image summary that groups recent optimization issues by cause.
* Tweak: Improved media optimization queue clarity while keeping the detailed log available.

= 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.
