=== ANK Image Compress ===
Contributors: newsteach
Tags: image compression, image optimization, media, webp, png
Requires at least: 6.4
Tested up to: 7.1
Requires PHP: 8.0
Stable tag: 0.2.4
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Compress WordPress media library images through the ank-tinypng.ru API.

== Description ==

The plugin processes original JPEG, PNG and WebP images and their WordPress-generated sizes
through a server-side API. Compressed files retain their names, extensions, dimensions and URLs.
The plugin replaces a file only after validating the MIME type, dimensions, API response and
size reduction. Original bytes are saved outside the public site before replacement, and
administrators can restore them. An API key is required.
After replacement, the plugin versions image URLs in standard WordPress output so browsers
do not display stale copies from static cache.

The API accepts files up to 5 MB and 20 megapixels. The plugin uses the API's idempotent
billing_mode=bitrix protocol: repeating a request does not charge again, and a credit is used
only when the output is smaller. The plugin contains no 1C-Bitrix code.
Animated PNG is not supported by the current API. Embedded EXIF/IPTC metadata may be removed
from compressed output; the private original backup retains the original bytes and metadata.

The admin interface follows the WordPress locale. English is the source language. The package
includes Russian, German, French, Spanish, European and Brazilian Portuguese, Italian, Simplified Chinese, Japanese
and Arabic translations. Other locales use the English source text.

The plugin can process the entire media library in the background using WP-Cron. In the Media
Library list view, administrators can optimize one image or queue selected images. The settings
allow selection of generated image sizes and maximum upload dimensions for JPEG and WebP.
WordPress can convert new generated sizes to WebP or AVIF; AVIF sizes are encoded locally by
WordPress and are not sent to the ANK API. Existing files and original URLs are not converted.
Recorded compression savings are shown in the dashboard.

== External service and privacy ==

This plugin uses the ANK Image Lab service at https://ank-tinypng.ru/ to compress images.
After an administrator saves an API key and starts processing, the plugin sends image bytes,
the image file name, MIME type and a request identifier to /api-compress.php over HTTPS.
It sends the API key in an authorization header to check the account balance and process
images. A service-health request to /api-health.php does not include the API key.
The service returns the optimized image and processing and credit information. Images are
not sent merely by activating the plugin. API processing requires an account and available
credits; current terms and pricing are at https://ankpicpress.com/offer.html and
https://ankpicpress.com/api-pricing.html. The privacy policy is at
https://ankpicpress.com/privacy.html.

== Support ==

For help with this plugin, email modules@ankpicpress.com. Include your plugin version,
WordPress and PHP versions, the image format and size, the error message and the steps
to reproduce the problem. Do not send your API key or private source images.

== Installation ==

1. Install the ZIP via Plugins > Add New > Upload Plugin, or copy the folder to wp-content/plugins.
2. Activate ANK Image Compress.
3. Create an account at https://ankpicpress.com/ and get an API key in your account.
4. Open Settings > ANK Compress and save your API key.
5. Process images manually or enable automatic processing of new uploads through WP-Cron.

Accounts registered at ankpicpress.com and ank-tinypng.ru use the same credentials and API
balance. Sign in separately on each domain; browser sessions are domain-specific.
The media table supports title and file-name search and pages of 50 images, including restore
actions for older images.

PHP must be able to write to the parent directory of the WordPress installation to keep
private original backups. Processing stops without replacing files if it cannot do so.

== Changelog ==

= 0.2.4 =
* Prepared the WordPress.org release with the ank-image-compress slug and matching text domain.
* Updated the plugin support address in the settings page and readme, and clarified the external-service disclosure.


= 0.2.3 =
* Moved the plugin control page to Settings; existing Media Library compression actions remain available.
* Redirected old plugin-page links to the new Settings URL.

= 0.2.2 =
* Apply WebP/AVIF conversion only to newly generated sizes, keeping full attachments in their original format.

= 0.2.1 =
* Fixed Media Library script loading and background action button visibility.

= 0.2.0 =
* Added WP-Cron bulk processing for the whole media library, with pause and resume.
* Added Media Library list actions and selected-item background processing.
* Added recorded savings statistics and generated image size selection.
* Added upload dimension limits for JPEG and WebP and optional WordPress-generated WebP/AVIF sizes.
* Added a wp-config.php API key option for sites and multisite networks.

= 0.1.6 =
* Added complete admin-interface translations for German, French, Spanish, Portuguese,
  Italian, Simplified Chinese, Japanese and Arabic. English and Russian remain available.
  Image-processing and API logic are unchanged.

= 0.1.5 =
* Linked account registration and API-key management to ankpicpress.com.
* Added media search by title or file name and pagination with 50 images per page.

= 0.1.4 =
* Added English source strings and a bundled Russian translation for the admin interface,
  notices and local error messages. No image-processing or billing logic changed.

= 0.1.3 =
* Verified MIME and file extension; strengthened original-backup directory protection.

= 0.1.2 =
* Added API response checks and processing locks.

= 0.1.1 =
* Added image URL versioning after compression for browser cache.

= 0.1.0 =
* Initial build: manual and automatic processing, balance, encrypted key, private backups,
  idempotent billing and API response validation.
