== Changelog == = 2.5.17 = Fix: Addressed a critical error after updating Breeze on sites that exclude pages containing dynamic shortcodes from the cache. = 2.5.16 = * Fix: 503 error caused by Breeze's settings file being saved by two requests at once (mostly Multisite, after updates). * Improvement: Settings file is now saved safely to prevent partial/corrupted writes. = 2.5.15 = * Security: Completed the fix for the previously identified low-severity content injection concern related to cache handling. * Improvement: Further improved cache handling to ensure consistent processing of requests with query-string variations. = 2.5.14 = * Fix: Addressed a low-severity content injection concern related to cache handling. * Fix: Patched a medium-severity XSS issue under specific conditions. In most cases, WordPress admin approval was required; default installations are not affected. * Fix: Resolved intermittent 404 errors on minified JS and CSS files after clearing the cache. * Fix: Fixed corrupted file downloads and images with Gravity Forms. * Improvement: Removed Google Analytics and Facebook Pixel from Host Files Locally, as hosting them locally does not improve performance and added unnecessary risk. Google Fonts remains available for local hosting, since it can genuinely improve load times. * Improvement: Reduced unnecessary database queries when preload has nothing to warm up. = 2.5.13 = * Fixed: Prevented crafted currency cookies from manipulating cache file handling and overwriting files. * Improved: Enhanced compatibility with WCML, CURCY/WMC, WOOCS, Aelia Currency Switcher, and Weglot. * Improved: Refined cache keys and ETags to better account for product variations. * Improved: Enhanced variation handling and cache invalidation across multisite environments. = 2.5.12 = * Fix: Resolved a dependency compatibility issue between Breeze's PSR Simple Cache v3 implementation and plugins loading earlier PSR Simple Cache versions, preventing fatal errors. * Fix: Reduced excessive cache purge requests triggered by product updates on large WooCommerce catalogs. = 2.5.11 = * Improvement: WooCommerce REST API product updates now clear only the related product/pages cache instead of the entire site cache. * Fix: Updating a custom post type now also refreshes its taxonomy archive pages to keep listings up to date. * Fix: Improved compatibility with PHP 8.4+ to prevent debug log notices. = 2.5.10 = * Improvement: Hardened cache directories with index.html and PHP execution blocks. * Enhancement: Restricted and validated remote downloads for locally hosted third-party assets and Gravatar images. = 2.5.9 = * Fix: Improved multisite compatibility during Breeze rollback. * Fix: Fixed duplicate Cloudflare purge requests during "Purge All Cache" and improved response consistency. = 2.5.8 = * New: Cache Warmup automatically rebuilds the home page and other important URLs after a full cache purge, so visitors always land on a cached, fast-loading page. = 2.5.7 = * Fix: Prevented prefetched links containing query strings from being rewritten with a trailing slash, avoiding incorrect URLs and unnecessary requests. = 2.5.6 = * Improvement: Enhanced comment section handling when HTML minification is enabled to improve compatibility and output reliability = 2.5.5 = * Fix: Cloudflare cache now reliably purges when scheduled posts are published, ensuring newly published content is immediately visible without waiting for the cache to expire. = 2.5.4 = * Fix: Improved handling of locally stored remote files using WordPress standard APIs. * Fix: Improved query string cache processing and variation handling. * Improved: Enhanced validation handling during settings import. * Improved: Enhanced cache handling for navigation menus when menus are created, updated, or deleted. * Added: Support for additional ignored query string parameters. = 2.5.3 = * Compatibility: Verified compatibility with WordPress 7.0. = 2.5.2 = * Improved: Refined multisite handling across settings, cache management, import/export, and reset actions for more consistent behavior and better scope control. * Improved: Enhanced cache handling and validation for more reliable content delivery and request processing. = 2.5.1 = * Fix: Images no longer fail to load when the "Lazy load" option is enabled. The bundled lazy-load library file was empty in 2.5.0 and has been restored. = 2.5.0 = * Fix: DNS Prefetch no longer chops off the first letter of domain names. * New: Smart Cache Protection automatically pauses caching when errors are detected, keeping your site responsive. * Improvement: Minification is paused while Smart Cache Protection is active to save resources. * Improvement: Minification now skips form submissions and other non-page requests, making your site lighter and faster. * Fix: Cache files are now written safely, preventing corruption under heavy traffic. * Improvement: Cache error logs now include the page URL and free disk space for easier troubleshooting. * New: Added 304 Not Modified support. Returning visitors get an instant response instead of re-downloading unchanged pages, saving bandwidth. * Improvement: Faster cache lookups using a shorter, quicker key for cached page filenames. = 2.4.7 = * Fix: Improved Varnish cache purge handling for better compatibility and reliability on HTTPS-enabled sites. = 2.4.6 = * Fix: Resolved high CPU usage when clearing minification cache on sites with many cached files. * Fix: Fixed incorrect cache clearing on multisite installations. * Fix: Fixed gzip cache files not being saved correctly. * Improvement: Varnish cache purge requests no longer slow down page loading. * Compatibility: Added a warning when using HTML minification with the WP Ghost plugin. = 2.4.5 = * Fix: Enhanced Gravatar handling by enforcing official sources only, ensuring only valid images are cached. = 2.4.4 = * Fix: Resolved an issue where logged-in user caching would break after plugin upgrades due to missing role cookies. = 2.4.3 = * Improvement: Fixed Cloudflare cache purge failing during WP-Cron when FPC_ENV environment variable is unavailable. * Compatibility: Added TranslatePress compatibility. Translated URL variants are now included when purging post cache. * New: Added breeze_collect_urls_for_cache_purge filter to modify the list of URLs before sending the purge request. * Fix: Fixed Varnish purge not using the default server address when no IP is configured. * Compatibility: Added compatibility with WooCommerce Multilingual & Multicurrency (WCML). * Improvement: Separate cache files are now generated per currency when WCML is active. * Improvement: Added currency-specific ETag headers to improve cache validation. * Compatibility: Improved compatibility with the FooEvents POS plugin. * Improvement: Handling of configuration file updates for better reliability and performance. * Improvement: Enhanced compatibility with WPML (WordPress Multilingual Plugin) to ensure smoother operation and better support for multilingual sites. * Fixed: Prevented JSON responses from being cached to ensure dynamic data is always returned correctly. * Improved: Enhanced Cloudflare cache purge handling with clearer response messages and improved feedback transparency. = 2.4.2 = * Fixed: Enhanced security measures to prevent unauthorized access to cached content. = 2.4.1 = * Created changelog.txt and moved the complete changelog history to it. = 2.4.0 = * Fixed: Cache clearing during bulk plugin updates from 3rd-party tools like WP-Manager. * Fixed: Corrected the post revisions count displayed under the Database options tab. * Fixed: Improved compatibility with Polylang to ensure cache is properly purged for respective language versions. * Fixed: Password-protected pages now prompt for a password instead of being served from cache. * Added: Ability to programmatically clear cache for a specific post. * Added: One-Click Optimization feature to quickly apply recommended cache and performance settings. * Improved: Cache handling updated so query strings no longer create separate cache files. * Improved: Enhanced security by restricting the “Clear Cache” option for specific posts from users with limited WordPress permissions. = 2.3.1 = * Fix: Varnish purge success notice now shows the correct message instead of an empty notice. = 2.3.0 = * Fix: URLs excluded from cache that contain hash (#) fragments are now correctly skipped during preload. * Fix: Modified regex to better fetch images through CSS classes. * Fix: Corrected warnings and errors to follow WordPress coding rules. * Fix: Resolved SyntaxError occurring when the native lazyload option is enabled. * Fix: Resolved a "Double-Compression" conflict on WordPress Multisite environments using Varnish. Breeze now detects the X-Varnish header and intelligently bypasses PHP-level Gzip to prevent malformed HTML streams. * Fix: Prevented redundant Cloudflare cache purge requests from triggering multiple times during a single post update. * Fix: Resolved an issue where the "Preload Links" feature caused WooCommerce cart items to be removed automatically upon hovering over the "Remove" button. * Fix: Improved screen detection logic for the Breeze back‑end CSS file, ensuring it loads correctly in all relevant admin contexts. * Fix: Removed the multisite sub‑site limit. The system previously enforced a default maximum of 100 sub‑sites. * Improved: Refined .htaccess rule syntax and underlying logic. In certain rare cases, the previous implementation could trigger a 500 server error. * Improved: Optimized performance for post updates and WooCommerce order processing by offloading Cloudflare cache purges to a background cron job. * Added: Control PHP Gzip compression programmatically with breeze_should_gzip_output filter * Added: Introduced breeze_cf_purge_type_on_post_update and breeze_cf_purge_type_on_order_update filters to programmatically toggle between background (cron) and synchronous (default) purging. * Added: Introduced the breeze_purge_post_cache_urls filter, allowing developers to programmatically add extra URLs to the purge queue. When using this filter, ensure all custom URLs are returned with a trailing slash (/). = 2.2.24 = * Improved: Added caching for database queries to enhance performance and reduce database load. * Fix: Resolved WordPress Coding Standards warnings and errors = 2.2.23 = * Fix: Plugin name now complies with WordPress plugin directory guidelines. * Fix: API keys with insufficient strength are now rejected, and a visual strength indicator is shown to guide users. * Fix: The cache‑clearing API now validates API keys only when provided via the 'Authorization: Bearer <•••key•••>' header. * Fix: Enhanced security measures applied to the clear‑cache API endpoint. = 2.2.22 = * Fix: Improved security by addressing a low-priority issue. = 2.2.21 = * Improved: Simplified CSS and JS cache file names with version-based identification for easier management. = 2.2.20 = * Improved: Added proper verification process for Varnish cache purge. * Improved: Updated CSS minification library and refined CSS cleaning rules for better optimization. * Added: Cloudflare cache now automatically purges when the "Clear Cache" action is triggered from post edit links. = 2.2.19 = * Fixed: Video lazy loading conflicts by ensuring compatibility with native lazy load and excluding WordPress [video] short codes from lazy loading. * Improved: File and folder permission handling logic – missing file/folder checks will no longer appear when the cache system is disabled. = 2.2.18 = * Improved: Security handling for JavaScript fetch and XHR requests to ensure safer data communication. * Added: Lazy Load library instance is now available on the window object for users with custom setups. * Improved: Purge Cron Job now also clears Cloudflare cache to ensure complete cache invalidation = 2.2.17 = * Enhancement: Added a Purge Progress notification to clearly inform users when a purge action is actively running. = 2.2.16 = * Improved: Increased expected API response timeout from 4 seconds to 30 seconds to better handle delayed responses. = 2.2.15 = * Improved: Updated handling and response messages for Cloudflare cache purge requests to provide clearer feedback and improve transparency. = 2.2.14 = * Fix: Resolved a critical Cross-Site Request Forgery (CSRF) vulnerability by implementing nonce validation. * Fix: Patched a Broken Access Control (BAC) vulnerability to ensure users cannot perform actions outside of their assigned capabilities. = 2.2.13 = * Fix: Addressed compatibility issues with Elementor and WooCommerce variable products. Also resolved issues caused by improper HTML entity decoding to ensure correct JavaScript content rendering and improved plugin stability. = 2.2.12 = * Fix: Resolved an issue where Lazy Load and Cross-Origin options caused HTML entities to remain encoded on the front-end. * Fix: Corrected a bug where the breeze_clear_remote_gravatar cron event was not removed upon Breeze plugin uninstallation. = 2.2.11 = * Fix: Cache was not purged automatically during Breeze plugin updates. * Add: Clearing Elementor cache will also clear Breeze cache. * Changed: Updated lazy load initialization and improved iframe handling to better align with browser-native lazy loading behavior. = 2.2.10 = * Added: native lazy loading support for iframe elements. * Added: Implemented lazy load support for video elements with multiple source tags. * Added: Introduced .webp format support for lazy loading images. * Changed: Switched from lazysizes to Vanilla LazyLoad, reducing the lazy load library's footprint. * Improved: Updated lazy load placeholders to use Base64-encoded inline images for improved performance. = 2.2.9 = * Fix: PHP error no longer occurs when a new comment is submitted. * Enhancement: Breeze cache now automatically clears after one or more plugin updates to ensure accurate content rendering. = 2.2.8 = * Fix: The cron event breeze_purge_cache will now be created when activating the Breeze plugin. * Fix: The cron event breeze_purge_cache will now be removed from single site and multi-site upon Breeze plugin deactivation. = 2.2.7 = * Add: Breeze plugin cache now automatically purges when updating global Header/Footer in Elementor. = 2.2.6 = * Fix: PHP warning fixed on comment status change. = 2.2.5 = * Improve: Improve CF and Varnish cache purge for custom permalinks /%category%/%postname%/. * Improve: Enhance Varnish cache validation to prevent multiple HTTP requests. * Optimize: Optimize the object cache flush system to purge only the relevant cache. = 2.2.4 = * Fix: The PHP warning related to autoload of the MobileDetect library has been fixed. = 2.2.3 = * Fix: Added support for custom headers array. * Fix: Homepage cache will now be automatically purged when updating a POST/CPT. = 2.2.2 = * Fix: Resolved PHP warnings for Host Files Locally feature. * Fix: The Breeze configuration file is now updated upon saving settings rather than being deleted and re-created. In multisite environments, the file will only be removed when switching from 'Custom Settings' to 'Inherit.' Additionally, uninstalling the plugin will delete both the configuration file and its containing folder. * Fix: Using Purge Internal Cache no longer results in multiple query parameters being appended to the current URL. * Fix: Updating a Page, Post, or Custom Post Type (CPT) will now clear the local cache specifically for the updated content, its associated taxonomies, and the relevant archive page, if applicable. = 2.2.1 = * Fix: Enhance the functionality to support multisite networks with over 100 subsites seamlessly. * Fix: Issues with the locally hosted font feature affecting font rendering have been identified and fixed. = 2.2.0 = * Fix: To prevent caching of Cloudflare firewall headers, use Cache-Control headers and Page Rules. * Fix: The issue with incorrect default options being saved for HTML optimization Tab settings has been fixed. * Improved: Enhanced cache purging messages to display the purge status for each module individually. * Improved: The Breeze error notice for file/folder permission issues and missing files/folders will no longer appear when the cache system is OFF. * Fix: Resolved an issue where links remained cached even after being added to the 'Never Cache URL(s)' list. = 2.1.20 = * Fix: Resolved an issue where the lazy load library was being loaded even when not enabled. This occurred in rare instances. * Fix: Enhanced Lazy-Load functionality to prevent conflicts with the "Elementor" and "EWWW Image Optimizer" plugins. * Fix: Updated the Heartbeat option range to include "Default," "30 to 120 seconds," and "Disable" settings. * Fix: Pages/Posts and Custom Post Types containing the Gutenberg block "Latest Comments" will now have their cache reset when a comment is added, deleted, or edited. The comment must be approved for the cache reset to occur. * Fix: Enhanced validation for URLs added to the “Never Cache URL(s)” option. = 2.1.19 = * Fix: The 'Never cache URL(s)' option is now compatible with URLs that contain non-ASCII characters. * Fix: Enhance the plugin update process by implementing new functionality to remove related cron jobs automatically. = 2.1.18 = * Fix: By setting WooCommerce pages as the homepage, all website pages were excluded from caching. This issue has now been successfully fixed for both the single site and multisite environments. = 2.1.17 = * Fix: Errors have been resolved during the activation, deactivation, updating, and deletion of plugins and themes from ManageWP. * Fix: The 'Host Google Fonts Locally' feature has been improved to prevent PHP warnings. * Fix: Improved multi-site sub-directory sub-site detection, ensuring the correct handling of blog_id for cache storage and cache purging. = 2.1.16 = * Fix: Refactor the handling of the woocommerce_after_product_object_save hook to ensure it is only executed once per request when products updated via the API. = 2.1.15 = * Fix: Addressed vulnerabilities related to Broken Access Control and Cross-Site Scripting (XSS) as discovered by Patchstack. = 2.1.14 = * Fix: The JavaScript warning related to missing href attributes for a link has been fixed. * Fix: The cache issue has been fixed when updating a post on any sub-blog in the Multisite environment. = 2.1.13 = * Fix: The cache will be purged automatically when a scheduled post's status changes to 'Published'. * Fix: Update the reference link in the Knowledge Base article under the 'Never Cache URL(s)' option in the ADVANCED OPTIONS tab. = 2.1.12 = * Add: Shop Managers can now use Purge All Cache option to clear website cache. * Fix: Excluded wp-login.php from preload feature that fixes the problem with unwanted user logouts. = 2.1.11 = * Fix: The issue with the incorrect previous versions list under the Breeze Rollback Version Option has been resolved. = 2.1.10 = * Fix: The warning issue has been resolved during the product update process via WP-CRON. * Fix: In some browsers, pushing the back button would take the user to the same URL. The issue has been resolved and the back button will work as expected. * Add: The ability to clear the cache for individual WordPress default post types and custom post types has been introduced, offering users enhanced control over their caching strategy. = 2.1.9 = * Fix: Resolved an issue where images already in the viewport were not loading when JavaScript lazy-load was enabled. = 2.1.8 = * Add: Users now have the ability to roll back the plugin to previous versions. * Fix: The file names previously generated by MD5 are now being generated by SHA512 * Fix: PHP Notice that was generated under specific conditions when using the "Never Cache URL(s)" option is no longer being displayed. * Fix: The compatibility issue between Breeze and WP-Lister, a plugin developed by WP Labs, has been resolved. * Fix: The conflict regarding the search query string between Breeze and FiboSearch - AJAX Search for WooCommerce has been resolved. * Fix: Viewport image issues when lazy-load is enabled has been resolved. * Fix: The issue with converting Hebrew characters in inline scripts to UTF-8 characters has been resolved. = 2.1.7 = * Fix: Enhancing WooCommerce Default Pages Exclusion Conditions from Cache. * Fix: Lazy-load placeholder changed to base64 encoding in order to fix incorrect characters from displaying. * Fix: Improving Compatibility of Delay All JS and Lazy Load Images Options with PHP 8.2 * Fix: The Purge Cache After option's updated value is now accurately reflected when importing data through the Command Line Interface (CLI). * Fix: In Multisite where a file permission warning is displayed upon plugin reactivation following deactivation has been addressed. = 2.1.6 = * Fix: Error when placing WooCommerce order on the checkout page. * Fix: Issue when query strings contain uppercase letters. = 2.1.5 = * Add: Implemented wildcard functionality in the Cache Query String. * Fix: Updated CSS minification library. * Fix: Successfully resolved the CSS calc function minification issue. * Fix: Change the file extension of the cache file from .php to .html. * Fix: Refactored the caching procedure for responses from any 'edit' type API requests. * Fix: Enhanced cache mechanism on WooCommerce orders workflow. * Fix: Enhanced the mechanism to automatically clear the archive cache whenever a term is updated. * Fix: Enhanced the CDN URLs pattern to accommodate additional characters for top-level domains. = 2.1.4 = * Fix: Addressed a vulnerability discovered by CovertSwarm. * Fix: Limited the thank-you message display to admin and super admin users after activating Breeze. * Fix: Resolved file permission warning issues in the multisite network, ensuring seamless operation when adding a new subsite. * Fix: Modified the Mobile Detect PHP Namespace in the third-party library to prevent conflicts with other plugins or themes, improving overall compatibility. * Fix: Ignored images with both JSON and JSON encryption to prevent adverse effects on other libraries handling those tags, ensuring smooth functionality. * Fix: Separated lazy load functionality for videos and iframes, providing increased control over website lazy loading behavior for a more optimized user experience. * Add: Implemented distinct functionality for