=== CompressPrivacy - Local Image Compression to WebP & AVIF ===
Contributors: code7x
Tags: webp, avif, image optimization, media library, client-side
Requires at least: 6.8
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Unlimited, free image compression to WebP/AVIF — done entirely in the editor's browser before upload. No server load, no API keys, no limits.

== Description ==

CompressPrivacy Private Image Compression compresses images locally to WebP or AVIF entirely in your browser, using your own CPU — no server-side processing, no external API, no usage limit.

All compression happens on one dedicated screen: **Media → Bulk Optimizer**. Drop or select any number of images there, adjust the quality slider if you like, and each one is compressed and uploaded straight into the Media Library, with live per-file and total percentage-saved shown as it goes.

Uploading anywhere else in WordPress — the Media Library's own upload tab, a product image, a featured image, a gallery — is untouched by this plugin by design. The workflow is: compress what you need on the Bulk Optimizer page first, then select the already-compressed file from the Media Library wherever you actually need it.

= How it works =

1. On the Bulk Optimizer page, each selected image is drawn to an in-memory `<canvas>` and re-encoded via `canvas.toBlob()` to WebP, or AVIF where the browser supports it.
2. The compressed file is uploaded to a dedicated endpoint that inserts it into the Media Library the standard WordPress way (`wp_handle_upload()` + `wp_insert_attachment()`).
3. If compression fails, isn't smaller than the original, or the browser doesn't support the required APIs, the original file uploads unmodified — nothing is ever blocked.
4. Up to a few files compress and upload concurrently, so large batches don't process one at a time.

= Notes =

* Animated GIFs are skipped by default (canvas conversion would drop the animation); this is configurable.
* AVIF encoding support varies by browser; the plugin detects support automatically and falls back to WebP.
* Already-optimized formats (WebP, AVIF, SVG) are left untouched.

== Installation ==

1. Upload the `compressprivacy-private-image-compression` folder to `/wp-content/plugins/`.
2. Activate the plugin through the 'Plugins' menu in WordPress.
3. Go to Media → Bulk Optimizer to compress and upload images. Go to Media → Image Optimizer to set defaults (format, quality, max dimensions, batch size).

== Frequently Asked Questions ==

= Does this compress images automatically when I upload them normally? =
No. Compression only happens on the Media → Bulk Optimizer page. Compress what you need there, then select the compressed file from the Media Library wherever you actually want to use it.

= Does this replace or resize existing images already in my library? =
No. It only affects images you run through the Bulk Optimizer page.

= Does it need an API key or account? =
No. All processing happens locally in the browser using standard Canvas APIs.

= What if a browser doesn't support the Canvas/Blob APIs? =
The plugin detects this and uploads the original file unmodified — nothing is blocked.

== Changelog ==

= 1.0.0 =
* Initial public release of CompressPrivacy Private Image Compression.
