=== Focalio ===
Contributors: bigfatinternet
Tags: images, image optimization, webp, lazy loading, focal point
Requires at least: 6.2
Tested up to: 7.1
Requires PHP: 8.3
Stable tag: 1.0.34
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

On-demand image cropping, focal-point picker, LQIP and WebP/AVIF for WordPress uploads. Powered by League Glide.

== Description ==

Focalio serves cropped, format-converted image variants on demand via signed URLs — no more pre-generated intermediate sizes filling up your uploads directory. Editors pick a focal point per image so crops always keep the subject in frame.

Features:

* On-demand image cropping via signed URLs
* WebP or AVIF output for all uploads
* Focal-point picker in the media library and the block editor
* Non-destructive rotate and flip, applied to every rendition
* LQIP (Low Quality Image Placeholder) support
* Settings for image quality, output format and maximum width
* Presets, as many as you need: edited on the settings page, each with its own quality and LQIP, or registered in code with glide_register_preset()
* Attention / entropy / center crop fallback for images without a manual focal point
* Cached images are served before the rest of WordPress loads
* Presets also appear as image sizes, so the media library, Advanced Custom Fields, widgets and page builders can pick them by name
* Optional: skip writing intermediate image sizes to disk on upload
* Turn off the WordPress image sizes your site does not use
* A Cache tab: how big the image cache is, and a button to clear it. A weekly cleanup drops renders that are no longer used
* WP-CLI commands for the cache and the crop fallback
* WooCommerce product images go through Focalio too, and its cropped sizes follow the focal point
* Multisite: activate it for the whole network; deleting it cleans up every site

Focalio Pro is a separate add-on for agencies and editorial teams, not included in this plugin. It adds:

* Control: focal-point zoom, a straighten ruler that levels a tilted photo by up to 45°, a live crop preview, a hand-made crop per ratio where the focal point is not enough, and a watermark
* Performance: AVIF with a WebP fallback in a picture element, and a cache warm-up that renders images before the first visitor asks for them
* Workflow: face detection that puts the focal point on the people in a photo, bulk actions in the media library, and tools to manage every site of a multisite network
* WooCommerce: the shop grid of a block theme cut on the focal point at the store's ratio, and one ratio for every photo on a product page

== Installation ==

1. Upload the plugin files to `/wp-content/plugins/focalio/`, or install via the WordPress plugin repository.
2. Activate the plugin through the Plugins menu in WordPress.
3. Configure via Focalio in the admin menu.

== Frequently Asked Questions ==

= Does Focalio change my original uploads? =

No. Your uploads stay as they are. Every crop and format is rendered from them when it is first asked for, and kept in the `.glide-cache` folder in your uploads folder. That folder can be deleted at any time: what is gone is rendered again.

= Where do I set the focal point? =

In the media library, in the image's details, and in the block editor, on an image block. Without one, the crop fallback on the Settings tab decides: attention, entropy or the center.

= Which WP-CLI commands are there? =

* `wp focalio cache stats`: what is in the image cache
* `wp focalio cache cleanup`: the weekly cleanup, now (add `--dry-run` to only count)
* `wp focalio cache clear`: delete every rendered image
* `wp focalio guess`: work out the automatic focal point of every image ahead of time (add `--force` to redo them)

= Does it work with WooCommerce? =

Yes. Product images are served through Focalio like every other image, and WooCommerce's cropped sizes, such as the shop thumbnails of a classic theme and the gallery thumbnails, follow the focal point.

= Does it work on multisite? =

Yes. Activate it per site or for the whole network. Each site keeps its own settings and image cache, and deleting Focalio cleans up every site.

== External services ==

Focalio includes the Freemius SDK (https://freemius.com), which handles the opt-in to share usage data and the licenses of the Focalio Pro add-on. Nothing is sent to Freemius unless you opt in; images are always processed on your own server.

What is sent, and when:

* When you opt in (on the screen shown after activation): your WordPress user's first and last name and email address; the site's homepage URL and title, WordPress and PHP versions and site language; the Focalio and SDK versions, and whether Focalio is active. The list of plugins and themes (names, slugs, versions, active or not) only when you leave that option on.
* After opting in: changes to that information, and when Focalio is activated, deactivated or uninstalled. If you fill in the optional form on deactivation, the reason you give.
* You can opt out at any time with the "Opt Out" link under Focalio on the Plugins screen. Focalio works the same either way.

Freemius terms of service: https://freemius.com/terms/
Freemius privacy policy: https://freemius.com/privacy/

== Changelog ==

= 1.0.34 =
* Focalio has a menu of its own in the admin, with its own icon, instead of a page under Settings.
* A Cache tab: how big the image cache is, and the button to clear it, which used to be on the Info tab.
* Multisite: activated for the whole network, the opt-in is asked once for the network. Deleting Focalio cleans up every site; deactivating it for the network stops every site's weekly cleanup.
* For developers: the `focalio/cache_tab_after` and `focalio/wordpress_sizes_after` hooks add a section to the Cache and Presets tabs.

= 1.0.33 =
* First release on WordPress.org.
