= 0.3.2 - 2026-07-31 =
* Performance - Keep automatic gap-report requests out of initial page navigation by waiting for visitor interaction or page exit.
* Fixed - Consume visible-page REST response bodies and reserve keepalive transport for the page-exit fallback.

= 0.3.1 - 2026-07-31 =
* Changed - Drain multiple qualified image jobs during each time-boxed WP-Cron invocation instead of processing only one.
* Security - Renew worker ownership and recheck upload capacity before every new job while preserving daily, retry, queue, and storage limits.

= 0.3.0 - 2026-07-30 =
* Added - Automatic visitor gap learning, enabled on activation, for image widths not adequately covered by current srcset candidates.
* Added - Bind each report to an HMAC-signed attachment or manageable local asset, then generate only that target in a locked WP-Cron worker.
* Privacy - Omit cookies from anonymous and Subscriber reports; use same-origin WordPress authentication for trusted Contributor-or-stronger reports without storing page URLs, IP addresses, user agents, referrers, or visitor identities.
* Security - Verify targets and coverage server-side; cap requests, probation entries, simultaneous jobs and targets, learned widths, retries, source bytes/pixels, and daily generation work.
* Changed - Let nonce-authenticated users with `edit_posts` confirm a valid gap in one report while keeping the configured multi-window threshold for Subscribers and anonymous visitors.
* Security - Derive the trusted confirmation path from server-side WordPress capability and nonce checks instead of client payload claims.
* Changed - Apply 30-day cleanup eligibility only to stale unconfirmed evidence and terminal failure records; active queue work and generated variants persist.
* Changed - Keep automatic learning independent from administrator visits, approval, promotion, and the legacy page cache guard.
* Added - Canonical cross-browser width buckets, per-image attainable-width and applicable-format checks, missed-window probation eviction, stale-file recovery, and durable width limits.
* Added - Coarse target-bound layout evidence and empirical `sizes` output for relative and responsive image slots.
* Fixed - Preserve author-owned `srcset`, `sizes`, art direction, and animation-sensitive source formats.
* Fixed - Prevent invalid or replay-only traffic from muting learning, remove replay-based queue priority, and reopen terminal failures automatically after a bounded cooldown.
* Security - Bound synchronous source conversion by bytes and pixels, reserve uploads filesystem space, and let fresh qualified demand replace unconfirmed queue entries under pressure.
* Changed - Store attachment WebP/AVIF output in collision-proof plugin-owned paths.
* Fixed - Debounce stale page markup cache purges after background or explicit regeneration completes.

= 0.2.0 - 2026-07-19 =
* Changed - Align plugin ownership metadata with WeSolvers.
* Security - Require administrator capability and REST nonce verification for every observation write.
* Fixed - Use SiteGround Speed Optimizer's documented public purge functions instead of an unregistered action name.
* Changed - Use the full plugin prefix for generated image-size names and observer data attributes.
* Changed - Keep front-end rendering read-only; missing local asset variants now require explicit regeneration.
* Changed - Preserve plugin data on uninstall unless an administrator explicitly opts into deletion.
* Fixed - Prevent duplicate sidecar encoding during forced attachment regeneration.
* Fixed - Serialize concurrent observation writes to prevent lost aggregate data.
* Fixed - Purge a page cache when its first observation creates a blocked readiness record.
* Security - Reject oversized or off-site observation payloads and omit query strings from stored page keys.
* Added - Support custom WordPress content and upload directory mappings for local assets.
* Added - PHPUnit, PHPCS, PHP compatibility, PHPStan, version-sync, CI, and package quality gates.

= 0.1.8 - 2026-07-12 =
* Changed - Use WordPress's template enhancement output buffer for full-page asset processing.
* Changed - Bound public observation rate-limit storage and retained page observations.

= 0.1.7 =
* Fixed - Skip alternate format sidecars for attachment sub-sizes that do not preserve the original aspect ratio.

= 0.1.6 =
* Fixed - Skip alpha-flattening alternate formats for transparent source images.

= 0.1.5 =
* Fixed - Treat asset srcsets capped at the original source width as cache-ready.

= 0.1.4 =
* Fixed - Match generated asset variant URLs to the public site scheme to avoid mixed-content requests.

= 0.1.3 =
* Added - Support static GIF assets while skipping animated GIFs to avoid animation loss.

= 0.1.2 =
* Changed - Observe small images by default so theme asset covers, logos, and icons can be captured.

= 0.1.1 =
* Added - Generate empirical responsive variants for local theme and plugin asset images.

= 0.1.0 =
* Added - Initial release.
