=== LiteImage ===
Contributors: algryshko
Tags: images, optimization, thumbnails, webp, responsive
Requires at least: 5.8
Tested up to: 6.8
Requires PHP: 8.0
Stable tag: 3.3.3
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Optimizes images with dynamic thumbnails, WebP support, and accessibility for faster, responsive WordPress sites.

== Description ==

LiteImage is a lightweight, developer-friendly WordPress plugin that optimizes images using dynamic thumbnail generation, WebP support, and accessibility enhancements. With a fully refactored object-oriented architecture, LiteImage gives full control over responsive image rendering and disk space management.

== Features ==

* Dynamic Thumbnails: Generate only the sizes you need on demand using the `liteimage()` function
* WebP Support: Convert images to WebP automatically using Intervention Image library
* Responsive Images: Serve the right image for the right device with media queries
* Mobile-Specific Images: Serve a dedicated mobile MOBILE-specific image for viewports under 768px
* Accessibility: Add alt, aria-label, and other HTML attributes
* Clean Thumbnails: Delete LiteImage or WordPress-generated thumbnails from Toolsower
* Debug Logging: Track plugin activity when logging is enabled
* OOP Architecture: Fully class-based core with backward compatibility

== Installation ==

1. Upload the `liteimage` folder to `/wp-content/plugins/`
2. Activate the plugin in WordPress admin
3. Run `composer install` in the plugin directory
4. Go to Tools > LiteImage Settings to configure

== Frequently Asked Questions ==

= Does LiteImage support WebP? =

Yes, if Intervention Image is installed and GD or Imagick supports WebP.

= Can I use different images for mobile? =

Yes. Use the third parameter in `liteimage()` function for mobile-specific image.

= How do I clear thumbnails? =

Go to Tools > LiteImage Settings and use the available cleanup buttons.

== Screenshots ==

1. LiteImage Settings page
2. Thumbnail cleanup options
3. Media Library showing dynamic sizes

== Changelog ==

= 3.3.3 =
* Added: Settings for output quality (60–100): WebP when WebP thumbnails are enabled; separate JPEG/lossy and PNG compression when serving original formats.
* Added: Admin UI toggles quality fields based on the “Generate WebP” option; PNG uses zlib/Imagick compression strength (lossless pixels).
* Fixed: PNG encoding compatible with PHP 8+ (removed invalid extra argument to Intervention Image PNG encoder).
* Fixed: Smart compression reference PNG creation uses a proper image clone.

= 3.3.2 =
* Added: Support for conversion at original size — when `thumb` is `'full'` or `[0, 0]`, images are converted (WebP and original format) without resizing.
* Added: In `liteimage_downsize()`, size `[0, 0]` now returns the original image dimensions.
* Added: In `get_thumb_size()`, support for `'full'` and `[0, 0]` with correct `size_name` in format `liteimage-{width}x{height}`.
* Fixed: Safe reading of `width`/`height` from attachment metadata in `liteimage_downsize()` when keys are missing.

= 3.3.1 =
* Fixed: Thumbnail filename conflicts when multiple images share the same filename. Added attachment ID to thumbnail filenames to ensure uniqueness.
* Fixed: Format changed from `{filename}-{size_name}.{ext}` to `{filename}-{attachment_id}-{size_name}.{ext}` for all thumbnail variants (WebP, original format, and retina @2x versions).

= 3.3.0 =
* Added: Gutenberg block **LiteImage Image** with full responsive controls for desktop/mobile sources, breakpoints, and HTML attributes.
* Added: PHPUnit smoke test covering block attribute sanitization.
* Added: Automatic 2x retina variants for all generated LiteImage sizes, including Gutenberg block output.
* Changed: Refreshed plugin icon to match the new brand palette.
* Changed: Updated documentation with block usage instructions and retina guidance.

= 3.2.1 =
* Fixed: Unescaped output in admin tab navigation (WordPress.org Plugin Check compliance)
* Fixed: Removed deprecated load_plugin_textdomain() call (WordPress auto-loads translations since 4.6)
* Fixed: Updated readme.txt headers to match plugin requirements (Tested up to: 6.8, Requires at least: 5.8)
* Fixed: Added phpcs:ignore comments for necessary direct database queries in transient cleanup
* Fixed: WordPress.org Plugin Check compliance - all errors and warnings resolved
* Improved: Code standards compliance for WordPress.org submission

= 3.2.0 =
* Complete OOP refactoring with PHP namespaces
* PSR-4 autoloading implementation
* Performance improvements (up to 50% faster)
* Security enhancements (rate limiting, validation)
* Moved logs to uploads directory
* Proper JavaScript enqueuing
* Comprehensive documentation

= 3.1.0 =
* Refactored to OOP architecture
* Improved maintainability
* Added Intervention Image support

= 2.1.0 =
* Added buttons to clear thumbnails
* Improved cleanup logic

= 2.0.0 =
* Added WebP support status display
* Codebase refactor

= 1.0.0 =
* Initial release

== Upgrade Notice ==

= 3.3.3 =
New quality controls in Tools → LiteImage Settings. Existing thumbnails are unchanged until you regenerate or clear them.

= 3.2.0 =
Complete rewrite with modern architecture. All existing uses of `liteimage()` continue to work. Requires PHP 8.1+ and Intervention Image 3.x.

== Arc Credits ==

Developed by Oleksandr Gryshko.
Powered by Intervention Image.

