= 4.2.3 = * added: skip resizing for images with noresize in the filename * added: notice about plugins that remove query strings when ExactDN is active * changed: cache busting for ExactDN uses theme directory modified time with fallback to EWWW IO version * fixed: exactdn test verification attempts to access WP_Error as an array = 4.2.2 = * added: view pages with ExactDN or the entire plugin disabled via GET paramaters: ewwwio_disable and exactdn_disable * changed: moved to v2 quota endpoint for API * changed: S3 uploads no longer deferred until after optimization by default, define EWWW_IMAGE_OPTIMIZER_DEFER_S3 as true to override * changed: image editor extensions can be disabled separately from media library optimization via EWWW_IMAGE_OPTIMIZER_DISABLE_EDITOR * changed: use exactdn url instead of standard API url for verification simulation and fallback * fixed: async test outputs unescaped html on settings page when debugging enabled * fixed: debugging uses extra memory when dumping output to file * fixed: json_encode dies silently when passing non-utf8 data, results in AJAX/bulk errors * fixed: disabled auto-optimization bypassed for resizes when max dimensions are set * fixed: NextGEN support disabled for version 3 * fixed: progressbar color does not match admin theme for NextGEN/Nextcellent * fixed: optimization details overlay styling missing for NextGEN with some locales * fixed: FlAGallery batch optimization from Manage Galleries/Images broken * fixed: undefined variable notices for resize detection and forced re-optimization * updated: PEL library for maintaining metadata during JPG auto-rotation = 4.2.1 = * fixed: EXACTDN_LOCAL_DOMAIN does not work with auto-verification * fixed: uncaught error during upgrade when 'SHOW FULL COLUMNS' fails * fixed: async simulation gets 403 error = 4.2.0 = * added: disable ExactDN attachment ID queries if they take too long * added: ExactDN compatibility with a3 Lazy Load * added: ability to re-test async/background mode if it gets disabled * changed: better compatibility between Autoptimize and ExactDN * changed: .webp files removed when restoring original from API * changed: Force re-optimize checkbox persists up to an hour if bulk optimizer is interrupted * fixed: CSS, JS, and other resources could be skipped by ExactDN in certain circumstances * fixed: Jupiter theme captcha incompatible with ExactDN * fixed: prevent calls to php_uname when it is disabled * fixed: MacOS X installer for PNGOUT * fixed: prevent notices due to empty output from exec() * fixed: ExactDN fails to crop when image_downsize() is called with explicit dimensions * fixed: ExactDN breaks image resizing with Themify themes * fixed: multi-site settings throws error during submission when ExactDN is active * fixed: single-site override option displayed when plugin activated per-site * removed: PHP 5.3 no longer supported = 4.1.3 = * fixed: infinite loop when removing invalid API key * fixed: img elements with incorrect attachment ID being replaced with wrong image src * fixed: ExactDN CSS and JS parsing incompatible with Autoptimize = 4.1.2 = * added: detect WP Fastest Cache WebP rewrite rules * added: notice if WebP conversion enabled but mod_rewrite or mod_headers is missing * added: better debugging when background/async mode is blocked * changed: CSS/JS files are filtered pre-emptively by ExactDN to avoid quirks with emoji scripts * fixed: warning during wp_cron for undefined constant * fixed: invalid or expired keys would still attempt optimization * fixed: WebP files are orphaned when using Media File Renamer * deprecated: PHP 5.3 will no longer be supported in 4.2 * deprecated: PHP 5.4 support will be removed by July 2018 * deprecated: PHP 5.5 support will be removed by October 2018 = 4.1.1 = * added: reduce ExactDN load time by suppressing db queries with EXACTDN_PREVENT_DB_QUERIES * added: $fullsize indicator added to pre/post optimization hooks, props Schweinepriester * fixed: missing www preventing rewrites for ExactDN * fixed: Alt WebP compatibility with Tatsu page builder * fixed: relative path support not working properly for Pantheon users * fixed: missing directories prevent optimization of S3 files = 4.1.0 = * SECURITY: gifsicle and optipng have been updated to address security flaws * added: full compatibility with Image Watermark plugin * added: dummy images for Essential Grid and Layer Slider whitelisted with ExactDN * added: compatibility with Visual Composer and Essential Grid async/AJAX loaders * added: compatibility with Media File Renamer * changed: ExactDN rewrites all wp-content and wp-includes urls by default * changed: mime-type detection function does not rely on fileinfo extension anymore * changed: Solaris/SunOS binary builds use OpenIndiana 2017.10, let me know if they break * fixed: wp-emoji script not rewritten by EXACTDN_ALL_THE_THINGS * fixed: resize detection script throws error when admin bar is hidden * fixed: warnings when WP Offload S3 set to delete local files, props ianmjones * updated: pngquant version 2.11.7 = 4.0.6 = * changed: dummy images have no args appended with exactdn except for ssl flag * fixed: resize_detection.js being combined with other scripts by Autoptimize * fixed: retina optimization not deferred in async mode * fixed: PDF files could trigger license exceeded message * fixed: binary detection not fully functional with MacOS and PHP 7.2 * fixed: compatibility with Regenerate Thumbnails version 3 = 4.0.5 = * added: enable lossy compression with ExactDN: https://docs.ewww.io/article/47-getting-more-from-exactdn * added: CSS/JS minification with ExactDN, see https://docs.ewww.io/article/47-getting-more-from-exactdn * added: disable WebP for specific files with ewww_image_optimizer_bypass_webp filter * added: ExactDN obeys focus point from Theia Smart Thumbnails plugin * added: admin-ajax requests for eddvbugm loader work with ExactDN * fixed: multisite settings would not save in certain circumstances * fixed: compression levels reset for API users on multisite after toggling single-site override on and off * fixed: media library items with non-local images rewritten incorrectly by ExactDN * fixed: restoring images throws errors on PHP 7.1 * fixed: has_cap with invalid argument not recognizing utf8-mb4 v5.2 = 4.0.4 = * fixed: ExactDN domain validation failing on length check for some domains * updated: PEL for better EXIF preservation = 4.0.3 = * added: support for additional ExactDN root domains * added: button to remove WebP rewrite rules * added: informational notice on thumbnail rebuild pages of how the plugins interact * changed: WebP rewrite rules removed automatically when ExactDN is enabled, use Alt WebP instead * changed: ExactDN now removes metadata if option is enabled * fixed: multisite settings set to defaults when single-site resize settings are submitted = 4.0.2 = * fixed: WooCommerce images still not working with Alt WebP in all cases * fixed: ob_clean() breaks AJAX actions when there is no buffer to clean * fixed: notice on NextCellent gallery management pages * fixed: missing JS for AJAX actions in NextCellent = 4.0.1 = * fixed: ExactDN option not disabled when verification fails too many times * fixed: theme scanner sometimes skipped images on PHP 5.3 * fixed: invalid (float) width parameters for srcset attributes * fixed: Jetpack lightbox and carousel were not fully working with Alt WebP * fixed: WooCommerce lightbox and gallery not working with Alt WebP * fixed: incorrect message about scanning scope when selecting images from media library for bulk optimization * security: fixed wildcard LIKE queries to allow proper escaping = 4.0.0 = * added: ExactDN with CDN and automatic image resizing * added: image resize detection for admin users * changed: WP core, theme, and plugin images are excluded from lossy optimization * fixed: files fetched from S3 not detected by PHP in some cases * fixed: option override conflict preventing webp conversion * fixed: Alt WebP breaks Draw Attention image maps * fixed: customized WP_Background_Process class conflicts with other plugins using the same class * fixed: image deletion could cause deletion of images on source site after cloning database * fixed: WebP .htaccess rules using REQUEST_FILENAME instead of REQUEST_URI does not work on some servers * fixed: per-site resize settings hidden when API is active network-wide * fixed: network-wide settings not saving properly * fixed: notice of undefined index with some configurations of the Shield security plugin * deprecated: PHP 5.3 support will be removed by March 2018 = 3.6.1 = * fixed: bulk optimizer fails to initialize if the bulk_attachments array is set to an empty string * fixed: misplaced parenthesis breaks option overrides = 3.6.0 = In an effort to simplify the settings page and make room for new features, many settings have been "hidden" and/or rearranged. It is my hope that this will make it easier for new users to get going with EWWW IO. You can find more information about overriding options in the [Documentation](https://docs.ewww.io) * added: ability to override any boolean/integer options by defining constant of the same name * added: debug information included automatically with help beacon requests when debugging is enabled * added: use wp_raise_memory_limit (WP 4.6+) to avoid memory issues * added: use wp_is_ini_value_changeable (WP 4.6+) to avoid errors when raising max_execution_time * added: notice to use cloud version on Kinsta sites * changed: Better Lossless and Maximum Lossless have been combined for PNG images with more intelligent usage of advpng on the API * changed: resize settings moved to new tab * changed: various options have been removed from the settings page, but are still available via constants, see removals * changed: bulk optimizer will auto-adjust settings if an image fails to optimize * changed: bulk scanner will go into fall-back mode if the normal mode is too slow or if the image table takes longer than 5 seconds to load * changed: images previously compressed by TinyPNG/JPG will be skipped during bulk optimization * fixed: Optipng not working properly on Windows servers. * fixed: notice on settings and bulk pages when debug mode is disabled * removed: ewww_image_optimizer_delay (Bulk Delay), can be selected on the bulk page instead * removed: ewww_image_optimizer_optipng_level (OptiPNG level) option * removed: ewww_image_optimizer_pngout_level (PNGOUT level) option * removed: ewww_image_optimizer_disable_pngout (Disable PNGOUT) option * removed: ewww_image_optimizer_skip_size (Skip Small Images) option * removed: ewww_image_optimizer_skip_png_size (Skip Large PNG Images) option * removed: ewww_image_optimizer_lossy_skip_full (Exclude full-size images from lossy optimization) option * removed: ewww_image_optimizer_metadata_skip_full (Exclude full-size images from metadata removal) option * removed: ewww_image_optimizer_skip_bundle (Use System Paths) option = 3.5.1 = * added: optional help beacons on bulk and settings pages * added: disable deferring of WP Offload S3 uploads with EWWW_IMAGE_OPTIMIZER_NO_DEFER_S3 * added: override use of wp_add_inline_script with non-standard jQuery by defining EWWW_IMAGE_OPTIMIZER_WEBP_INLINE_FALLBACK * fixed: javascript for bulk optimizers in NextGEN, NextCellent and FlaGallery = 3.5.0 = * added: compatibility with S3 Uploads by Human Made * added: MediaPress uploads fully optimized on upload * changed: WebP .htaccess rewrite rule verifier more flexible * changed: WebP .htaccess rewrite rules allow appending type=original to access non-WebP image * changed: if an image is too small for resizing, but the dimensions in the metadata are incorrect, it will attempt to update them * fixed: fatal error if image metadata cannot be read by PEL * fixed: WebP .htaccess rewrite rules work better on LiteSpeed * fixed: WP Symposium integration using old options, scanner now includes avatars folder by default = 3.4.1 = * added: move the Alt WebP script to an external resource by defining EWWW_IMAGE_OPTIMIZER_WEBP_EXTERNAL_SCRIPT * changed: API keys are partially revealed, for easier verification * changed: API key no longer uses password field to avoid problems with auto-fill * changed: API key activation raises JPG and PNG to lossy and enables backups * fixed: bulk delay setting not carried over to bulk optimizer * fixed: WP Offload S3 uploads images prior to background optimization, resulting in a second upload afterwards * fixed: single-site settings override not saving in certain cases on multisite * fixed: AMP pages are broken when Alt WebP is enabled with old versions of libxml (less than 2.8.0) * removed: unnecessary call to WP Offload S3 update function after optimization = 3.4.0 = * added: optional usage tracking * added: close sessions even earlier in background/async handling to prevent lock-ups * added: multisite option to network activate and allow individual site configuration * changed: disabling resizes must be done on individual sites even when network activated * changed: PNG files with empty alpha channels can be converted to JPG without setting a background/fill color * fixed: webp migration script sending wrong nonce variable * fixed: wp-cli help text was not being parsed properly * updated: bundled cwebp to version 0.6.0 * updated: bundled pngquant to verision 2.9.1 (2.8.1 for Windows) * deprecated: cwebp will not be updated for Mac OS X 10.9 past 0.5.1 * obsoleted: FreeBSD 9 and CentOS 5 are "End of Life" and will no longer be tested = 3.3.1 = * added: alt webp supports Jetpack Carousel for image galleries * added: hard crop images during resizing using ewww_image_optimizer_crop_image filter * changed: plugin status on settings revamped to rely less on javascript * fixed: regression with scheduled optimizer scanning causing timeouts * fixed: alt webp compatibility with Divi Builder in Visual mode = 3.3.0 = * added: optional image backups for API users, restore images from bulk optimize, or media library list view * added: relative file location support, automatically enabled for Pantheon, use EWWW_IMAGE_OPTIMIZER_RELATIVE and EWWW_IMAGE_OPTIMIZER_RELATIVE_FOLDER to enable elsewhere * added: filename as second parameter to ewww_image_optimizer_resize_dimensions filter * added: prevent accidental regeneration of an image resize with the built-in WP_Image_Editor, disable by defining EWWWIO_EDITOR_OVERWRITE * changed: JPG quality setting applies to WebP generation also * changed: retina images can be processed in background * changed: prevent sleep() and print_r() from running when disabled * changed: entire ewwwio_images table no longer loaded into memory when running bulk operation on small batches of images, or when the table is too large * changed: when resize optimization is disabled, Include Media Folders is disabled to prevent optimization of disabled sizes * changed: Swedish translation moved to wp.org * changed: permissions check uses is_readable() and is_executable() instead of requiring 755 permissions * changed: requires at least PHP 5.3 * fixed: WP_Image_Editor integration was not disabled when using Regenerate Thumbs plugin, resulting in disabled resizes being ignored, and optimization not being backgrounded properly * fixed: Media Library Plus actions triggered optimization too early, preventing background optimization. * fixed: settings page would not load on very large multisite installs (1,000+ blogs) because of too many queries for total savings achieved * fixed: background optimization not working properly on multisite installs * fixed: imported attachments queued multiple times when plugins like Facebook Events Importer use media_sideload_image() * fixed: notice when clearing queues * fixed: when a background process is running, queues repopulate even after clearing all items * fixed: WP-CLI not dropping to low memory mode in constrained environments, causing incomplete scans * fixed: nextgen not showing optimization stats * fixed: proper i18n for strings that could contain singular and plural numbers * fixed: bulk scanner could skip images that need optimization when in 'low memory' mode * fixed: all JPG images down-sampled when only one of max height or max width is set * fixed: permissions error on tool folder cause media grid to appear empty * fixed: fatal error when both EWWW I.O. plugins are activated * fixed: edited images show active and backup compression results in media library = 3.2.7 = * added: function to remove duplicate records from the ewwwio table when doing a bulk scan or re-optimizing an image * changed: zero-byte files skipped during bulk scan instead of during optimization * changed: exec() check rewritten, please report any errors right away * fixed: plugin status shows All Clear even though exec disabled and warning is displayed = 3.2.6 = * changed: time elapsed test now runs every 10 attachments * fixed: time elapsed test during bulk scan was not running every X number of images * fixed: scan was not returning results directly after detecting a broken attachment * fixed: maximum number of rows for ewwwio_images was not high enough, bumped to 4 billion * fixed: db migration function was not linking records to attachments properly = 3.2.5 = * fixed: converting PNG to JPG with GD did not properly convert resizes * fixed: broken attachment metadata could halt the bulk scanner * fixed: background optimization running when sleep is disabled = 3.2.4 = * changed: when license has been exceeded, visiting the settings page flushes the license cache * fixed: warnings for illegal string offsets * fixed: regression with the dreaded duplicate key name * fixed: scheduled optimization could run during bulk optimization, causing unexpected results = 3.2.3 = * added: image linker for media images optimized using scheduled optimizer or the old Scan and Optimize * added: low memory mode for bulk scanner with notice to user * added: ability to manually configure how much memory is available using EWWW_MEMORY_LIMIT constant * added: variable query counts depending on available memory * added: ability to view and remove debug.log from settings page * added: ability to manually disable background optimization using EWWW_DISABLE_ASYNC constant * changed: check every 100 images during scan to avoid timeouts and memory errors * changed: additional folder scanner can stop & resume mid-folder * fixed: bulk scanner updates timestamps when it should not * fixed: special characters are mangled during database insert on some systems * fixed: pending images that were already optimized were not cleared from queue * fixed: images with invalid updated dates in database corrected * fixed: images that should be excluded from optimization were still queued even though they would not be optimized * fixed: results column was too short, causing bulk optimization to get stuck on an image that was previously optimized * fixed: if two different attachments reference the same image, duplicate records could be inserted into database during media scan = 3.2.2 = * added: estimated time remaining on bulk optimize * added: 'ewww_image_optimizer_image_resized' hook added right after resizing, before original is overwritten * changed: image resizing is performed before any thumbnails are generated for reduced resource usage * fixed: compatibility with Azure storage plugin * fixed: bulk optimization not playing nice with WP Offload S3 * fixed: optimization results for resized original not displayed when using Imsanity * fixed: bulk optimization not working for utf-8 filenames - credit to devsporadic on github * fixed: retina paths not tested correctly in some odd cases * notice: FreeBSD 9 is EOL, version 10.3 is now the currently supported version * notice: RHEL 5 and CentOS 5 will be EOL at the end of March, at that point version 6 will be the lowest supported version * removed: generating full-size retina image automatically when resizing images and WP Retina 2x Pro detected = 3.2.1 = * fixed: really old versions of PHP (less than 5.5) cannot cope with using empty() on a function return value * fixed: queue of images not reset when reloading bulk page = 3.2.0 = * added: option to ignore folders when optimizing * added: ability to disable optimization or creation for any or all previews of PDF files in WordPress 4.7 * added: optimization results detail for all resizes of an image in media library list view * added: automatic metadata rebuilding for broken image attachments in media library during bulk scan * changed: bulk optimizers for media library and everything else have been merged * changed: bulk optimization processes images in batches for fewer AJAX requests to your server * changed: tool locations saved for the duration of a request to improve optimization speed * changed: optimization results no longer stored in attachment metadata * changed: populating list of optimized images during scan uses less memory * changed: obsolete options removed from database * changed: if scan is interrupted, it will automatically retry * changed: excessive re-optimization warning ignores theme and plugin images * changed: if full-size image is converted, all resizes, custom sizes, and retina images will be converted * changed: conversion will not inject extra numbers if possible * changed: image results message generated on demand to avoid stale results * removed: ability to use the ImageMagick 'convert' binary, use Imagick extension for PHP instead * removed: unoptimized images page, bulk scanner is now able to accomplish the job more accurately * fixed: parallel mode prevents successful conversion * fixed: removing API key on multisite did not fallback to local mode properly * fixed: pngout enabled after API key removed * fixed: image paths with special characters stored incorrectly in database * fixed: parallel optimization for retina and custom sizes was missing parameters * fixed: bulk optimizing a single image was broken, but who does that anyway? * fixed: notice when LIBXML_VERSION is undefined and alt webp is enabled * fixed: invalid default value for timestamp in db records * fixed: one-click optimization returns no error when running out of API credits * fixed: background mode was not checked properly in nextgen and flagallery functions * fixed: incorrect mimetype set after image conversion for PNG2JPG * fixed: using getimagesize on pdf files = 3.1.3 = * added: settings which require validation display appropriate errors when validation fails * added: filter to make sure test images in the ewww-image-optimizer folder never get optimized * fixed: optimizing "other" images with wp-cli was broken = 3.1.2 = * added: ability to disable background optimization via ewww_image_optimizer_background_optimization filter * changed: scan and optimize rewritten to store images in batches, with auto-retry for very large sites * changed: folders to optimize validator will attempt to fix relative paths and urls * changed: conversion operations are not run in background, override with ewww_image_optimizer_defer_conversion filter * changed: reverted Alt WebP support for lazy load, as it does not work consistently * changed: cache query results for excessive reoptimization up to an hour * fixed: ensure disabled resizes are not optimized during Enable Media Replace uploader * fixed: images were not optimized after editing with Post Thumbnail Editor * fixed: bulk operation handles attachment ID as a string instead of an integer * fixed: bulk optimizing a single image displays no results * fixed: bulk optimizing images with corrupted metadata does not result in a repair operation * fixed: image scanner skips optimized metaslider images even if they have changed * fixed: scan and optimize includes file types that are disabled = 3.1.1 = * fixed: exec() notice surpressed when it should not be = 3.1.0 = * added: warning when excessive re-optimizations have been detected * added: Alt WebP supports lazy loading in Hueman theme * added: Alt WebP supports Lazy Load plugin and Cherry Lazy modifications * added: Alt WebP supports BJ Lazy Load plugin * added: Alt WebP supports Retina Lazysizes * added: ability to defer resizing of uploaded image using ewww_image_optimizer_defer_resizing filter, "other" dimensions will apply regardless of upload method * changed: wp_image_editor integration does not use background optimization, reverting to inline processing, holler if you want it back * changed: all scripts have proper version numbers to avoid caching issues * changed: inline webp script moved to head element to work better with lazy loading * changed: optimized Alt WebP code for smaller size = 3.0.2 = * fixed: fatal error running empty() on a constant in PHP less than 5.5 = 3.0.0 = * fixed: resizes not checked for existence before calling parallel/async optimization, causing the process to stall * fixed: background optimization disabled when settings are saved * fixed: regression in db upgrade function throws warning on plugin upgrade * fixed: alt webp breaks Slider Revolution's lazyload when dummy.png.webp exists * fixed: background optimization for nextcellent was incomplete * fixed: notices under Manage Gallery for nextcellent when tool constants were not defined * changed: one-click actions in Media Library don't require reload, now possible to optimize several images at the same time * changed: API quota check no longer requires a verification on every attempt * changed: webp settings moved to separate tab * added: forced webp mode, to generate webp for every image, regardless of final filesize * added: in forced webp mode, must specify allowed url patterns for rewriting = 2.9.9 = * fixed: broken uploads with W3TC CDN option enabled * fixed: warning when scanning Meta Slider metadata for images * fixed: should not check for 'nice' when exec() is disabled * fixed: notices for 'nice' when exec() output is empty * fixed: wp-cli command skipping pdf files * added: ability to view API history at https://history.exactlywww.com/ * added: abiltiy to disable set_time_limit() function with EWWW_IMAGE_OPTIMIZER_DISABLE_STL constant * added: plugin now on GitHub https://github.com/nosilver4u/ewww-image-optimizer * changed: removed baseline JPG encoding trial, since progressive compression is almost always smaller, and is always more desirable from a UX perspective * updated: cwebp version 0.5.1 = 2.9.8 = * fixed: also disable parallel mode iternally if background testing is not successful * fixed: fatal error when WP Retina 2x is enabled with EWWW's parallel mode * fixed: parallel opt would hang if resizes were missing * fixed: prevent background test from accidentally spawning more tests * fixed: background test stuck in queue indefinitely if it didn't succeed = 2.9.7 = * fixed: cached value for multisite uploads directory incorrect on some sites * fixed: retina/hidpi images required separate async task with parallel optimization * fixed: retina function would try to run an async optimization even if the file didn't exist * fixed: one-time convert links (like JPG2PNG) from Media Library not working when Parallel mode enabled * fixed: images with transparency were being converted if PNG2JPG enabled regardless of JPG background setting when using API * fixed: mime-type meta for resizes updated on conversion and restoration * fixed: resizes were being checked, even if no filename was available * added: thread limit for parallel optimization, set to 5, can be modified by filter * added: filter to modify timeout for parallel optimization * added: filter to disable (or modify) the suffix added to converted images * added: debugging page to view and clear background optimization queues (must have EWWW's debug setting enabled) - under Media menu * changed: parallel mode only enabled if using API or your images have more than 5 resizes each * changed: background mode only enabled if background test succeeds (on plugin upgrade) * changed: file types with disabled optimization no longer included in unoptimized image counts = 2.9.6 = * fixed: set_time_limit() was still being called in a couple spots even if set_time_limit() is disabled by PHP * fixed: regression in scheduled optimization which allowed multiple processes to run * fixed: total savings for multisite was incorrectly requerying site 1 for each blog * fixed: optimization being attempted via API even if license exceeded * added: ewwwio_images table is checked on settings page to make sure it exists * added: run utf8_encode() on all filenames for Scheduled Optimize and Scan & Optimize to avoid database update issues, please report any new issues with Scan & Optimize right away = 2.9.5 = * fixed: wrong path pre-pended using parallel optimization and wp-content or uploads folder is not within the WP root * fixed: absolute paths passed to async optimization are pre-pended with ABSPATH * fixed: Bulk Optimize excluding images from count based on wrong option (disabled generation vs. disabled optimization) * fixed: timeouts during Media optimize could corrupt metadata, added routine to rebuild the meta on re-optimization * changed: running out of API credits puts the verification function to sleep for up to 5 minutes * added: extra checks to make sure the Background/Async objects are properly initialized before using them = 2.9.4 = * fixed: permissions after optimization are different than what WP core uses and falls back to umask on unixy systems * fixed: API server address not re-fetched properly when cache expires * changed: Parallel Optimization no longer ON by default = 2.9.3 = * fixed: sorry, missed a session locking operation (manual optimize) = 2.9.2 = * changed: priority level of Alt WebP Rewriting so that pages do not get un-minified after Autoptimize runs * fixed: async requests for parallel optimization had an empty user agent * fixed: uploads broken because start_session() locks all async processes = 2.9.1 = * changed: full paths are not POSTed to avoid Local File Inclusion blocks put in place by various security plugins (Wordfence & Shield) * fixed: reduced number of database queries during parallel optimization * fixed: undefined methods for BFI thumb editor class * added: detect Shield's Lock to Location feature and disable background/parallel operations = 2.9.0 = * added: parallel optimization for Media uploads (original and resizes are done concurrently), turn off under Advanced if it affects site performance * added: allow resize dimensions to be filtered: https://ewww.io/2016/07/05/changing-the-dimensions-for-resizing-images/ * changed: deferred (background) optimization is now the normal mode of operation as it runs instantly, and no longer relies on wp_cron * changed: scheduled optimization uses new background processing to allow it to run longer, and resume quicker * changed: webp .htaccess rules removed when plugin is deleted * changed: JPG quality setting applies to conversion AND image editing (but not regular optimization), so that you can override the WP default of 82 * changed: API license status check is faster, as results are cached while checking for updates in the background * fixed: .htaccess rules for webp inserted properly for sub-directory installs * fixed: .jpe files properly detected as image/jpeg when fetching from CDN or during folder-scanning operations * fixed: images generated by NextGEN are properly optimized with latest version * fixed: deprecated class constructors for NextGEN, Nextcellent, and FlaGallery classes (potential white screen with PHP 7) * fixed: basic uploader for FlaGallery broken due to missing class * fixed: images uploaded with WPML Media active are now resized, with better detection for newly uploaded images = 2.8.5 = * fixed: previous security hardening used boolval(), which is not present on PHP < 5.5 = 2.8.4 = * security: remote command execution, please update immediately = 2.8.3 = * fixed: tool status not shown when tool could not be found, prevents pngout installation * fixed: notice when checking nonce lifetime during scheduled optimization * fixed: multi-site not saving cloud optimization levels * fixed: settings page requiring a refresh to display properly after inserting/removing an API key = 2.8.2 = * added: ability to use ImageMagick's 'convert' tool to convert images on Windows * fixed: WebP images regenerated during scheduled optimization when PNG optimization disabled * fixed: Windows executable checks obey 'use system tools' option * fixed: settings page checks for tools which have already been tested and known missing = 2.8.1 = * added: kudos to Cache Enabler plugin from KeyCDN for adding WebP rewrite support to work with images generated by EWWW I.O. * fixed: untranslatable string for resize setting description * fixed: Resize Media Images was not applying to the Media->Add New menu item * fixed: Bulk Optimize counted webp images as valid resizes = 2.8.0 = * added: resizing for uploaded images, set max width and height and optionally resize all existing images * added: retina derivative for resized original is generated if original was at least twice the size of the max dimensions (WP Retina 2x Pro only) * fixed: warnings for file_exists in Alt WebP function when open_basedir restriction is in effect * removed: disable automatic optimization, use deferred optimization instead * removed: disable optipng (it still functions, just seeing if anyone actually needs that option anymore) * changed: consolidated various settings into optimization levels for each file format, and removed Cloud tab = 2.7.2 = * fixed: retina images not obeying deferred and disabled auto-optimize options * fixed: fatal error for wp-cli when trying to optimize Media Library * fixed: pdf optimization was checking for gif option * fixed: pdf could not use bulk optimization or deferred optimization due to empty metadata = 2.7.1 = * fixed: Bulk Optimization not including PDF files * fixed: PDF files not being checked for prior optimization * fixed: notice for undefined index when running scheduled optimization * changed: Scan and Optimize changed from extension blacklist to smaller extension whitelist = 2.7.0 = * added: PDF Optimization, both lossless AND lossy = 2.6.2 = * fixed: url matching for Amazon S3 urls not working for region-specific protocol handlers * fixed: discrepancy between number of images actually queued for bulk and number of images listed as selected * fixed: S3 images not being fetched when doing local optimization and local images have been removed * removed: optimize again for media library after bulk optimize is complete * changed: fewer timeouts for long-running Bulk operations by re-issuing nonce values * changed: previously optimized CDN images show Re-optimize instead of Optimize Now * added: pre-emptive mime-type detection for Amazon S3 images since the AWS Stream Wrapper is not reliable = 2.6.1 = * fixed: disabled tools being tested during optimization * fixed: slow loading of Media Library list view with Amazon S3 attachments * fixed: Amazon S3 images could be re-optimized after upload without Force enabled * fixed: Amazon S3 images not shown when pressing Show Optimized Images * fixed: error when legacy image_md5 column did not exist * changed: last optimized time set in db for all images, not just re-optimized ones * changed: NextGEN bulk optimize requires admin permissions by default = 2.6.0 = * security: missing validate, sanitize, and escape for some user and database inputs * security: bulk optimize uses a js sleep instead of php to help avoid timeouts and protect against DOS attacks * security: protect from CSRF by adding nonce values to one-click optimize/re-optimize/convert links * removed: support for legacy NextGEN 1.x, please use Nextcellent for continued integration with EWWW I.O. * fixed: nextgen (nextcellent and 2.x) styling for ui when bulk optimizing galleries and images on the Manage Galleries page * fixed: advanced settings not showing the medium_large size introduced in WP 4.4 * fixed: path to Image Store resizes not built properly * fixed: notices when querying for MetaSlider images * fixed: fatal error when NextGEN2 and EWWW are active with the Photocrati theme and you try to activate another plugin * fixed: white screen when using NextGen2's Reset Options to Default * fixed: not properly detecting if login session expires while running bulk optimization * fixed: webp js attempting to load even if jQuery not present * fixed: conflict with Alternative WebP Rewriting and Cornerstone editor from X-theme * fixed: warning generated by trying to create ewww/ tool folder when wp-content is not writable * fixed: blank settings page when wp-content/ folder was not writable * fixed: arrow on Plugin Status was missing due to WP admin style updates * fixed: bulk optimize will output a proper error message then the full-size image cannot be found * added: compatibility with Alternative WebP Rewriting and infinite scroll from Avada theme, Animated Infinite Scroll plugin, and other functions that retrieve full-page content via AJAX * added: full compatibility with Alternative WebP Rewriting and Revolution Slider from ThemePunch * added: Alternative WebP Rewriting supports protocol-less urls * added: Alternative WebP Rewriting works with Easy Social Share Buttons plugin (footer widget had extra spacing) * added: debugging page for dynamic image (re)generation to help find problematic plugins * added: bulk optimize displays image credits needed and used/remaining credits for API users * added: better admin notices when the wp-content/ewww/ folder cannot be created or is not writable * changed: bulk optimize combines ajax queries for greater efficiency and to avoid tripping request limits * changed: bulk optimize shows last optimized image details and optimization log in movable and collapsible metaboxes * changed: speed up Cloud optimization by removing redundant API verifications when optimizing image resizes * changed: use sha256 algorithm instead of md5 for stronger binary verification * changed: replaced get_posts with direct wpdb calls for less overhead and to avoid broken filters from other plugins * changed: standard lossy JPG compression (via TinyJPG) now preserves copyright when Remove Metadata is unchecked * changed: cwebp updated to 0.5.0 and linux binaries consolidated into one static binary for better compatibility * changed: jpegtran updated to 9b and linux binaries consolidated into one static binary for better compatibility = 2.5.9 = * fixed: warnings when attempting to unlink (delete) a non-existent test file * fixed: deep checking was not enabled for pngquant and cwebp (optional utilities) = 2.5.8 = * added: advanced checking for binaries using sample images when version output is suppressed * fixed: CPU overload causing 503 errors related to WebP function and output buffering parameters * fixed: call to old debug function in Image Store Optimize page * fixed: notices if action2 is not specified from Media Library bulk action drop-down * changed: streamlined binary checking to allow -custom and -alt binaries for all tools, including Windows = 2.5.7 = * fixed: MySQL column index too large when collation is utf8mb4 prevents table creation and throws warnings on upgrades * fixed: cleanup of table upgrade function to avoid unnecessary queries * fixed: Optimized string was undefined for flagallery and nextgen bulk optimization * fixed: When activated network-wide, settings link on per-site Plugins page was incorrect = 2.5.6 = * fixed: avoid memory leaks from calls to ewwwio_debug_message() within ewww_image_optimizer_require() for multi-site users = 2.5.5 = * fixed: prevent duplicate scheduled optimizations from running concurrently * fixed: removed redundant checks from scheduled optimization * changed: files without extensions are skipped by the folder scanning function * changed: hidden files are skipped by the folder scanning function (can be modified with a filter) * changed: new installs will have the collation set properly for the ewwwio_images table * changed: make require() and include() less fatal and use admin notices instead * fixed: warnings when deferred optimization queue is empty = 2.5.4 = * changed: Remove metadata turned on by default, should not affect existing installations/upgrades * changed: Português and Español moved to language packs * fixed: notices from redefining constants * updated: bundled pngquant to version 2.5.2 * updated: bundled cwebp to version 0.4.4 * deprecated: cwebp will not be updated for Mac OS X 10.8 past 0.4.2 = 2.5.3 = * fixed: wpdb call causes error during scheduled optimization * fixed: mismatched CN for SSL certs on cloud servers * changed: French, Bulgarian, Romanian, German and Polish translations have been moved to language packs for auto-updating * changed: allow 755 or greater permissions instead of only 755 for local binaries * added: Alt WebP Rewriting supports new srcset and sizes attributes in WordPress 4.4 = 2.5.2 = * new: all our installation videos have been re-done so that they are up-to-date and answer some common questions * changed: much faster scanning for Scan & Optimize when ewwwio table is large * fixed: check WP_CONTENT_DIR setting if wp_upload_dir() is reporting the wrong upload directory * fixed: translations for fr_BE and uk (Ukrainian) * fixed: .htaccess installer for webp rules * fixed: alt webp rewriting gets stuck when
tag has a space: * fixed: notice thrown when trying to call unregister_setting before any settings were actually registered for EWWW = 2.5.1 = * added: Portuguese (Portugal) translation for pt_PT thanks to Celso Azevedo * added: optimization for custom sizes for "Fraction" theme * added: filter to override restrictions for Folders to Optimize * added: automatic fallback for conversion options if a toolkit does not produce any output * added: notice for WP Engine users to use Cloud version of EWWW Image Optimizer * fixed: bulk delay was ignored when processing deferred images * fixed: notices when scanning media library to load Bulk Optimize page * fixed: tooltip text was not escaped properly for one-click conversion links * fixed: warning when deferred optimization runs and there is nothing available to optimize * fixed: error when bulk optimizing and w3_upload_info() function is missing * fixed: error when passing empty value to json_encode() * fixed: error on Unoptimized Images when bulk optimization resume flag is set, but no attachments are left * fixed: Unoptimized Images will scan entire library when bulk optimization resume flag is set, instead of just remaining attachments = 2.5.0 = * deprecated: Disable Automatic Optimization and Include Media Folders options: will be removed from the UI in 2.6 but remain functional if enabled * added: deferred optimization lets you upload images with no delays, and optimize later automatically * added: wp_cron filter has additional parameter to allow setting scheduled & deferred optimization on different freqencies * added: remote images on S3 can be fetched when using WP Offload S3 (Amazon S3 and Cloudfront) * added: remote images on Azure Storage can be fetched when using Windows Azure Storage for WordPress * added: (re)upload to Dreamspeed after optimization * added: action hooks before and after optimization * added: filter to modify the number of records queried when counting unoptimized images (default 3000) * added: check for retina images generated without WP Retina 2x, with filter to modify @2x extension * added: support for Imagick and Gmagick extensons when converting images (JPG2PNG and PNG2JPG) * changed: nextcellent thumbs are optimized on creation, no need to manually optimize after upload * changed: API keys are masked as password fields * changed: debugging functions streamlined to reduce memory usage * updated: translator credits - huge THANK YOU to all of them! * fixed: errant tool warnings for cloud users in nextgen and flagallery * fixed: catch extraction error for pngout during automatic install * fixed: settings link in error notices for network-activated installs * fixed: regression with alt webp rewriting introduced in 2.4.4 that caused duplicate and tags in some cases * fixed: url replacement when restoring original for a converted image = 2.4.7 = * fixed: defer nextgen loading until 'init' to prevent activation/upgrade problems * fixed: nextgen dynamic image generation fails if API subscription is out of image credits = 2.4.6 = * fixed: some admin pages were testing all tools regardless of the active settings (also improves admin load times) * fixed: check that image exists in WP_Image_Editor extension * fixed: load 'tool_init' earlier on Media Library to prevent errors with Enhanced Media Library plugin * added: filter to modify/suppress output of thumbnail optimization message after image upload for Nextcellent (useful for things like Lightroom integration) * updated: Italian (it_IT) translation = 2.4.5 = * fixed: warning on settings page for implode() function * fixed: notice on admin pages with get_home_url() function * updated: gifsicle works again on Windows XP and Server 2003 * added: filter to allow changing time period for scheduled optimization = 2.4.4 = * fixed: Alt WebP Rewriting unable to find images when WP url and Site url are different (subdirectory install) * fixed: Alt WebP Rewriting mangles certain characters due to older versions of libxml * fixed: Alt WebP Rewriting parses xml files when it should leave them alone - feeds and sitemaps * fixed: issues with API license exceeded during bulk optimization * fixed: pngout regression with .tmp and .tmp.png files preventing optimization * updated: bundled Gifsicle updated to 1.87 * updated: bundled cwebp updated to 0.4.3 (0.4.2 for Mac OS 10.8) * deprecated: pngout 20151319 does not work on CentOS 5, older versions available at http://static.jonof.id.au/dl/kenutils/ * deprecated: FreeBSD 8.4 support, moving to 9.3 64-bit only = 2.4.3 = * fixed: Alt WebP Rewriting breaks themes with