= 5.6 - Aug 1 2023 = * 🌱**Page Optimize** New JS Delay Includes option. (Mitchell Krog/Gerard Reches/Ignacy Hołoga) * **Crawler** Sitemap can use search for URL now. * **GUI** Restrict the scope of balloon CSS rules to avoid conflicts. (#567) * **Object Cache** Detect Memcached in more situations. (#568) * **API** Support `litespeed_purged_front` hook. (Umberto Fiorelli) = 5.5.1 - Jul 19 2023 = * 🐞**Image Optimization** Fixed a bug where WebP replacements couldn't be pulled without optimizing the original images. * 🐞**Image Optimization** Invalid images will now be removed when sending requests to the server. (#138993) * **Cloud** Added support for error codes `unpulled_images` and `blocklisted`. (Tynan) = 5.5 - Jun 20 2023 = * 🌱**Crawler** Can now use multiple sitemaps. (Tobolo/Tim Nolte) * 🌱**Crawler** Now runs asynchronously when manually invoked. * 🌱**Crawler** Now runs asynchronously when invoked from cron. * 🐞**Crawler** Fixed the realtime status bug when crawling. * **Crawler** Summary page now displays server load. (Ruikai) * 🐞**Page Optimize** Fixed an issue where UCSS could not be generated for error pages. (james58899) #556 * 🌱**Image Optimize** Now pulls images asynchronously. * **Image Optimize** Now prevents concurrent requests via a locking mechanism. * **Image Optimize** The process can now bypass invalid image records and continue. * 🐞**Image Optimize** Fixed an issue where images ready for optimization might have to wait for new images to be added before sending the request. * **Cloud** Replaced dashboard links with login/link to my.quic.cloud actions. * **GUI** Added indicators to show when certain options are passively enabled by Guest Mode. * **Htaccess** Added a noabort rule to support asynchronous crawling. * **Htaccess** The "Do Not Cache User Agents" option is now case-insensitive. (Ellen Dabo) * **General** The "Server IP" option now allows IPv4 format only. (Ruikai) * **Misc** Every page's closing HTML comments now displays UCSS/CCSS status. * **Object** Fixed a warning for null get_post_type_object. * **Object** Object_Cache::delete now always returns a boolean value. * **Cache** Fixed advanced-cache.php file warnings for WordPress versions less than 5.3. * **Debug** Added debug logging to record the plugin's total processing time. * **API** HTML minification can now be bypassed via the litespeed_html_min filter. = 5.4 - Apr 19 2023 = * **Image Optimize** Refactored DB storage for this feature. * **Image Optimize** Reduced DB table size. * **Image Optimize** Existing `img_optm` DB tables will have their data gradually transitioned to the new storage format with this update. Once an `img_optm` table is empty, it won't be used anymore. * **Page Optimize** Enabled WebP support for Googlebot User Agent. = 5.3.3 - Feb 22 2023 = * **Page Optimize** Excluded Jetpack stats JS. * **DB Optimize** Fixed DB Optm SQL for revision postmeta. * **Cache** Fixed an undefined array key warning. * **Purge** Prevented undefined array key warning when widgets are disabled. * **Object** Fixed dynamic property deprecation warnings. * **Admin** Safely redirect to homepage if referer is unknown. * **Activation** Check that item slug exists first. * **Cache** Prevented cache header to send globally if header part already closed. * **CSS** Improved string handling for CSS minifier. * **Debug** Fixed undefined array key warnings. * **Misc** Fixed implicit conversion in random string generation function `Str::rrand`. = 5.3.2 - Jan 10 2023 = * **Object** Fixed object cache lib incr, decr functions (thanks bdrbros/DANIEL) #516 * **Database Optimize** Database optimizer now handles postmeta when cleaning revisions #515 * **Cache** Made nocache the default for 4xx/5xx response codes. * **Cache** Default cache TTL settings removed for 403 response code, changed to 10 mins for 500 response code. * **GUI** Added a description for the redetect nodes function. * **GUI** Added a description for the refresh button sync function. = 5.3.1 - Dec 12 2022 = * **CLI** Presets feature is now usable from the CLI. (xLukii) * **CLI** Added 'import_remote' for litespeed-option to enable importing options from URLs. (xLukii) * **Cache** Added LiteSpeed headers to site health check for full page cache. * **Crawler* Fixed unauthorized crawler toggle operation. (#CVE-2022-46800) * **UCSS** Fixed a bug where items weren't added back to the UCSS queue after purging. * **Page Optimize** Fixed a bug where generated CSS would return 404 after upgrading via CLI. * **3rd** Fixed a bug where a WooCommerce session doesn't exist when checking cart, notices (Jason Levy/Gilles) * **GUI** Made LiteSpeed admin notice icon grayscale to avoid distraction. (martinsauter) * **GUI** Fixed RTL style for notification icon. * **API** Added a new hook `litespeed_optm_uri_exc` to exclude URI from page optimization. * **API** Excluded `.well-known` path from page optimization. = 5.3 - Oct 31 2022 = * 🌱**Presets** New `Presets` feature and menu item. * 🌱**UCSS** New option `UCSS File Excludes and Inline` to increase page score. (Ankit) * **UCSS** When UCSS is purged, automatically append URL to UCSS generation queue. (Ankit) * **Page Optimize** Removed a redundant `defer` attribute from Lazy Load image library usage. (#928019) * **Image Optimize** Dropped `Create WebP Versions` setting. Will automatically enable when `Image WebP Replacement` is activated. * **Cloud** Fixed a bug where internal updates were delayed for API keys. * **Cloud** Improved auto alias feature by waiting for second request from alias domain validation before removing a pending alias. * **Purge** Automatically Purge All when plugin auto update is done. * **Purge** Fixed a potential PHP8 error that occurred when removing unused widgets. (acsnaterse) * **Cache** Fixed an infinite 301 redirection caused by UTM-encoded link. * **CLI** Added syntax examples for values that include line breaks (xLukii) * **CLI** Purge requests will now be included with the original request to avoid potential CSS/JS 404 issues. * **ESI** Check all user roles for cache vary and page optimization excludes. * **GUI** Added a LiteSpeed icon to admin message banners to indicate the banners are from our plugin. (Michael D) * **Crawler** Fixed a cache-miss issue that occurred when Guest Mode was ON and WebP Replacement was OFF. * **3rd** Remove WooCommerce private cache. * **3rd** Removed LiteSpeed metabox from ACF field group edit page. (keepmovingdk) = 5.2.1 - Sep 7 2022 = * 🐞**Core** Fixed a fatal error that occurred when uninstalling. (#894556 Hostinger) * **Dash** Show partner info on the dashboard for partner-tier QC accounts. * **UCSS** Auto-purge UCSS on post update. (Ankit) * 🕸️**Crawler** Respect the `LITESPEED_CRAWLER_DISABLE_BLOCKLIST` constant for unexpected results too. (Abe) = 5.2 - Aug 17 2022 = * 🌱**UCSS** Added UCSS message queue to improve service quality and reliability * 🐞**VPI** Fixed conflict w/ image lazyload; used HTML before image lazyload to avoid invalid `data:base64` results. * **VPI** Changed VPI Cron default setting to OFF. * **VPI** Automatically resend requests when VPI result contains invalid `data:` image value. * **Conf** Fixed an issue with URI Excludes, where paths using both ^ and $ were not correctly excluded (Eric/Abe) * **Conf** Auto corrected `WP_CONTENT_URL` protocol if it was explicitly set to `http://`. * **Cloud** No longer sync the configuration to QUIC.cloud if configuration is unchanged. * **Cloud** Appended home_url value into synced configuration data for wp-content folder path correction. * 🕸️**Crawler** Improved compatibility with server `open_basedir` PHP setting limit when detecting load before crawling. (Tom Robak/mmieszalski) = 5.1 - Aug 1 2022 = * 🌱**Toolbox** Debug log can now show Purge/Crawler logs as well. (Tynan) * **UCSS** Prepared for future message queue. * **UCSS** Moved UCSS class to its own file. * **3rd** Added 3rd-party support for WC PDF Product Vouchers. (Tynan) * **Core** Fixed potential PHP warning when saving summary data. (Sarah Richardson) * **Purge** Purge can now clear the summary correctly. (Kevin) * **VPI** Added `queue_k` to API notification. = 5.0.1 - Jul 27 2022 = * 🐞**Cloud** Fixed a potential PHP error that could occur with the cloud service summary. (Bruno Cantuaria) * **3rd** Added Autoptimize back to compatibility list. = 5.0.0.1 - Jul 26 2022 = * 🔥🐞**Cloud** Fixed an issue with the cloud request timestamp update which causes a usage sync failure. (great thanks to Kevin) = 5.0 - Jul 25 2022 = * 🌱**VPI** Added Viewport Images feature to LiteSpeed Options metabox on Post Edit page. * 🌱**CDN** Added Auto CDN Setup feature for simple QUIC.cloud CDN setup. (Kevin) * 🌱**Page Optimize** Automatically cache remote CSS/JS files when fetching for optimization (Lauren) * 🌱**Cache** Added LiteSpeed Options for page-level cache control on Post Edit page. (denisgomesfranco) * 🌱**Cloud** Auto Alias feature. * 🌱**Debug** Added `Debug String Excludes` option. (Hanna) * 🌱**UCSS** Added `Purge this page - UCSS` option to Admin Bar dropdown menu. (Ankit) * 🌱**Guest** Added `litespeed_guest_off=1` URL query string parameter to bypass Guest Mode. (cbdfactum) * 🐞**Page Optimize** Fixed an issue where CSS anchors could be wrongly converted to a full path when minifying. (Tynan) * **Page Optimize** Bypass CCSS/UCSS generation when a self-crawled CSS resource returns a 404 code. (Abe) * **Object** Allow `LSCWP_OBJECT_CACHE` predefined to turn off Object Cache. (knutsp) * **Data** Fixed an issue where empty version tags in the database repeatedly toggled the upgrade banner and reset settings to default. * **Purge** Fixed an issue where the site's index page could be purged upon deletion of an unviewable post. (Kevin) * **Toolbox** Added `View site before optimization` button under `Debug` tab. (Ryan D) * **Admin** Switch to using the `DONOTCACHEPAGE` constant to indicated WP-Admin pages are not cacheable. * **Admin** Moved no-cache header to very beginning to avoid caching unexpected exits. * **Cloud** Added message queue service for VPI. (Abe) * **Cloud** Bypassed 503 error nodes from node redetection process. (Abe) * **Cloud** Fixed a failure to detect `out_of_quota`. (Lauren) * **Cloud** Added ability to display dismissable banners generated by QUIC.cloud. * 🕸️**Crawler** Added realtime load detection before crawl. * 🕸️**Crawler** Adjusted crawler behavior for Divi pages to allow for Divi's CCSS generation process. (miketemby) * 🕸️**API** PHP constant `LITESPEED_CRAWLER_DISABLE_BLOCKLIST` and filter `litespeed_crawler_disable_blocklist` to disable blocklist. (Tobolo) * **CDN** Automatically add a trailing slash to `CDN URL` and `Original URLs` if user didn't provide one. (Lucas) * **Cache** When a URL redirects to a URL with a query string, consider these as different for caching purposes. (Shivam) * **Media** Added ability to disable lazyload from the LiteSpeed Options metabox on Post Edit page. * **Media** Added new default values to `WebP Attribute to Replace` setting for WPBakery and Slider Revolution. (JibsouX) * **Image Optimize** Dropped redundant `Page Speed` user agent when serving WebP images. (serpentdriver) * **GUI** Fixed an issue where manually dismissable admin messages were instead being treated as one-time messages. (Tynan Beatty) * **GUI** Fixed an issue where subsequent admin alerts would overwrite existing alerts in the queue. (Kevin/Tynan) * **GUI** Updated time offset in log. (Ruikai #PR444 #PR445) * **GUI** Added `litespeed_media_ignore_remote_missing_sizes` API description. * **CCSS** Fixed an issue where CCSS was unexpectedly bypassed if `CSS Combine` was OFF and `UCSS Inline` was ON. (Ruikai) * **Debug** Added response headers to debug log. (Kevin) = 4.6 - Mar 29 2022 = * **Page Optimize** Improved compatibility for JS Delay. * 🐞**Page Optimize** Fixed an issue for network subsites that occurred when only CSS/JS Minify are enabled. * **Localization** Added query string compatibility for Resource URLs. * **Vary** Fixed a potential PHP warning when server variable `REQUEST_METHOD` is not detected. * **Cache** Guest Mode now respects Cache Excludes settings. * **GUI** Added warning notice when enabling `Localize Resources` feature; each localized JS resource requires thorough testing! * **GUI** Fixed a PHP Deprecated warning that occurred with the Mobile Cache User Agent setting on PHP v8.1+. (jrmora) * **Conf** Removed Google related scripts from default `Localization Files` value. * **Media** WordPress core Lazy Load feature is now automatically disabled when LiteSpeed Lazy Load Images option is enabled. (VR51 #Issue440) * 🐞**API** Filter `litespeed_ucss_per_pagetype` for UCSS now also applies to CSS Combine to avoid UCSS failure. (Ankit) * **API** Added a filter `litespeed_media_ignore_remote_missing_sizes` to disable auto detection for remote images that are missing dimensions. (Lucas) = 4.5.0.1 - Feb 24 2022 = * 🔥🐞**Media** Fixed an issue where lazy-loaded images would disappear when using custom CSS image loading effects. = 4.5 - Feb 23 2022 = * 🌱**Page Optimize** Localization is back. * **Guest** Fixed organic traffic issue as different browsers may fail to set `document.referrer`. * **Image Optimize** Improved wp_postmeta table compatibility when gathering images. (Thanks to Thomas Stroemme) * 🐞**Page Optimize** Fixed a potential CSS/JS 404 issue for existing records that have been marked as expired. * **ESI** `LITESPEED_ESI_OFF` now affects `litespeed_esi_url` API filter too. * **Guest** Added a check to determine if Guest Mode is blocked by a third-party, and display warning if it is (Ruikai) * **Guest** To support WP sites with multiple domains, Guest Mode detection URL no longer uses domain. * **Report** Network now shows Toolbox page when having a large number of subsites. * **DB Optimize** Reduced default subsites count from 10 to 3 under Network Admin -> DB Optimize page to avoid timeout. * **Cloud** Fixed potential `lack_of_token` error when requesting domain key for cases where local summary value was not historically included in the array. * **Cloud** Fixed a PHP fatal error that occurred when encountering a frequency issue under CLI. (Dean Taylor #Issue410) * **Avatar** Force gravatar cache refresh in browsers and on CDN (rafaucau #PR430) * **API** New filter `litespeed_purge_ucss` to purge a single page UCSS. (#376681) * **API** New filter `litespeed_ucss_per_pagetype` for UCSS per page type generation. (Ankit) * **GUI** Replaced some GUI text and settings with more inclusive language (kebbet #PR437 #PR435) * **3rd** Excluded `WP Statistics` from inline JS optimize. (Ryan D) * **3rd** Added API filter `litespeed_3rd_aelia_cookies` for Aelia CurrencySwitcher. * **Media** Updated image lazyload library to 17.5.0. = 4.4.7 - Jan 11 2022 = * **Page Optimize** Dropped `Inline Lazy Load Images Library` option. Now will always inline lazyload library. (Ankit) * **3rd** Prevented JavaScript files from being appended to Rank Math SEO sitemap. * **Purge** Dropped default stale purge when purging a post. * **Cloud** Dropped unused API calls. * **Cloud** Dropped redundant IP validation in API calls. = 4.4.6 - Dec 27 2022 = * **Guest** Restored `document.referrer` for organic traffic purposes when Guest Mode is enabled. (michelefns) * **Image Optimize** Fixed a potential PHP notice when uploading images in WP w/ PHP7.4+. (titsmaker) * **ESI** Fixed an issue where ESI settings were not updated on customized widgets(#422 Abe) * **3rd** Reverted ESI Adminbar change on Elementor front pages for backward compatibility (#423 Abe) * **3rd** Fixed an issue where disabling ESI potential caused a PHP warning when using `Perfmatters`. (Jeffrey Zhang) * **Misc** Check whether HTTP_REFERER is set or not before using it in Router class. (#425 Abe) = 4.4.5 - Dec 1 2021 = * **Data** Fixed potential PHP notice when generating CSS/JS optimized files w/ PHP v7.4+. (Sarah Richardson/silencedgd/slr1979) * **API** Added `LITESPEED_ESI_OFF` constant to disable ESI, when defined before the WP `init` hook. * **API** Added `LSCWP_DEBUG_PATH` constant to specify debug log path. (khanh-nt) * 🐞**GUI** Fixed an issue where admin messages were not displayed. (Daniel McD) * **CDN** Used WP remote function to communicate w/ Cloudflare per WP guidance. * **3rd** Added compatibility for Perfmatters plugin's script manager (#417 Abe) * **3rd** Added compatibility for Elementor's Editor button when ESI is on (#418 Abe) = 4.4.4 - Nov 23 2021 = * **Page Optimize** Delay deletion of outdated CSS/JS files for a default of 20 days to avoid 404 errors with cached search engine copies. * **Cache** When caching, no longer send a purge request for CSS/JS removal to avoid cache engine conflicts. * 🐞**Core** Optimized SQL queries while autoloading if expected options are missing; reduced by 7 and 3 queries on backend and frontend respectively. (#396425 Jackson) * **Page Optimize** Fixed a 404 issue that occurred when upgrading the plugin manually, with a package upload or through the plugin manager. (Tobolo/Małgorzata/Abe) * **API** Added `litespeed_ccss_url` and `litespeed_ucss_url` API to manipulate the request URL for CCSS and UCSS. * **REST** Fixed a potential warning when detecting cacheable status on REST call. (rafaucau) * **OLS** Fixed an issue where the `COOKIEHASH` constant was undefined when used with OpenLiteSpeed as an MU plugin or with network activation. * **3rd** Sanitized POST data for nextgengallery. * **Cloud** Sanitized GET data when linking to QUIC.cloud. (#591762 WPScan) = 4.4.3 - Oct 13 2021 = * 🐞**Media** Fixed an issue where WebP is served erroneously under Guest Mode on older versions of Safari. (hash73) * 🐞**Media** Reverted regex change to fix `Lazy Load Image Parent Class Name Excludes` failure. (thpstock) * **Purge** Disabled `Purge Delay` in the optimization process by default. * **Conf** Dropped `.htaccess Path Settings` options for security concern. (WP) * **Conf** Dropped `CSS HTTP/2 Push`/`JS HTTP/2 Push` options. (Kevin) * **Conf** Set `Guest Optimization` default to OFF. * **Conf** Set `CCSS Per URL` default to OFF to avoid consuming more quota than intended after upgrade to v4. (n111) * **Object** Fixed an issue with Object Cache warnings during upgrade, when Guest Mode is enabled. * ☁️**Cloud** Fixed an issue with PHP notices when inquiring about quota usage for a service not currently in use. * **GUI** Added GO detail warning. (n111) * **GUI** Moved "quota will be still in use" warning from Guest Mode to Guest Optimization section. * **API** Added `LITESPEED_CFG_HTACCESS` PHP Constant to specify .htaccess path. * **API** Added `litespeed_qs_forbidden` hook to bypass `?LSCWP_CTRL=` query string. (minhduc) * **API** Added `litespeed_delay_purge` hook to delay the following Purge header until the next request. * **API** Added `litespeed_wpconfig_readonly` hook to disable `WP_CACHE` constant update based on the wp-config.php file. (#633545) = 4.4.2 - Sep 23 2021 = * **Purge** In order to clear pages containing 404 CSS/JS, the purge header will always be sent even in cases where purge must be delayed. * 🐞**Purge** Fixed a potential PHP warning caused when generating different optimized filenames. * **Cron** Dropped unnecessary HTML response in cron which sometimes resulted in wp-cron report email. (Gilles) * **Page Optimize** Purge caused by CSS/JS file deletion will now be silent. * **Page Optimize** Fixed an issue where the homepage failed to purge when addressing the 404 CSS/JS issue. * **Avatar** Fixed potential localized Avatar folder creation warning. (mattk0220/josebab) * **API** Added filter `litespeed_optm_html_after_head` to move all optimized code(UCSS/CCSS/Combined CSS/Combined JS) to be right before the `` tag. (ducpl/Kris Regmi) * **Debug** Under debug mode, cache/purge tags will be plaintext. = 4.4.1 - Sep 16 2021 = * 🐞**ESI** Fixed ESI failure on non-cached pages caused by `DONOTCACHEPAGE` constant. * 🐞**Page Optimize** Fixed an issue where the minified CSS/JS file failed to update when the file was changed. (ceap80) * 🐞**Page Optimize** Fixed an issue where the combined CSS/JS file randomly returned a 404 error when visiting the same URL with different query strings. (Abe) * **API** Added `litespeed_const_DONOTCACHEPAGE` hook to control the cache-or-not result of the `DONOTCACHEPAGE` constant. = 4.4 - Sep 8 2021 = * 🌱**Crawler** Added the ability to enable or disable specific crawlers. (⭐ Contributed by Astrid Wang #PR390) * 🌱**UCSS** Added `UCSS Inline` option. (Ankit). * 🌱**UCSS** Added `UCSS URI Excludes` option. (RC Verma). * 🐞**Page Optimize** Fixed an issue where combined CSS/JS files would potentially return 404 errors after a Purge All. (Special thanks to Abe & Ruikai) * **Page Optimize** Minimized the potential for 404 errors by query string when Purging All. * **Page Optimize** Dropped redundant query strings for minified CSS/JS files. * **Conf** Ugrade configuration safely to avoid the issue of new functions not being found in old codebase. * **Conf** Configuration upgrade process now adds a notification to admin pages and disables configuration save until upgrade is complete. (Lisa) * **JS** Fixed an issue where JS Defer caused a `litespeed_var_1_ is not defined` error when enabled w/ ESI options. (Tobolo) * 🐞**JS** Fixed an issue where `JS Delay` doesn't work for combined JS when `JS Combine` is enabled. (Special thanks to Joshua & Ankit) * **JS** `JS Delay` now will continue loading JS, even if there is an error in the current JS loading process. * 🐞**CCSS** If CCSS fails to generate, Load CSS Asynchronously will now be disabled. (Stars #54074166) * 🐞**UCSS** If UCSS generation fails the generated error will no longer be served inside the file. (Ryan D) * **Log** Updated the Debug log to use less code for prefix. * **3rd** Always respect `DONOTCACHEPAGE` constant definition to fix DIVI dynamic css calculation process. = 4.3 - Aug 16 2021 = * **UCSS** Separated UCSS Purge from CCSS Purge. (⭐ Contributed by Alice Tang #PR388) * 🐞**Cloud** Fixed an issue where CCSS/UCSS quota data failed to update locally. * **Cloud** Added server load as a factor when detecting node availability. * **Cloud** Improved the speed of checking daily quota and showing the related error message. * **Cloud** Added ability to re-detect node availability if the current node is responding w/ a heavy load code. * **Cloud** CCSS/UCSS/LQIP queue now exits immediately when quota is depleted. * **Cloud** Replaced separate `d/regionnodes` with a single `d/nodes` in the node list API for image optimization. * **LQIP** Fixed an issue with LQIP network compatibility. (⭐ Contributed by Alice Tang #PR387) * **GUEST** JS no longer preloads for Guest Optimization. (Ankit) * 🐞**Data** Fixed an issue where deleting the `cssjs` data folder causes a failure in the upgrade process. (Joshua #PR391) * **GUI** Fixed a potential dashboard PHP warning when no queue existed. (jrmora) * **GUI** Added daily quota on dashboard. * **GUI** Added downgrade warning to Toolbox -> Beta Test. * **GUI** Tuned `.litespeed-desc` class to full width in CSS. * **Conf** `Preserve EXIF/XMP data` now defaults to ON due to copyright concerns. (Tobolo) * 🐞**3rd** Fixed a PHP warning when using Google AMP w/ /amp as structure. (thanhstran98) = 4.2 - Jul 29 2021 = * **Cloud** Auto redirect to a new node if the current node is not available anymore. * **Cloud** Combined CCSS/UCSS to sub services of Page Optimization. * **Cloud** Added a daily quota rate limit to help mitigate the heavy service load at the beginning of the month. * **Cloud** Cached the node IP list in order to speed up security check. (Lucas) * 🐞**GUEST** Fixed an issue where Guest Mode remained enabled even when the UA setting is empty. (Stars) * **GUEST** Guest Mode will no longer cache POST requests. * **UCSS** Purging CSS/JS now purges the UCSS queue as well, to avoid failure when generating UCSS. * **UCSS** Separated service entry `UCSS` from `CCSS`. * **CCSS** Simplified `load_queue/save_queue/build_filepath_prefix` functions. (⭐ Contributed by Alice Tang #PR373) * **CCSS** If CCSS request fails, details are now saved in the CSS file. * **CCSS** Renamed CCSS ID in inline HTML from `litespeed-optm-css-rules` to `litespeed-ccss`. (Alice) * **Page Optimize** CCSS/UCSS now supports Cloud queue/notify for asynchronous generation. * **Page Optimize** Simplified CCSS/UCSS generation function. * **Page Optimize** Added the ability to cancel CCSS/UCSS Cloud requests. * **Page Optimize** Unnecessary quesry strings will now be dropped from CSS/JS combined files. * **Crawler** Reset position now resets crawler running status too. * **REST** Cloud request to REST will now detect whether an IP in in the Cloud IP list for security reasons. * **Object** Enhanced Object Cache compatibility for `CONF_FILE` constant detection. * **API** Added shorter alias `litespeed_tag` and other similar aliases for Cache Tag API. * **API** Renamed `LITESPEED_BYPASS_OPTM` to `LITESPEED_NO_OPTM` for Page Optimization. * **Toolbox** Dropped v3.6.4- versions in Beta Test as they will cause a fatal error in downgrade. * **GUI** Added shortcut links to each section on the Dashboard. * **GUI** Added UCSS whitelist usage description. (wyb) * **GUI** Showed the default recommended values for Guest Mode UA/IPs. * **3rd** Fixed AMP plugin compatibility. (⭐ Contributed by Alice Tang #PR368) * **3rd** Bypassed all page optimization including CDN/WebP for AMP pages. * **3rd** Improved compatibility with All in One SEO plugin sitemap. (arnaudbroes/flschaves #Issue372) * **3rd** Added wsform nonce. (#365 cstrouse) * **3rd** Added Easy Digital Download (EDD) & WP Menu Cart nonce. (#PR366 AkramiPro) * **3rd** Improved compatibility w/ Restrict Content Pro. (Abe #PR370) * **3rd** Improved compatibility w/ Gravity Forms. (Ruikai #371) = 4.1 - Jun 25 2021 = * 🌱**UCSS/CCSS/LQIP** Moved queue storage to file system from database wp-options table to lessen the IO load. (#633504) * 🌱**3rd** Added an option to disable ESI for the WooCommerce Cart. (#358 Anna Feng/Astrid Wang) * **ESI** Fixed an ESI nonce issue introduced in v4.0. (Andrew Choi) * **Object** Used new `.litespeed_conf.dat` instead of `.object-cache.ini` for object cache configuration storage. * **Conf** Now updating related files after plugin upgrade and not just after activation. * 🌱**Guest** Added a Guest Mode JS Excludes option. (Ankit/Mamac/Rcverma) * **Guest** Guest Mode now uses a lightweight script to update guest vary for reduced server load. * **Guest** Guest Mode now adds missing image dimensions. * **Guest** Guest vary will no longer update if there's already a vary in place to address the infinite loop caused by CloudFlare's incorrect cache control setting for PHP. * **Guest** Guest vary update request will no longer be sent if `lscache_vary` is already set. * **Guest** Added a Configurable Guest Mode UA/IP under the Tuning tab in the General menu. * **Guest** Guest Mode now allows cron to be hooked, even when UCSS/CCSS options are off. (#338437 Stars) * **Guest** Simplified the vary generation process under Guest Mode. * **Guest** Added a Guest Mode HTML comment for easier debugging. (Ruikai) * **Guest** Guest vary update ajax now bypasses potential POST cache. * **CCSS** Added back the options `Separate CCSS Cache Post Types` and `Separate CCSS Cache URIs`. (Joshua/Ankit) * **CCSS** CCSS/UCSS queue is now limited to a maximum of 500 entries. * **Control** The cache control constant `LSCACHE_NO_CACHE` will now have a higher priority than the Forced Public Cache setting. * **Crawler** The Crawler can now crawl Guest Mode pages. * **Crawler** Fixed a potential XSS vulnerability in the Crawler settings. (#927355) * **Crawler** The Crawler now supports a cookie value of `_null`. (Tobolo) * **Media** Updated the default value for the Responsive Placeholder SVG to be transparent. * **Media** WebP images in the background may now be served in Guest Mode. * **Media** WebP images in CSS may now be bypassed if the requesting Guest Mode client doesn't support WebP. * **Media** Fixed empty default image placeholder under Guest Mode. * 🐞**Image Optimize** Changed the missing `$_POST` to `$post_data` so the database status is properly updated. (#345 Lucas) * **Import** Export file is now readable to allow importing of partial configurations. (Ryan D/Joshua) * **Page Optimize** Fixed W3 validator errors in Guest Mode. (#61393817) * **3rd** A fatal WooCommerce error is no longer triggered by a custom theme reusing a previous LSCWP cache detection tag. * **3rd** AMP may now bypass Guest Mode automatically. * **Localize** Dropped the `Localize Resources` option as Guest Mode is a sufficient replacement. (Note: Due to user feedback during the development period, we have decided to reinstate this option in a future version.) * **Cloud** Changed the WP API url. * **Lang** Corrected a missing language folder. * **GUI** Added a CCSS/UCSS loading page visualization. (⭐ Contributed by Astrid Wang & Anna Feng #PR360) * **GUI** Added a warning to indicate when Guest Mode CCSS/UCSS quota is in use. (Contributed by Astrid Wang & Anna Feng #PR361) * **GUI** Added a `litespeed-info` text color. (Astrid Wang) * **GUI** Implemented various UI/UX improvements. (Joshua/Lisa) * **GUI** Duplicate cloud service messages with the same content will only display once now. (Marc Dahl) * **GUI** Added a WebP replacement warning for Guest Mode Optimization if WebP replacement is off. * **Misc** Dropped `wp_assets` from distribution to reduce the package size. (lowwebtech) * **Misc** Increased the new version and score detection intervals. * **Misc** Optimized WP Assets images. (#352 lowwebtech) * **Debug** Dropped the redundant error_log debug info. = 4.0 - Apr 30 2021 = * 🌱🌱🌱**Guest** Introduced `Guest Mode` for instantly cacheable content on the first visit. * 🌱**UCSS** Added a new service: `Unique CSS`, to drop unused CSS from elements from combined CSS * 🌱**CCSS** Added `HTML Lazyload` option. (Ankit) * 🌱**CCSS** Added `CCSS Per URL` option to allow Critical CSS to be generated for each page instead of for each Post Type. * 🌱**Media** Added `Add Missing Sizes` setting for improving Cumulative Layout Shift. (Fahim) * 🌱**JS** Switched to new JS minification library for better compression and compatibility w/ template literals. (LuminSol) * **Media** WebP may now be replaced in CSS. * **Media** Can now drop image tags in noscript to avoid lazyload. (Abe #314 /mattthomas-photography) * **Media** Bypass optimization if a page is not cacheable. * **Image Optimize** Auto hook to `wp_update_attachment_metadata` to automate image gathering process, and to handle the new thumbnail generation after images are uploaded. (smerriman). * **Image Optimize** Repeated image thumbnails won't be gathered anymore. * **Image Optimize** Simplified the rescan/gather/upload_hook for existing image detection. * **Image Optimize** Fixed the duplicated optimize size records in the postmeta table. (Abe #315) * **Image Optimize** Allow either JSON POST request or normal form request in `notify_img`. (Lucas #313) * **Image Optimize** Optimized SQL query for better efficiency. (lucas/Lauren) * **Image Optimize** Fixed issue where rescan mass created duplicate images. (#954399) * **Image Optimize** Image optimization pie will not show 100% anymore if there is still a small amount in the unfinished queue. * **Image Optimize** WebP generation defaults to ON for Guest Mode. * **Image Optimize** `Priority Line` package now can have smaller request interval. * **ESI** Disable ESI when page is not cacheable. (titsmaker) * **ESI** Fixed an issue where Divi was disabling all in edit mode, but couldn't disable ESI. (Abe) * **ESI** ESI init moved under `init` hook from `plugin_loaded` hook. * **CDN** Add basic support for CloudFlare API Tokens (Abe #320) * **CSS** Simplified `Font Display Optimization` option. * **CSS** Fixed manual cron timeout issue. (jesse Distad) * **CSS** Inline CSS may now use `data-no-optimize` to be excluded from optimization. (popaionut) * **JS** Combined `Load JS Defer` and `Load Inline JS Defer` options. * **JS** Forced async to defer. * **JS** Moved Google Analytics JS from constant default to setting default for removal. * **JS** Fixed potential JS parsing issue caused by JS src being changed to data-src by other plugins. (ankit) * **JS** Excluded spotlight from JS optimize. (tobolo) * **CCSS** Fixed CCSS/UCSS manual cron timeout issue. * **CCSS** Only 10 items will be kept for CCSS history. * **CCSS** The appearance of CCSS Purge in the topbar menu will be determined by the existence of CCSS cache, and not the setting only. * **CCSS** To avoid stuck queues when the current request keeps failing, the CCSS queue will always drop once requested. * **CCSS** CCSS will no longer hide adminbar. * **CCSS** CCSS may now be separate for network subsites. (Joshua) * **CCSS** Gave CCSS a unique filename per URL per user role per subsite. * **CCSS** Dropped `Separate CCSS Cache Post Types` option. * **CCSS** Dropped `Separate CCSS Cache URIs` option. * **CCSS** Subsites purge Avatar/CSS/JS/CCSS will not affect the whole network anymore. * **CCSS** Implemented a better queue list for CCSS that auto collapses if there are more than 20 entries, and shows the total on top. * **CSSJS** Now using separate CSS and JS folders instead of `cssjs`. * **CSSJS** Automatically purge cache after CCSS is generated. * **Network** Dropped network CSS/JS rewrite rules. * **Cache** Send cache tag header whenever adding a tag to make it effective in the page optimization process. * **Core** Used hook for buffer optimization; Used `init()` instead of `constructor`. * **Object** Used `cls` instead of `get_instance` for init. * **Cloud** Replaced one-time message with a dismissible-only message when the domain key has been automatically cleared due to domain/key dismatch. * **API** Dropped function `hook_vary_add()`. * **API** Dropped function `vary_add()`. * **API** Dropped function `filter_vary_cookies()`. * **API** Dropped function `hook_vary()`. * **API** Dropped action `litespeed_vary_add`. * **API** Dropped filter `litespeed_api_vary`. * **API** Use `litespeed_vary_curr_cookies` and `litespeed_vary_cookies` for Vary cookie operations instead. * **API** Dropped action `litespeed_vary_append`. * **Vary** 3rd party vary cookies will not append into .htaccess anymore but only present in response vary header if in use. * **Vary** Dropped function `append()`. * **Vary** Commenter cookie is now considered cacheable. * **Crawler** Minor update to crawler user agent to accommodate mobile_detect.php (Abe #304) * **Data** Added a table truncate function. * **Data** Added new tables url & url_file. * **Data** Dropped cssjs table. * **Data** Options/Summary data is now stored in JSON format to speed up backend visit. (#233250) * **Data** Default `CSS Combine External and Inline` and `JS Combine External and Inline` to On for new installations for better compatibility. * **Purge** Fixed potential purge warning for certain themes. * **Purge** Purge will be stored for next valid visit to trigger if it is initially generated by CLI. * **Page Optimize** `CSS Combine`/`JS Combine` will now share the same file if the contents are the same. Limited disk usage for better file usage and fewer issues with random string problems. * **Page Optimize** Dropped option CSS/JS Cache TTL. * **Page Optimize** Bypass optimization if page not cacheable. * **Page Optimize** Purge CSS/JS will purge the `url_file` table too. * **Page Optimize** Optionally store a vary with a shorter value. * **Page Optimize** Removing query strings will no longer affect external assets. (ankit) * **Page Optimize** Better regex for optimization parsing. * **Page Optimize** Eliminated w3 validator for DNS prefetch and duplicated ID errors. (sumit Pandey) * **Page Optimize** New Optimization for Guest Only option under Tuning. * **Page Optimize** Now forbidding external link redirection for localization. * **Debug** Implemented a better debug format for the 2nd parameter in the log. * **GUI** Bypass page score banner when score is not detected (both 0). (ankit) * **GUI** Fixed deprecated JQuery function warning in WP-Admin. (krzxsiek) = 3.6.4 - Mar 15 2021 = * **Toolbox** Fixed Beta Test upgrade error when upgrading to v3.7+. = 3.6.3 - Mar 10 2021 = * **Core** Fixed potential upgrade failure when new versions have changes in activation related functions. * **Core** Upgrade process won't get deactivated anymore on Network setup. = 3.6.2 - Feb 1 2021 = * **Page Optimize** Fixed an issue where network purge CSS/JS caused 404 errors for subsites. * **Page Optimize** Fixed an issue where purge CSS/JS only caused 404 errors. * **Page Optimize** Added a notice for CSS/JS data detection and potential random string issue. * **Page Optimize** Limited localization resources to specified .js only. (closte #292/ormonk) * **JS** Data src may now be bypassed from JS Combine. (ankit) * **CLI** Fixed a message typo in Purge. (flixwatchsupport) * **Browser** Added font/otf to Browser Cache expire list. (ruikai) * **Data** Updated data files to accept PR from dev branch only. * **3rd** Add data-view-breakpoint-pointer to js_excludes.txt for the Events Calendar plugin. (therealgilles) * **Cloud** Bypassed invalid requests. * **Doc** CDN Mapping description improvement. (mihai A.) = 3.6.1 - Dec 21 2020 = * **WP** Tested up to WP v5.6. * **WebP** Reverted WebP support on Safari Big Sur and Safari v14.0.1+ due to an inability to detect MacOS versions from UA. (@antomal) * **CDN** Dropped the option `Load JQuery Remotely`. * **CDN** Fixed CDN URL replacement issue in optimized CSS files. (@ankit) * **CDN** Fixed an issue where CDN CLI wouldn't set mapping image/CSS/JS to OFF when `false` was the value. * **CDN** Started using React for CDN Mapping settings. * **GUI** Secured Server IP setting from potential XSS issues. (@WonTae Jang) * **Toolbox** Supported both dev and master branches for Beta Test. Latest version updated to v3.6.1. * **Purge** Purge Pages now can purge non-archive pages too. * **Admin** Simplified the admin JS. * **Admin** Limited crawler-related react JS to crawler page only. = 3.6 - Dec 14 2020 = * 🌱**WebP** Added WebP support on Safari Big Sur or Safari v14.0.1+. (@ruikai) * 🐞**Config** Fixed an issue where new installations were not getting the correct default .htaccess content. * **Crawler** Will auto bypass empty sub-sitemap instead of throwing an exception. (@nanoprobes @Tobolo) * **Crawler** Now using React for Cookie Simulation settings instead of Vue.js. Dropped Vue.js. * **Crawler** Dropped `Sitemap Generation` (will only use 3rd party sitemap for crawler). * **CSS** Added `CSS Combine External and Inline` option for backward compatibility. (@lisa) * **Object** Forbid .object-cache.ini visits. (@Tarik) * **Page Optimize** Dropped `Remove Comments` option to avoid combine error. * **CSS** Added a predefined CSS exclude file `data/css_excludes.txt`. * **CSS** Excluded Flatsome theme random inline CSS from combine. * **CSS** Excluded WoodMart theme from combine. (@moemauphie) * **Page Optimize** Excluded tagDiv.com Newspaper theme dynamic CSS/JS from CSS/JS Combine. * **CSS** Added predefined JS defer excludes list. (@Shivam) * **JS** `data-no-defer` option now supports inline JS. (@rafaucau) * **Media** Lazyload inline library is now bypassed by JS Combine. * **Admin** Fixed WP-Admin console ID duplicate warnings. * **Cloud** Dropped QUIC.cloud sync options that have long been unused. * **CSS** Dropped `Unique CSS File` option (UCSS will always generate unique file, will use whitelist to group post type to one CSS). * **GUI** Dropped Help tab. * **Toolbox** Added 3.5.2 to version list. = 3.5.2 - Oct 27 2020 = * **CSS** `CSS Combine` is now compatible w/ inline noscript CSS. (@galbaras) * **GUI** Added ability to manually dismiss the JS option reset message in v3.5.1 upgrade process. (#473917) * 🐞**CSS** `CSS Excludes` setting will no longer lose items beginning w/ `#`. (@ankit) * **API** New `litespeed_media_reset` API function for image editing purposes. (@Andro) = 3.5.1 - Oct 20 2020 = * **JS** Inline JS containing nonces can now be combined. * **JS** Reset JS Combine/Defer to OFF when upgrading to avoid breaking sites. * **JS** Added new option JS Combine External and Inline to allow backwards compatibility. * **JS** Added Inline JS Defer option back. (@ankit) * **Page Optimize** Dropped Inline JS Minify option and merged the feature into JS Minify. * **JS** Pre-added jQuery to the default JS excludes/defer list for better layout compatibility for new users. * **JS** Excluded Stripe/PayPal/Google Map from JS optimization. (@FPCSJames) * **JS** Allowed excluded JS to still be HTTP2 pushed. (@joshua) * **CCSS** Critical CSS now can avoid network pollution from other sites. (@ankit) * **Toolbox** Beta Test now displays recent public versions so it is easier to revert to an older version * **Vary** Server environment variable Vary can now be passed to original server from QUIC.cloud for non-LiteSpeed servers. * **ESI** Improved backward compatibility for ESI nonce list. (@zach E) * 🐞**Misc** Fixed failure of upgrade button on plugin news banner and made cosmetic improvements. * **Doc** Added note that LSCWP works with ClassicPress. = 3.5.0.2 - Sep 30 2020 = * This is a temporary revert fix. Code is SAME as v3.4.2. = 3.5.0.1 - Sep 29 2020 = * 🔥🐞**CSS** Fixed print media query issue when having CSS Combine. (@paddy-duncan) = 3.5 - Sep 29 2020 = * **Page Optimize** Refactored CSS/JS optimization. * **Page Optimize** CSS and JS Combine now each save to a single file without memory usage issues. * **CSS** Inline CSS Minify is now a part of CSS Minify, and will respect the original priorities. (thanks to @galbaras) * **JS** JS Combine now generates a single JS file in the footer. (Special thanks to @ankit) * **JS** JS Combine now combines external JS files, too. (Thanks to @ankit) * **JS** JS Deferred Excludes now uses the original path/filename as keywords instead of the minified path/filename, when JS Minify is enabled. * **JS** JS Combine now combines inline JS, too. * **JS** JS Excludes may now be used for inline JS snippet. * **Page Optimize** Inline CSS Minify and Max Combined File Size retired due to changes listed above. * **CSS** Combined CSS Priority retired due to changes listed above. * **JS** Exclude JQuery, Combined JS Priority, Load Inline JS Deferred, and Inline JS Deferred Excludes retired due to changes listed above. * **JS** Predefined data file data/js_excludes.txt now available for JS Excludes. * **ESI** Predefined data file data/esi.nonces.txt now available for ESI Nonces. * **ESI** Remote Fetch ESI Nonces functionality retired. * **API** Added support for new litespeed_esi_nonces filter. * **Object** Object Cache will not try to reconnect after failure to connect in a single process. * **CCSS** Remote read CSS will add the scheme if it is missing from the URL. * **CCSS** CSS will no longer be prepared for a URL if 404 result is detected. * **CCSS** Fixed most failures caused by third party CSS syntax errors. * **CCSS** Remote read CSS will fix the scheme if the URL doesn't have it. * **CCSS** Excluded 404 when preparing CSS before request. * **CCSS** Adjusted CCSS timeout from 180 seconds to 30 seconds. * **Image Optimize** Fixed the delete attachment database error that occurred when not using the image optimization service yet. * **Media** Added iOS 14 WebP support. * **Data** Fixed database creation failure for MySQL v8. * **Cloud** Error code err_key will clear the domain key in order to avoid duplicate invalid requests. * **Network** Fixed issue with object cache password file storage that occurred when resaving the settings. (#302358) * **Misc** Fixed IP detect compatibility w/ Apache. * **GUI** Fixed the description for Do Not Cache Categories. * **Preload** Upgraded Instant Click to a new stable preload library. (@stasonua0) = 3.4.2 - Sep 8 2020 = * **CCSS** Corrected the issue that wrongly appended non-CSS files to CSS in links before sending request. * **3rd** YITH wishlist now sends a combined single sub request for all widgets contained in one page. (LSWS v5.4.9 build 3+ required) * **ESI** Added support for ESI combine feature. * **GUI** Dropped banner notification for missing domain key when domain key is not initialized. * **Log** When QC whitelist check fails, a detailed failure log is now appended. = 3.4.1 - Sep 2 2020 = * 🐞**CCSS** Fixed an issue where dynamically generated CSS failed with `TypeError: Cannot read property type of undefined`. * 🐞**Page Optimize** Fixed CSS optimization compatibility for CSS dynamically generated with PHP. * **Page Optimize** Added the ability to defer JS even when the resource is excluded from other JS optimizations. (@slr1979) * **ESI** Added support for ESI last parameter inline value. * **3rd** YITH Wishlist, when cached for the first time, will no longer send sub requests. = 3.4 - Aug 26 2020 = * 🌱**LQIP** New setting **LQIP Excludes**. * 🌱**LQIP** Added a Clear LQIP Queue button. * 🌱**CCSS** Added a Clear CCSS Queue button. * **CCSS** Fixed an issue which wrongly included preloaded images in CCSS. (@pixtweaks) * **Network** Primary site and subsite settings now display correctly. * **Page Optimize** Noscript tags generated by LSCWP will only be dropped when the corresponding option is enabled. (@ankit) * **DB Optimize** Fixed database optimizer conflicts w/ object cache transient setting. (#752931) * **3rd** Fixed an issue with WooCommerce product purge when order is placed. * **3rd** Improved WooCommerce product comment compatibility with **WooCommerce Photo Reviews Premium** plugin when using ESI. * **CDN** Fixed Remote jQuery compatibility with WordPress v5.5. (@pixtweaks) * **API** New API `litespeed_purge_all_object` and `litespeed_purged_all_object` action hooks. = 3.3.1 - Aug 12 2020 = * 🌱**Page Optimize** New option to Remove Noscript Tags. (@phuc88bmt) * 🐞**LQIP** Fixed a critical bug that bypassed all requests in v3.3. * **LQIP** Requests are now bypassed if domain has no credit left. * **Page Optimize** Inline defer will be bypassed if document listener is detected in the code. (@ssurfer) * **CCSS** Print-only styles will no longer be included in Critical CSS. * **API** Added hooks to Purge action to handle file deletions. (@biati) * **Cloud** Plain permalinks are no longer required for use of cloud services. * **Data** Added an access denial to work with OpenLiteSpeed. (@spenweb #PR228) * **GUI** Spelling and grammar adjustments. (@blastoise186 #PR253) = 3.3 - Aug 6 2020 = * 🌱**Page Optimize** Added a new setting, Inline JS Deferred Excludes. (@ankit) * **Page Optimize** CSS/JS Combine/Minify file versions will be differentiated by query string hash instead of new filename to reduce DB/file system storage. * **Page Optimize** Added the ability to use local copies of external JS files for better control over page score impacts. * **Page Optimize** Improved combination of CSS media queries. (@galbaras) * **Page Optimize** Reprioritized Inline JS Defer to be optimized before encoding, for a significantly smaller result. * **LQIP** Detect if the file exists before sending LQIP request to QUIC.cloud. * **CCSS** Sped up CCSS process significantly by sending HTML and CSS in request. * **CCSS** Improvements to mobile CSS support in CCSS. * **CCSS** Minimize CCSS failures by attempting to automatically fix CSS syntax errors. * **Cloud** Domain Key will be deleted after QUIC.cloud site_not_registered error to avoid endless repeated requests. * **CDN** CDN Original URL will default to WP Site URL if not set. (@ruikai) * **CLI** Global output format `--format=json/yaml/dump` and `--json` support in CLI. (@alya1992) * **CDN** Improved handling of non-image CSS `url()` sources in CDN. (@daniel McD) * 🐞**CDN** Fixed CDN replacement conflict w/ JS/CSS Optimize. (@ankit) * **Crawler** Only reset Crawler waiting queues when crawling begins. (@ruikai) * **Network** Network Enable Cache is no longer reset to ON Use Network Settings in enabled. (@RavanH) * 🐞**Activation** Fixed a PHP warning that appeared during uninstall. (@RavanH) * **Debug** Automatically omit long strings when dumping an array to debug log. * **Report** Subsites report now shows overwritten values along w/ original values. (#52593959) * **REST** Improved WP5.5 REST compatibility. (@oldrup) * **GUI** Server IP setting moved from Crawler menu to General menu. * **GUI** Localize resources moved to Localization tab. * **Config** News option now defaults to ON. = 3.2.4 - Jul 8 2020 = * **Object** New installations no longer get custom data.ini reset, as this could cause lost configuration. (@Eric) * **ESI** Now using `svar` to load nonces more quickly. (@Lauren) * **ESI** Fixed the conflicts between nonces in inline JS and ESI Nonces when Inline JS Deferred is enabled. (@JesseDistad) * 🐞**ESI** Fixed Fetch Latest Predefined Nonce button. * 🐞**Cache** Fixed an issue where mobile visits were not being cached when Cache Mobile was disabled. * **CDN** Bypass CDN constant `LITESPEED_BYPASS_CDN` now will apply to all CDN replacements. * **Router** Dropped `Router::get_uid()` function. * **Crawler** Updated role simulator function for future UCSS usage. * **GUI** Textarea will now automatically adjust the height based on the number of rows input. * **CLI** Fixed an issue that caused WP-Cron to exit when a task errored out. (@DovidLevine @MatthewJohnson) * **Cloud** No longer communcate with QUIC.cloud when Domain Key is not set and Debug is enabled. * **Cloud** Score banner no longer automatically fetches a new score. (@LucasRolff) = 3.2.3.2 - Jun 19 2020 = * 🔥🐞**Page Optimize** Hotfix for CSS/JS minify/combine. (@jdelgadoesteban @martin_bailey) = 3.2.3.1 - Jun 18 2020 = * **API** New filter `litespeed_buffer_before` and `litespeed_buffer_after`. (#PR243 @joejordanbrown) = 3.2.3 - Jun 18 2020 = * 🌱**Page Optimize** Added Unique CSS option for future removal of unused CSS per page. (@moongear) * **Page Optimize** Fixed an issue where Font Optimization could fail when having Load JS Deferred and Load Inline JS Deferred. (#PR241 @joejordanbrown) * 🐞**Page Optimize** Fixed an issue with Font Display Optimization which caused Google Fonts to load incorrectly. (#PR240 @joejordanbrown @haidan) * 🐞**Network** Use Primary Site Configuration setting for network sites now works properly with Object Cache and Browser Cache. (#56175101) * **API** Added filter `litespeed_is_from_cloud` to detect if the current request is from QC or not. (@lechon) * **ESI** ESI Nonce now can fetch latest list with one click. * **GUI** Updated remaining documentation links & some minor UI tweaks. (@Joshua Reynolds) = 3.2.2 - Jun 10 2020 = * 🌱**Purge** Scheduled Purge URLs now supports wildcard. (#427338) * 🌱**ESI** ESI Nonce supports wildcard match now. * **Network** Use Primary Site Settings now can support Domain Key, and override mechanism improved. (@alican532 #96266273) * **Cloud** Debug mode will now have no interval limit for most cloud requests. (@ruikai) * **Conf** Default Purge Stale to OFF. * **GUI** Purge Stale renamed to Serve Stale. * **Data** Predefined nonce list located in `/litespeed-cache/data/esi.nonce.txt`. Pull requests welcome. * **Debug** Limited parameter log length. * 🐞**CDN** Fixed an issue where upgrading lost value of CDN switch setting. (#888668) * **3rd** Caldera Forms ESI Nonce enhancement. (@paconarud16 @marketingsweet) * **3rd** Elementor now purges correctly after post/page updates. * **3rd** Disabled Page Optimization features on AMP to avoid webfont JS inject. (@rahulgupta1985) = 3.2.1 - Jun 1 2020 = * **Cloud** LQIP/CCSS rate limit tweaks. (@ianpegg) * **Admin** Improved frontend Admin Bar menu functionality. (#708642) * **Crawler** Fixed an issue where cleaning up a crawler map with a leftover page number would cause a MySQL error. (@saowp) * **Image Optimize** Added WP default thumbnails to image optimization summary list. (@johnny Nguyen) * **REST** Improved REST compatibility w/ WP4.4-. (#767203) * **GUI** Moved Use Primary Site Configuration to General menu. (@joshua) = 3.2 - May 27 2020 = * **Image Optimize** Major improvements in queue management, scalability, and speed. (@LucasRolff) * **Cloud** Implemented a series of communication enhancements. (@Lucas Rolff) * **Crawler** Enhanced PHP 5.3 compatibility. (@JTS-FIN #230) * **Page Optimize** Appended image template in wpDiscuz script into default lazyload image exclude list. (@philipfaster @szmigieldesign) * **Page Optimize** Eliminated the 404 issue for CSS/JS in server environments with missing SCRIPT_URI. (@ankit) * **Data** ENhanced summary data storage typecasting. = 3.1 - May 20 2020 = * 🌱**Network** Added Debug settings to network level when on network. * 🐞**Purge** Network now can purge all. * 🐞**Network** Fixed issue where saving the network primary site settings failed. * **Network** Moved Beta Test to network level when on network. * 🐞**Cache** Fixed issue in admin where new post editor was wrongly cached for non-admin roles. (@TEKFused) * 🐞**Data** Fixed issue with crawler & img_optm table creation failure. (@berdini @piercand) * 🐞**Core** Improved plugin activation compatibility on Windows 10 #224 (@greenphp) * **Core** Improved compatibility for .htaccess path search. * **Object** Catch RedisException. (@elparts) * Fixed Script URI issue in 3.0.9 #223 (@aonsyed) * **Image Optimize** Show thumbnail size set list in image optimization summary. (@Johnny Nguyen) * **Debug** Parameters will now be logged. = 3.0.9 - May 13 2020 = * **Purge** Comment cache can be successfully purged now. * **Data** Better MySQL charset support for crawler/image optimize table creation. (@Roshan Jonah) * **API** New hook to fire after Purge All. (@salvatorefresta) * **Crawler** Resolve IP for crawler. * **Task** PHP5.3 Cron compatibility fix. * **3rd** Elementor edit mode compatibility. * **Page Optimize** Fixed an issue where Purge Stale returned 404 for next visitor on CSS/JS. * **Page Optimize** Fixed the PHP warning when srcset doesn't have size info inside. (@gvidano) * **Cloud** Fixed the potential PHP warning when applying for the domain key. * **Core** PHP __DIR__ const replacement. (@MathiasReker) = 3.0.8.6 - May 4 2020 = * **CCSS** Bypassed CCSS functionality on frontend when domain key isn't setup yet. * **Cloud** Fixed WP node redetection bug when node expired. (@Joshua Reynolds) * **Crawler** Fixed an issue where URL is wrongly blacklisted when using ADC. = 3.0.8.5 - May 1 2020 = * 🔥🐞**3rd** Hotfix for WPLister critical error due to v3.0.8.4 changes. * **Image Optimize** Unfinished queue now will get more detailed info to indicate the proceeding status on node. * **CLI** Options can now use true/false as value for bool. (@gavin) * **CLI** Detect error if the ID does not exist when get/set an option value. * **Doc** An API comment typo for `litespeed_esi_load-` is fixed. = 3.0.8.4 - Apr 30 2020 = * 🌱**Crawler** New setting: Sitemap timeout. (#364607) * **Image Optimize** Images that fail to optimize are now counted to increase next request limit. * **Cloud** Redetect fastest node every 3 days. * **Cloud** Suppressed auto upgrade version detection error. (@marc Dahl) * **3rd** 3rd party namespace compatibility. (#366352) = 3.0.8.3 - Apr 28 2020 = * **Cloud** Better compatibility for the Link to QUIC.cloud operation. (@Ronei de Sousa Almeida) * **Image Optimize** Automatically clear invalid image sources before sending requests. (@Richard Hordern) = 3.0.8.2 - Apr 27 2020 = * **GUI** Corrected the Request Domain Key wording. = 3.0.8.1 - Apr 27 2020 = * **Object** Object cache compatibility for upgrade from v2.9.9- versions. = 3.0.8 - Apr 27 2020 = * Released v3 on WordPress officially. = 3.0.4 - Apr 23 2020 = * **Cloud** Apply Domain Key now receives error info in next apply action if failed to generate. * **GUI** Apply Domain Key timeout now displays troubleshooting guidance. * **REST** Added /ping and /token to REST GET for easier debug. * **Cache** Dropped `advanced-cache.php` file detection and usage. = 3.0.3 - Apr 21 2020 = * **Conf** Settings from all options (data ini, defined constant, and forced) will be filtered and cast to expected type. * **Upgrade** CDN mapping and other multiple line settings will now migrate correctly when upgrading from v2 to v3. = 3.0.2 - Apr 17 2020 = * **GUI** More guidance on domain key setting page. * **Cloud** Now Apply Domain Key will append the server IP if it exists in Crawler Server IP setting. = 3.0.1 - Apr 16 2020 = * **Data** Increased timeout for database upgrade related to version upgrade. Display a banner while update in progress. * **Page Optimize** All appended HTML attributes now will use double quotes to reduce the conflicts when the optimized resources are in JS snippets. = 3.0 - Apr 15 2020 = * 🌱**Media** LQIP (Low Quality Image Placeholder). * 🌱**Page Optimize** Load Inline JS Deferred Compatibility Mode. (Special thanks to @joe B - AppsON) * 🌱**Cloud** New QUIC.cloud API key setting. * 🌱**ESI** New ESI nonce setting. * 🌱**Media** JPG quality control. (@geckomist) * 🌱**Media** Responsive local SVG placeholder. * 🌱**Discussion** Gravatar warmup cron. * 🌱**DB** Table Engine Converter tool. (@johnny Nguyen) * 🌱**DB** Database summary: Autoload size. (@JohnnyNguyen) * 🌱**DB** Database summary: Autoload entries list. * 🌱**DB** Revisions older than. (@thememasterguru) * 🌱**Cache** Forced public cache setting. (#308207) * 🌱**Crawler** New timeout setting to avoid incorrect blacklist addition. (#900171) * 🌱**Htaccess** Frontend & backend .htaccess path customize. (@jon81) * 🌱**Toolbox** Detailed Heartbeat Control (@K9Heaven) * 🌱**Purge** Purge Stale setting. * 🌱**Page Optimize** Font display optimization. (@Joeee) * 🌱**Page Optimize** Google font URL display optimization. * 🌱**Page Optimize** Load Inline JS deferred. * 🌱**Page Optimize** Store gravatar locally. (@zzTaLaNo1zz @JohnnyNguyen) * 🌱**Page Optimize** DNS prefetch control setting. * 🌱**Page Optimize** Lazy Load Image Parent Class Name Excludes. (@pako69) * 🌱**Page Optimize** Lazy load iframe class excludes. (@vnnloser) * 🌱**Page Optimize** Lazy load exclude URIs. (@wordpress_fan1 @aminaz) * 🌱**GUI** New Dashboard and new menus. * 🌱**Image Optimize** Supported GIF WebP optimization. (@Lucas Rolff) * 🌱**Image Optimize** New workflow for image optimization (Gather first, request second). * 🌱**Image Optimize** The return of Rescan. * 🌱**CLI** Get single option cmd. * 🌱**CLI** QUIC.cloud cmd supported. * 🌱**CLI** CLI can send report now. * 🌱**Health** Page speed and page score now are in dashboard. * 🌱**Conf** Supported consts overwritten of `LITESPEED_CONF__` for all settings. (@menathor) * 🌱**REST** New REST TTL setting. (@thekendog) * 🌱**CDN** New setting `HTML Attribute To Replace`. CDN can now support any HTML attribute to be replaced. (@danushkaj91) * 🌱**Debug** Debug URI includes/excludes settings. * 🌱**Crawler** 🐞 Support for multiple domains in custom sitemap. (@alchem) * 🌱**Crawler** New Crawler dashboard. New sitemap w/ crawler status. New blacklist w/ reason. * 🌱**Media** LQIP minimum dimensions setting. (@Lukasz Szmigiel) * **Crawler** Able to add single rows to blacklist. * **Crawler** Crawler data now saved into database instead of creating new files. * **Crawler** Larger timeout to avoid wrongly added to blacklist. * **Crawler** Manually changed the priority of mobile and WebP. (@rafaucau) * **Browser** Larger Browser Cache TTL for Google Page Score improvement. (@max2348) * **Task** Task refactored. Disabled cron will not show in cron list anymore. * **Task** Speed up task load speed. * **ESI** Added Bloom nonce to ESI for Elegant Themes. * **Cloud** Able to redetect cloud nodes now. * **Img_optm** Fixed stale data in redirected links. * **Lazyload** CSS class `litespeed_lazyloaded` is now appended to HTML body after lazyload is finished. (@Adam Wilson) * **Cache** Default drop qs values. (@gijo Varghese) * **LQIP** Show all LQIP images in Media column. * **CDN** Can now support custom REST API prefix other than wp-json. (#174 @therealgilles) * **IAPI** Used REST for notify/destroy/check_img; Removed callback passive/aggreesive IAPI func * **CSSJS** Saved all static files to litespeed folder; Uninstallation will remove static cache folder too; Reduced .htaccess rules by serving CSS/JS directly. * **Object** Fixed override different ports issue. (@timofeycom #ISSUE178) * **Conf** DB Tables will now only create when activating/upgrading/changing settings. * **DB** Simplified table operation funcs. * **CSSJS** Bypassed CSS/JS generation to return 404 if file is empty (@grubyy) * **CSSJS** Inline JS defer will not conflict with JS inline optm anymore. * **CDN** settings will not be overwritten by primary settings in network anymore. (@rudi Khoury) * **OPcache** Purged all opcache when updating cache file. (@closte #170) * **CLI** CLI cmd renamed. * **CLI** Well-formatted table to show all options. * **Purge** Only purge related posts that have a status of "published" to avoid unnecessary "draft" purges. (@Jakub Knytl) * **GUI** Removed basic/adv mode for settings. Moved non-cache settings to its own menu. * **Htaccess** Protected .htaccess.bk file. Only kept one backup. (@teflonmann) * **Crawler** Crawler cookie now support `_null` as empty value. * **Crawler** Avoid crawler PHP fatal error on Windows OS. (@technisolutions) * **Admin** Simplified admin setting logic. * **Conf** Multi values settings now uniformed to multi lines for easier setting. * **Conf** New preset default data file `data/consts.default.ini`. * **Conf** Config setting renamed and uniformed. * **Conf** Dropped `Conf::option()`. Used `Conf::val()` instead. * **Conf** Improved conf initialization and upgrade conversion workflow. * **Core** Code base refactored. New namespace LiteSpeed. * **API** New API: iframe lazyload exclude filter. * **GUI** human readable seconds. (@MarkCanada) * **API** API refactored. * NOTE: All 3rd party plugins that are using previous APIs, especially `LiteSpeed_Cache_API`, need to be adjusted to the latest one. Same for ESI blocks.* ESI shortcode doesn't change. * **API** New hook `litespeed_update_confs` to settings update. * **API** New Hooks `litespeed_frontend_shortcut` and `litespeed_backend_shortcut` for dropdown menu. (@callaloo) * **API** Removed `litespeed_option_*` hooks. Use `litespeed_force_option` hook insteadly * **API** Renamed `litespeed_force_option` to `litespeed_conf_force`. * **API** Removed function `litespeed_purge_single_post`. * **REST** New rest API to fetch public IP. * **GUI** Hiding Cloudflare/Object Cache/Cloud API key credentials. (@menathor) * **GUI** Renamed all backend link tag from lscache to litespeed. * **GUI** fixed duplicated form tag. * **GUI** Fix cron doc link. (@arnab Mohapatra) * **GUI** Frontend adminbar menu added `Purge All` actions. (@Monarobase) * **GUI** Localized vue.js to avoid CloudFlare cookie. (@politicske) * **GUI** Always show optm column in Media Library for future single row optm operation. (@mikeyhash) * **GUI** Displayed TTL range below the corresponding setting. * **GUI** GUI refactored. * **Debug** Report can now append notes. * **3rd** Default added parallax-image to webp replacement for BB. * **3rd** User Switching plugin compatibility. (@robert Staddon) * **3rd** Beaver Builder plugin compatibility with v3.0. * **3rd** Avada plugin compatibility w/ BBPress. (@pimg) * **3rd** WooCommerce PayPal Checkout Gateway compatibility. (#960642 @Glen Cabusas) * **Network** Fixed potential timeout issue when containing a large volume of sites. (@alican532) * **Debug** `Disable All Features` now will see the warning banner if ON. * **Debug** Dropped `log filters` section. * **Debug** Debug and Tools sections combined into new `Toolbox` section. * 🐞**Crawler** Multi sites will now use separate sitemap even when `Use Primary Site` is ON. (@mrhuynhanh) * 🐞**Img_optm** Fixed large volume image table storage issue. (#328956) * 🐞 **Cloud** Cloud callback hash validation fixed OC conflict. (@pbpiotr) * 🎊 Any user that had the contribution to our WP community or changelog (even just bug report/feedback/suggestion) can apply for extra credits in QUIC.cloud. = 2.9.9.2 - Nov 24 2019 = * 🌱**GUI** New settings to limit News Feed to plugin page only. = 2.9.9.1 - Nov 18 2019 = * 🌱**Env** Environment Report can now append a passwordless link for support access without wp-admin password. * **Admin** The latest v3.0 beta test link may now be shown on the admin page when it's available. * **3rd** Compatibility with [DoLogin Security](https://wordpress.org/plugins/dologin/). * 🐞**ESI** Fixed a failure issue with Vary Group save. (@rafasshop) * 🐞**3rd** In browsers where WebP is not supported, Divi image picker will no longer serve WebP. (@Austin Tinius) = 2.9.9 - Oct 28 2019 = * Core: Preload all classes to avoid getting error for upcoming v3.0 upgrade. * Object: Improved compatibility with upcoming v3.0 release. * ESI: Unlocked ESI for OLS in case OLS is using QUIC.cloud CDN which supports ESI. * 3rd: Elementor Edit button will now show when ESI enabled. (#PR149 #335322 @maxgorky) * 🐞Media: Fixed missing Media optimization column when Admin role is excluded from optimization in settings. (@mikeyhash @pako69 @dgilfillan) = 2.9.8.7 - Oct 11 2019 = * 3rd: Enhanced WP stateless compatibility. (#PR143) * 3rd: Fixed a PHP warning caused by previous PR for AMP. (#PR176) = 2.9.8.6 - Sep 24 2019 = * 3rd: Bypassed page optimizations for AMP. (#359748 #PR169) * GUI: Firefox compatibility with radio button state when reloading pages. (#288940 #PR162) * GUI: Updated Slack invitation link. (#PR173) = 2.9.8.5 - Aug 21 2019 = * CCSS: Removed potential PHP notice when getting post_type. (@amcgiffert) * CDN: Bypassed CDN replacement on admin page when adding media to page/post. (@martin_bailey) * 🐞Media: Fixed inability to update or destroy postmeta data for child images. (#167713) = 2.9.8.4 - Jul 25 2019 = * Object: Increased compatibility with phpredis 5.0. * Object: Appended `wc_session_id` to default Do Not Cache Groups setting to avoid issue where WooCommerce cart items were missing when Object Cache is used. NOTE: Existing users must add `wc_session_id` manually! (#895333) * CSS: Added null onload handler for CSS async loading. (@joejordanbrown) * 🕷️: Increased crawler timeout to avoid wrongly adding a URL to the blacklist. * 3rd: WooCommerce Advanced Bulk Edit can now purge cache automatically. = 2.9.8.3 - Jul 9 2019 = * CSS: Enhanced the CSS Minify compatibility for CSS with missing closing bracket syntax errors. (@fa508210020) * 🕷️: Crawler now supports both cookie and no-cookie cases. (@tabare) * CCSS: Enhanced compatibility with requested pages where meta info size exceeds 8k. (@Joe B) * CCSS: No longer processing "font" or "import" directives as they are not considered critical. (@Ankit @Joe B) * IAPI: Removed IPv6 from all servers to avoid invalid firewall whitelist. = 2.9.8.2 - Jun 17 2019 = * 🔥🐞 3rd: Fixed PHP 5.3 compatibility issue with Facetwp. = 2.9.8.1 - Jun 17 2019 = * 3rd: Set ESI template hook priority to highest number to prevent ESI conflict with Enfold theme. (#289354) * 3rd: Improved Facetwp reset button compatibility with ESI. (@emilyel) * 3rd: Enabled user role change to fix duplicate login issue for plugins that use alternative login processes. (#114165 #717223 @sergiom87) * GUI: Wrapped static text with translate function. (@halilemreozen) = 2.9.8 - May 22 2019 = * Core: Refactored loading priority so user related functions & optimization features are set after user initialization. (#717223 #114165 #413338) * Media: Improved backup file calculation query to prevent out-of-memory issue. * Conf: Feed cache now defaults to ON. * API: Fully remote attachment compatibility API of image optimization now supported. * 🕷️: Bypassed vary change for crawler; crawler can now simulate default vary cookie. * ESI: Refactored ESI widget. Removed `widget_load_get_options()` function. * ESI: Changed the input name of widget fields in form. * 3rd: Elementor can now save ESI widget settings in frontend builder. * 3rd: WP-Stateless compatibility. * IAPI: Image optimization can now successfully finish the destroy process with large volume images with automatic continual mode. * 🐞CDN: Fixed issue with Load JQuery Remotely setting where WP 5.2.1 provided an unexpected jQuery version. * 🐞3rd: Login process now gets the correct role; fixed double login issue. = 2.9.7.2 - May 2 2019 = * Conf: Enhanced compatibility when an option is not properly initialized. * Conf: Prevent non-array instance in widget from causing 500 error. (#210407) * CCSS: Increase CCSS generation timeout to 60s. * Media: Renamed lazyload CSS class to avoid conflicts with other plugins. (@DynamoProd) * JS: Improved W3 validator. (@istanbulantik) * QUIC: Synced cache tag prefix for static files cache. * ESI: Restored query strings to ESI admin bar for accurate rendering. (#977284) * ESI: Tweaked ESI init priority to honor LITESPEED_DISABLE_ALL const. ESI will now init after plugin loaded. * 🐞ESI: No longer initialize ESI if ESI option is OFF. * API: New "Disable All" API function. * API: New "Force public cache" API function. * 🐞Vary: Fixed an issue with saving vary groups. * 🐞IAPI: Fixed an issue where image md5 validation failed due to whitespace in the image path. * 🐞3rd: Bypass all optimization/ESI/Cache features when entering Divi Theme Builder frontend editor. * 🐞3rd: Fixed an issue where DIVI admin bar exit button didn't work when ESI was ON. = 2.9.7.1 - Apr 9 2019 = * Purge: Purge All no longer includes Purge CCSS/Placeholder. * 3rd: Divi Theme Builder no longer experiences nonce expiration issues in the contact form widget. (#475461) = 2.9.7 - Apr 1 2019 = * 🌱🌱🌱 QUIC.cloud CDN feature. Now Apache/Nginx can use LiteSpeed cache freely. = 2.9.6 - Mar 27 2019 = * 🌱IAPI: Appended XMP to `Preserve EXIF data` setting. WebP will now honor this setting. (#902219) * Object: Fixed SASL connection with LSMCD. * ESI: Converted ESI URI parameters to JSON; Added ESI validation. * Import: Import/Export will now use JSON format. Please re-export any backed up settings. Previous backup format is no longer recognized. * Media: WebP replacement will honor `Role Excludes` setting now. (@mfazio26) * Data: Forbid direct visit to const.default.ini. * Utility: Can handle WHM passed in `LITESPEED_ERR` constant now. * IAPI: Communicate via JSON encoding. * IAPI: IAPI v2.9.6. = 2.9.5 - Mar 14 2019 = * 🌱 Auto convert default WordPress nonce to ESI to avoid expiration. * 🌱 API: Ability to easily convert custom nonce to ESI by registering `LiteSpeed_Cache_API::nonce_action`. * OPTM: Tweaked redundant attr `data-no-optimize` in func `_analyse_links` to `data-ignore-optimize` to offer the API to bypass optimization but still move src to top of source code. * API: Renamed default nonce ESI ID from `lscwp_nonce_esi` to `nonce`. * API: Added WebP generation & validation hook API. (@alim #wp-stateless) * API: Added hook to bypass vary commenter check. (#wpdiscuz) * Doc: Clarified Cache Mobile description. (@JohnnyNguyen) * Doc: Replaced incorrect link in description. (@JohnnyNguyen) * 3rd: Improved wpDiscuz compatibility. * 🐞3rd: Fixed Divi Theme Builder comment compatibility on non-builder pages. (#410919) * 3rd: Added YITH ESI adjustment. = 2.9.4.1 - Feb 28 2019 = * 🔥🐞Tag: Fixed issue where unnecessary warning potentially displayed after upgrade process when object cache is enabled. = 2.9.4 - Feb 27 2019 = * 🐞REST: New REST class with better WP5 Gutenberg and internal REST call support when ESI is embedded. * ESI: ESI block ID is now in plain text in ESI URL parameters. * 🐞ESI: Fixed a redundant ESI 301 redirect when comma is in ESI URL. * ESI: REST call can now parse shortcodes in ESI. * API: Changed ESI `parse_esi_param()` function to private and `load_esi_block` function to non-static. * API: Added `litespeed_is_json` hook for buffer JSON conversion. * GUI: Prepended plugin name to new version notification banner. * 3rd: WPML multi domains can now be handled in optimization without CDN tricks. = 2.9.3 - Feb 20 2019 = * ESI: ESI shortcodes can now be saved in Gutenberg editor. * ESI: ESI now honors the parent page JSON data type to avoid breaking REST calls (LSWS 5.3.6+). * ESI: Added is_json parameter support for admin_bar. * ESI: Simplified comment form code. * 3rd: Better page builder plugin compatibility within AJAX calls. * 3rd: Compatibility with FacetWP (LSWS 5.3.6+). * 3rd: Compatibility with Beaver Builder. * Debug: Added ESI buffer content to log. * Tag: Only append blog ID to cache tags when site is part of a network. * IAPI: Optimized database query for pulling images. * GUI: Added more plugin version checking for better feature compatibility. * GUI: Ability to bypass non-critical banners with the file .litespeed_no_banner. * Media: Background image WebP replacement now supports quotes around src. = 2.9.2 - Feb 5 2019 = * API: Add a hook `litespeed_esi_shortcode-*` for ESI shortcodes. * 3rd: WooCommerce can purge products now when variation stock is changed. * 🐞🕷️: Forced HTTP1.1 for crawler due to a CURL HTTP2 bug. = 2.9.1 - Jan 25 2019 = * Compatibility: Fixed fatal error for PHP 5.3. * Compatibility: Fixed PHP warning in htmlspecialchars when building URLs. (@souljahn2) * Media: Excluded invalid image src from lazyload. (@andrew55) * Optm: Improved URL compatibility when detecting closest cloud server. * ESI: Supported JSON format comment format in ESI with `is_json` parameter. * API: Added filters to CCSS/CSS/JS content. (@lhoucine) * 3rd: Improved comment compatibility with Elegant Divi Builder. * IAPI: New Europe Image Optimization server (EU5). Please whitelist the new [IAPI IP List](https://wp.api.litespeedtech.com/ips). * GUI: No longer show banners when `Disable All` in `Debug` is ON. (@rabbitwordpress) * GUI: Fixed button style for RTL languages. * GUI: Removed unnecessary translation in report. * GUI: Updated readme wiki links. * GUI: Fixed pie styles in image optimization page. = 2.9 - Dec 31 2018 = * 🌱Media: Lazy Load Image Classname Excludes. (@thinkmedia) * 🌱: New EU/AS cloud servers for faster image optimization handling. * 🌱: New EU/AS cloud servers for faster CCSS generation. * 🌱: New EU/AS cloud servers for faster responsive placeholder generation. * 🌱Conf: Ability to set single options via link. * 🌱Cache: Ability to add custom TTLs to Force Cache URIs. * Purge: Added post type to Purge tags. * Purge: Redefined CCSS page types. * Core: Using Exception for .htaccess R/W. * IAPI: New cloud servers added. Please whitelist the new [IAPI IP List](https://wp.api.litespeedtech.com/ips). * Optm: Trim BOM when detecting if the page is HTML. * GUI: Added PageSpeed Score comparison into promotion banner. * GUI: Refactored promotion banner logic. * GUI: Removed page optimized comment when ESI Silence is requested. * GUI: WHM transient changed to option instead of transient when storing. * GUI: Appending more descriptions to CDN filetype setting. * IAPI: Removed duplicate messages. * IAPI: Removed taken_failed/client_pull(duplicated) status. * Debug: Environment report no longer generates hash for validation. * 3rd: Non-cacheable pages no longer punch ESI holes for Divi compatibility. * 🐞Network: Added slashes for mobile rules when activating plugin. * 🐞CCSS: Eliminated a PHP notice when appending CCSS. = 2.8.1 - Dec 5 2018 = * 🐞🕷️: Fixed an activation warning related to cookie crawler. (@kacper3355 @rastel72) * 🐞Media: Replace safely by checking if pulled images is empty or not first. (@Monarobase) * 3rd: Shortcode ESI compatibility with Elementor. = 2.8 - Nov 30 2018 = * 🌱: ESI shortcodes. * 🌱: Mobile crawler. * 🌱: Cookie crawler. * API: Can now add `_litespeed_rm_qs=0` to bypass Remove Query Strings. * Optm: Removed error log when minify JS failed. * 🐞Core: Fixed a bug that caused network activation PHP warning. * Media: Removed canvas checking for WebP to support TOR. (@odeskumair) * Media: Eliminated potential image placeholder PHP warning. * 3rd: Bypassed Google recaptcha from Remove Query Strings for better compatibility. * IAPI: Showed destroy timeout details. * Debug: Moved Google Fonts log to advanced level. * GUI: Replaced all Learn More links for functions. * GUI: Cosmetic updates including Emoji. * 🕷️: Removed duplicated data in sitemap and blacklist. = 2.7.3 - Nov 26 2018 = * Optm: Improved page render speed with Web Font Loader JS library for Load Google Fonts Asynchronously. * Optm: Directly used JS library files in plugin folder instead of short links `/min/`. * Optm: Handled exceptions in JS optimization when meeting badly formatted JS. * 3rd: Added Adobe Lightroom support for NextGen Gallery. * 3rd: Improved Postman app support for POST JSON requests. * IAPI: US3 server IP changed to 68.183.60.185. = 2.7.2 - Nov 19 2018 = * 🌱: Auto Upgrade feature. * CDN: Bypass CDN for cron to avoid WP jQuery deregister warning. = 2.7.1 - Nov 15 2018 = * 🌱CLI: Ability to set CDN mapping by `set_option litespeed-cache-cdn_mapping[url][0] https://url`. * 🌱CDN: Ability to customize default CDN mapping data in default.ini. * 🌱API: Default.ini now supports both text-area items and on/off options. * Vary: Refactored Vary and related API. * Vary: New hook to manipulate vary cookies value. * Core: Activation now can generate Object Cache file. * Core: Unified Object Cache/rewrite rules generation process across activation/import/reset/CLI. * Core: Always hook activation to make activation available through the front end. * 🐞IAPI: Fixed a bug where environment report gave incorrect image optimization data. * 🐞OLS: Fixed a bug where login cookie kept showing a warning on OpenLiteSpeed. * 🐞Core: Fixed a bug where Import/Activation/CLI was missing CDN mapping settings. * API: Filters `litespeed_cache_media_lazy_img_excludes/litespeed_optm_js_defer_exc` passed-in parameter is changed from string to array. = 2.7 - Nov 2 2018 = * 🌱: Separate Purge log for better debugging. * 3rd: Now fully compatible with WPML. * IAPI: Sped up Image Optimization workflow. * GUI: Current IP now shows in Debug settings. * GUI: Space separated placeholder queue list for better look. * IAPI: EU3 server IP changed to 165.227.131.98. = 2.6.4.1 - Oct 25 2018 = * 🔥🐞Media: Fixed a bug where the wrong table was used in the Image Optimization process. * IAPI: IAPI v2.6.4.1. = 2.6.4 - Oct 24 2018 = * 🌱: Ability to create custom default config options per hosting company. * 🌱: Ability to generate mobile Critical CSS. * 🐞Media: Fixed a bug where Network sites could incorrectly override optimized images. * 🐞CDN: Fixed a bug where image URLs containing backslashes were matched. * Cache: Added default Mobile UA config setting. * GUI: Fixed unknown shortcut characters for non-English languages Setting tabs. = 2.6.3 - Oct 18 2018 = * 🌱: Ability to Reset All Options. * 🌱CLI: Added new `lscache-admin reset_options` command. * GUI: Added shortcuts for more of the Settings tabs. * Media: Updated Lazy Load JS library to the most recent version. * There is no longer any need to explicitly Save Settings upon Import. * Remove Query String now will remove *all* query strings in JS/CSS static files. * IAPI: Added summary info to debug log. = 2.6.2 - Oct 11 2018 = * Setting: Automatically correct invalid numeric values in configuration settings upon submit. * 🐞Media: Fixed the issue where iframe lazy load was broken by latest Chrome release. (@ofmarconi) * 🐞: Fixed an issue with Multisite where subsites failed to purge when only primary site has WooCommerce . (@kierancalv) = 2.6.1 - Oct 4 2018 = * 🌱: Ability to generate separate Critical CSS Cache for Post Types & URIs. * API: Filter `litespeed_frontend_htaccess` for frontend htaccess path. * Media: Removed responsive placeholder generation history to save space. = 2.6.0.1 - Sep 24 2018 = * 🔥🐞: Fixed an issue in responsive placeholder generation where redundant history data was being saved and using a lot of space. = 2.6 - Sep 22 2018 = * Vary: Moved `litespeed_cache_api_vary` hook outside of OLS condition for .htaccess generation. * CDN: Trim spaces in original URL of CDN setting. * API: New filter `litespeed_option_` to change all options dynamically. * API: New `LiteSpeed_Cache_API::force_option()` to change all options dynamically. * API: New `LiteSpeed_Cache_API::vary()` to set default vary directly for easier compaitiblity with WPML WooCommerce Multilingual. * API: New `LiteSpeed_Cache_API::nonce()` to safely and easily allow caching of wp-nonce. * API: New `LiteSpeed_Cache_API::hook_vary_add()` to add new vary. * Optm: Changed HTML/JS/CSS optimization options assignment position from constructor to `finalize()`. * Doc: Added nonce to FAQ and mentioned nonce in 3rd Party Compatibility section. * GUI: Moved inline minify to under html minify due to the dependency. * 3rd: Cached Aelia CurrencySwitcher by default. * 🐞: Fixed issue where enabling remote JQuery caused missing jquery-migrate library error. = 2.5.1 - Sep 11 2018 = * 🌱 Responsive placeholder. (@szmigieldesign) * Changed CSS::ccss_realpath function scope to private. * 🐞 Detected JS filetype before optimizing to avoid PHP source conflict. (@closte #50) = 2.5 - Sep 6 2018 = * [IMPROVEMENT] CLI can now execute Remove Original Image Backups. (@Shon) * [UPDATE] Fixed issue where WP-PostViews documentation contained extra slashes. (#545638) * [UPDATE] Check LITESPEED_SERVER_TYPE for more accurate LSCache Disabled messaging. * [IAPI] Fixed a bug where optimize/fetch error notification was not being received. (@LucasRolff) = 2.4.4 - Aug 31 2018 = * [NEW] CLI can now support image optimization. (@Shon) * [IMPROVEMENT] GUI Cron/CLI will not create admin message anymore. * [UPDATE] Media Fixed a PHP notice that appeared when pulling optimized images. * [UPDATE] Fixed a PHP notice when detecting origin of ajax call. (@iosoft) * [DEBUG] Debug log can now log referer URL. * [DEBUG] Changes to options will now be logged. = 2.4.3 - Aug 27 2018 = * [NEW] Media Ability to inline image lazyload JS library. (@Music47ell) * [IMPROVEMENT] Media Deleting images will now clear related optimization file & info too. * [IMPROVEMENT] Media Non-image postfix data will now be bypassed before sending image optimization request. * [BUGFIX] CDN CDN URL will no longer be replaced during admin ajax call. (@pankaj) * [BUGFIX] CLI WPCLI can now save options without incorrectly clearing textarea items. (@Shon) * [GUI] Moved Settings above Manage on the main menu. = 2.4.2 - Aug 21 2018 = * [IMPROVEMENT] Media Sped up Image Optimization process by replacing IAPI server pull communication. * [IMPROVEMENT] Media Ability to delete optimized WebP/original image by item in Media Library. (@redgoodapple) * [IMPROVEMENT] CSS Optimize Generate new optimized CSS name based on purge timestamp. Allows CSS cache to be cleared for visitors. (@bradbrownmagic) * [IMPROVEMENT] API added litespeed_img_optm_options_per_image. (@gintsg) * [UPDATE] Stopped showing "No Image Found" message when all images have finished optimization. (@knutsp) * [UPDATE] Improved a PHP warning when saving settings. (@sergialarconrecio) * [UPDATE] Changed backend adminbar icon default behavior from Purge All to Purge LSCache. * [UPDATE] Clearing CCSS cache will clear unfinished queue too. * [UPDATE] Added "$" exact match when adding URL by frontend adminbar dropdown menu, to avoid affecting any sub-URLs. * [UPDATE] Fixed IAPI error message showing array bug. (@thiomas) * [UPDATE] Debug Disable All will do a Purge All. * [UPDATE] Critical CSS server IP changed to 142.93.3.57. * [GUI] Showed plugin update link for IAPI version message. * [GUI] Bypassed null IAPI response message. * [GUI] Grouped related settings with indent. * [IAPI] Added 503 handler for IAPI response. * [IAPI] IAPI v2.4.2. * [IAPI] Center Server IP Changed from 34.198.229.186 to 142.93.112.87. = 2.4.1 - Jul 19 2018 = * [NEW FEATURE] Media Auto Level Up. Auto refill credit. * [NEW FEATURE] Media Auto delete original backups after pulled. (@borisov87 @JMCA2) * [NEW FEATURE] Media Auto request image optimization. (@ericsondr) * [IMPROVEMENT] Media Fetch 404 error will notify client as other errors. * [IMPROVEMENT] Media Support WebP for PageSpeed Insights. (@LucasRolff) * [BUGFIX] CLI Fixed the issue where CLI import/export caused certain textarea settings to be lost. (#767519) * [BUGFIX] CSS Optimize Fixed the issue that duplicated optimized CSS and caused rapid expansion of CSS cache folder. * [GUI] Media Refactored operation workflow and interface. * [UPDATE] Media Set timeout seconds to avoid pulling timeout. (@Jose) * [UPDATE] CDNFixed the notice when no path is in URL. (@sabitkamera) * [UPDATE] Media Auto correct credits when pulling. * [UPDATE] GUI Removed redundant double quote in gui.cls. (@DaveyJake) * [IAPI] IAPI v2.4.1. * [IAPI] Allow new error status notification and success message from IAPI. = 2.4 - Jul 2 2018 = * [NEW FEATURE] Media Added lossless optimization. * [NEW FEATURE] Media Added Request Original Images ON/OFF. * [NEW FEATURE] Media Added Request WebP ON/OFF. (@JMCA2) * [IMPROVEMENT] Media Improved optimization tools to archive maximum compression and score. * [IMPROVEMENT] Media Improved speed of image pull. * [IMPROVEMENT] Media Automatically recover credit after pulled. * [REFACTOR] Config Separated configure const class. * [BUGFIX] Report Report can be sent successfully with emoji now. (@music47ell) * [IAPI] New Europe Image Optimization server (EU3/EU4). * [IAPI] New America Image Optimization server (US3/US4/US5/US6). * [IAPI] New Asian Image Optimization server (AS3). * [IAPI] Refactored optimization process. * [IAPI] Increased credit limit. * [IAPI] Removed request interval limit. * [IAPI] IAPI v2.4. * We strongly recommended that you re-optimize your image library to get a better compression result. = 2.3.1 - Jun 18 2018 = * [IMPROVEMENT] New setting to disable Generate Critical CSS. (@cybmeta) * [IMPROVEMENT] Added filter to can_cdn/can_optm check. (@Jacob) * [UPDATE] *Critical CSS* Added 404 css. Limit cron interval. * [UPDATE] AJAX will not bypass CDN anymore by default. (@Jacob) * [GUI] Show Disable All Features warning if it is on in Debug tab. = 2.3 - Jun 13 2018 = * [NEW FEATURE] Automatically generate critical CSS. (@joeee @ivan_ivanov @3dseo) * [BUGFIX] "Mark this page as..." from dropdown menu will not reset settings anymore. (@cbratschi) = 2.2.7 - Jun 4 2018 = * [IMPROVEMENT] Improved redirection for manual image pull to avoid too many redirections warning. * [IAPI] Increased credit limit. * [BUGFIX] Fixed 503 error when enabling log filters in Debug tab. (#525206) * [UPDATE] Improve compatibility when using sitemap url on servers with allow_url_open off. * [UPDATE] Removed Crawler HTTP2 option due to causing no-cache blacklist issue for certain environments. * [UPDATE] Privacy policy can be now translated. (@Josemi) * [UPDATE] IAPI Increased default img request max to 3000. = 2.2.6 - May 24 2018 = * [NEW FEATURE] Original image backups can be removed now. (@borisov87 @JMCA2) * [BUGFIX] Role Excludes in Tuning tab can save now. (@pako69) * [UPDATE] Added privacy policy support. = 2.2.5 - May 14 2018 = * [IAPI] Image Optimization New Asian Image Optimization server (AS2). * [INTEGRATION] Removed wpForo 3rd party file. (@massimod) = 2.2.4 - May 7 2018 = * [IMPROVEMENT] Improved compatibility with themes using the same js_min library. (#129093 @Darren) * [BUGFIX] Fixed a bug when checking image path for dynamic files. (@miladk) * [INTEGRATION] Compatibility with Universal Star Rating. (@miladk) = 2.2.3 - Apr 27 2018 = * [NEW FEATURE] WebP For Extra srcset setting in Media tab. (@vengen) * [REFACTOR] Removed redundant LS consts. * [REFACTOR] Refactored adv_cache generation flow. * [BUGFIX] Fixed issue where inline JS minify exception caused a blank page. (@oomskaap @kenb1978) * [UPDATE] Changed HTTP/2 Crawl default value to OFF. * [UPDATE] Added img.data-src to default WebP replacement value for WooCommerce WebP support. * [UPDATE] Detached crawler from LSCache LITESPEED_ON status. * [API] Improved ESI API to honor the cache control in ESI wrapper. * [API] Added LITESPEED_PURGE_SILENT const to bypass the notification when purging * [INTEGRATION] Fixed issue with nonce expiration when using ESI API. (#923505 @Dan) * [INTEGRATION] Improved compatibility with Ninja Forms by bypassing non-javascript JS from inline JS minify. * [INTEGRATION] Added a hook for plugins that change the CSS/JS path e.g. Hide My WordPress. = 2.2.2 - Apr 16 2018 = * [NEW FEATURE] WebP Attribute To Replace setting in Media tab. (@vengen) * [IMPROVEMENT] Generate adv_cache file automatically when it is lost. * [IMPROVEMENT] Improved compatibility with ajax login. (@veganostomy) * [UPDATE] Added object cache lib check in case user downgrades LSCWP to non-object-cache versions. * [UPDATE] Avoided infinite loop when users enter invalid hook values in Purge All Hooks settings. * [UPDATE] Updated log format in media&cdn class. * [UPDATE] Added more items to Report. = 2.2.1 - Apr 10 2018 = * [NEW FEATURE] Included Directories setting in CDN tab. (@Dave) * [NEW FEATURE] Purge All Hooks setting in Advanced tab. * [UPDATE] Added background-image WebP replacement support. (@vengen) * [UPDATE] Show recommended values for textarea items in settings. * [UPDATE] Moved CSS/JS optimizer log to Advanced level. * [INTEGRATION] Added WebP support for Avada Fusion Sliders. (@vengen) = 2.2.0.2 - Apr 3 2018 = * [HOTFIX] Object Cache Fixed the PHP warning caused by previous improvement to Object Cache. = 2.2.0.1 - Apr 3 2018 = * [HOTFIX] Object parameter will no longer cause warnings to be logged for Purge and Cache classes. (@kelltech @khrifat) * [UPDATE] Removed duplicated del_file func from Object Cache class. * [BUGFIX] `CLI` no longer shows 400 error upon successful result. = 2.2 - Apr 2 2018 = * [NEW FEATURE] Debug Disable All Features setting in Debug tab. (@monarobase) * [NEW FEATURE] Cache Force Cacheable URIs setting in Excludes tab. * [NEW FEATURE] Purge Purge all LSCache and other caches in one link. * [REFACTOR] Purge Refactored Purge class. * [BUGFIX] Query strings in DoNotCacheURI setting now works. * [BUGFIX] Cache Mobile cache compatibility with WebP vary. (@Shivam #987121) * [UPDATE] Purge Moved purge_all to Purge class from core class. * [API] Set cacheable/Set force cacheable. (@Jacob) = 2.1.2 - Mar 28 2018 = * [NEW FEATURE] Image Optimization Clean Up Unfinished Data feature. * [IAPI] IAPI v2.1.2. * [IMPROVEMENT] CSS/JS Minify Reduced loading time significantly by improving CSS/JS minify loading process. (@kokers) * [IMPROVEMENT] CSS/JS Minify Cache empty JS Minify content. (@kokers) * [IMPROVEMENT] Cache Cache 301 redirect when scheme/host are same. * [BUGFIX] Media Lazy load now can support WebP. (@relle) * [UPDATE] CSS/JS Optimize Serve static files for CSS async & lazy load JS library. * [UPDATE] Report Appended Basic/Advanced View setting to Report. * [UPDATE] CSS/JS Minify Removed zero-width space from CSS/JS content. * [GUI] Added Purge CSS/JS Cache link in Admin. = 2.1.1.1 - Mar 21 2018 = * [BUGFIX] Fixed issue where activation failed to add rules to .htaccess. * [BUGFIX] Fixed issue where 304 header was blank on feed page refresh. = 2.1.1 - Mar 20 2018 = * [NEW FEATURE] Browser Cache Unlocked for non-LiteSpeed users. * [IMPROVEMENT] Image Optimization Fixed issue where images with bad postmeta value continued to show in not-yet-requested queue. = 2.1 - Mar 15 2018 = * [NEW FEATURE] Image Optimization Unlocked for non-LiteSpeed users. * [NEW FEATURE] Object Cache Unlocked for non-LiteSpeed users. * [NEW FEATURE] Crawler Unlocked for non-LiteSpeed users. * [NEW FEATURE] Database Cleaner and Optimizer Unlocked for non-LiteSpeed users. * [NEW FEATURE] Lazy Load Images Unlocked for non-LiteSpeed users. * [NEW FEATURE] CSS/JS/HTML Minify/Combine Optimize Unlocked for non-LiteSpeed users. * [IAPI] IAPI v2.0. * [IAPI] Increased max rows prefetch when client has additional credit. * [IMPROVEMENT] CDN Multiple domains may now be used. * [IMPROVEMENT] Report Added WP environment constants for better debugging. * [REFACTOR] Separated Cloudflare CDN class. * [BUGFIX] Image Optimization Fixed issue where certain MySQL version failed to create img_optm table. (@philippwidmer) * [BUGFIX] Image Optimization Fixed issue where callback validation failed when pulling and sending request simultaneously. * [GUI] Added Slack community banner. * [INTEGRATION] CDN compatibility with WPML multiple domains. (@egemensarica) = 2.0 - Mar 7 2018 = * [NEW FEATURE] Image Optimization Added level up guidance. * [REFACTOR] Image Optimization Refactored Image Optimization class. * [IAPI] Image Optimization New European Image Optimization server (EU2). * [IMPROVEMENT] Image Optimization Manual pull action continues pulling until complete. * [IMPROVEMENT] CDN Multiple CDNs can now be randomized for a single resource. * [IMPROVEMENT] Image Optimization Improved compatibility of long src images. * [IMPROVEMENT] Image Optimization Reduced runtime load. * [IMPROVEMENT] Image Optimization Avoid potential loss/reset of notified images status when pulling. * [IMPROVEMENT] Image Optimization Avoid duplicated optimization for multiple records in Media that have the same image source. * [IMPROVEMENT] Image Optimization Fixed issue where phantom images continued to show in not-yet-requested queue. * [BUGFIX] Core Improved compatibility when upgrading outside of WP Admin. (@jikatal @TylorB) * [BUGFIX] Crawler Improved HTTP/2 compatibility to avoid erroneous blacklisting. * [BUGFIX] Crawler Changing Delay setting will use server variable for min value validation if set. * [UPDATE] Crawler Added HTTP/2 protocol switch in the Crawler settings. * [UPDATE] Removed unnecessary translation strings. * [GUI] Display translated role group name string instead of English values. (@Richard Hordern) * [GUI] Added Join LiteSpeed Slack link. * [GUI] Import / Export Cosmetic changes to Import Settings file field. * [INTEGRATION] Improved compatibility with WPML Media for Image Optimization. (@szmigieldesign) = 1.9.1.1 - February 20 2018 = * [Hotfix] Removed empty crawler when no role simulation is set. = 1.9.1 - February 20 2018 = * [NEW FEATURE] Role Simulation crawler. * [NEW FEATURE] WebP multiple crawler. * [NEW FEATURE] HTTP/2 support for crawler. * [BUGFIX] Fixed a js bug with the auto complete mobile user agents field when cache mobile is turned on. * [BUGFIX] Fixed a constant undefined warning after activation. * [GUI] Sitemap generation settings are no longer hidden when using a custom sitemap. = 1.9 - February 12 2018 = * [NEW FEATURE] Inline CSS/JS Minify. * [IMPROVEMENT] Removed Composer vendor to thin the plugin folder. * [UPDATE] Tweaked H2 to H1 in Admin headings for accessibility. (@steverep) * [GUI] Added Mobile User Agents to basic view. * [GUI] Moved Object Cache & Browser Cache from Cache tab to Advanced tab. * [GUI] Moved LSCache Purge All from Adminbar to dropdown menu. = 1.8.3 - February 2 2018 = * [NEW FEATURE] Crawler server variable limitation support. * [IMPROVEMENT] Added Store Transients option to fix transients missing issue when Cache Wp-Admin setting is OFF. * [IMPROVEMENT] Tweaked ARIA support. (@steverep) * [IMPROVEMENT] Used strpos instead of strncmp for performance. (@Zach E) * [BUGFIX] Transient cache can now be removed when the Cache Wp-Admin setting is ON in Object Cache. * [BUGFIX] Network sites can now save Advanced settings. * [BUGFIX] Media list now shows in network sites. * [BUGFIX] Show Crawler Status button is working again. * [UPDATE] Fixed a couple of potential PHP notices in the Network cache tab and when no vary group is set. * [GUI] Added Learn More link to all setting pages. = 1.8.2 - January 29 2018 = * [NEW FEATURE] Instant Click in the Advanced tab. * [NEW FEATURE] Import/Export settings. * [NEW FEATURE] Opcode Cache support. * [NEW FEATURE] Basic/Advanced setting view. * [IMPROVEMENT] Added ARIA support in widget settings. * [BUGFIX] Multiple WordPress instances with same Object Cache address will no longer see shared data. * [BUGFIX] WebP Replacement may now be set at the Network level. * [BUGFIX] Object Cache file can now be removed at the Network level uninstall. = 1.8.1 - January 22 2018 = * [NEW FEATURE] Object Cache now supports Redis. * [IMPROVEMENT] Memcached Object Cache now supports authorization. * [IMPROVEMENT] A 500 error will no longer be encountered when turning on Object Cache without the proper PHP extension installed. * [BUGFIX] Object Cache settings can now be saved at the Network level. * [BUGFIX] Mu-plugin now supports Network setting. * [BUGFIX] Fixed admin bar showing inaccurate Edit Page link. * [UPDATE] Removed warning information when no Memcached server is available. = 1.8 - January 17 2018 = * [NEW FEATURE] Object Cache. * [REFACTOR] Refactored Log class. * [REFACTOR] Refactored LSCWP basic const initialization. * [BUGFIX] Fixed Cloudflare domain search breaking when saving more than 50 domains under a single account. * [UPDATE] Log filter settings are now their own item in the wp-option table. = 1.7.2 - January 5 2018 = * [NEW FEATURE] Cloudflare API support. * [IMPROVEMENT] IAPI key can now be reset to avoid issues when domain is changed. * [BUGFIX] Fixed JS optimizer breaking certain plugins JS. * [UPDATE] Added cdn settings to environment report. * [GUI] Added more shortcuts to backend adminbar. * [INTEGRATION] WooCommerce visitors are now served from public cache when cart is empty. = 1.7.1.1 - December 29 2017 = * [BUGFIX] Fixed an extra trailing underscore issue when saving multiple lines with DNS Prefetch. * [UPDATE] Cleaned up unused dependency vendor files. = 1.7.1 - December 28 2017 = * [NEW FEATURE] Added DNS Prefetch setting on the Optimize page. * [NEW FEATURE] Added Combined File Max Size setting on the Tuning page. * [IMPROVEMENT] Improved JS/CSS minify to achieve higher page scores. * [IMPROVEMENT] Optimized JS/CSS files will not be served from private cache for OLS or with ESI off. * [UPDATE] Fixed a potential warning for new installations on the Settings page. * [UPDATE] Fixed an issue with guest users occasionally receiving PHP warnings. * [BUGFIX] Fixed a bug with the Improve HTTPS Compatibility setting failing to save. * Thanks to all of our users for your encouragement and support! Happy New Year! * PS: Lookout 2018, we're back! = 1.7 - December 22 2017 = * [NEW FEATURE] Drop Query Strings setting in the Cache tab. * [NEW FEATURE] Multiple CDN Mapping in the CDN tab. * [IMPROVEMENT] Improve HTTP/HTTPS Compatibility setting in the Advanced tab. * [IMPROVEMENT] Keep JS/CSS original position in HTML when excluded in setting. * [IAPI] Reset client level credit after Image Optimization data is destroyed. * [REFACTOR] Refactored build_input/textarea functions in admin_display class. * [REFACTOR] Refactored CDN class. * [GUI] Added a notice to Image Optimization and Crawler to warn when cache is disabled. * [GUI] Improved image optimization indicator styles in Media Library List. = 1.6.7 - December 15 2017 = * [IAPI] Added ability to scan for new image thumbnail sizes and auto-resend image optimization requests. * [IAPI] Added ability to destroy all optimization data. * [IAPI] Updated IAPI to v1.6.7. * [INTEGRATION] Fixed certain 3rd party plugins calling REST without user nonce causing logged in users to be served as guest. = 1.6.6.1 - December 8 2017 = * [IAPI] Limit first-time submission to one image group for test-run purposes. * [BUGFIX] Fixed vary group generation issue associated with custom user role plugins. * [BUGFIX] Fixed WooCommerce issue where logged-in users were erroneously purged when ESI is off. * [BUGFIX] Fixed WooCommerce cache miss issue when ESI is off. = 1.6.6 - December 6 2017 = * [NEW FEATURE] Preserve EXIF in Media setting. * [NEW FEATURE] Clear log button in Debug Log Viewer. * [IAPI] Fixed notified images resetting to previous status when pulling. * [IAPI] Fixed HTTPS compatibility for image optimization initialization. * [IAPI] An error message is now displayed when image optimization request submission is bypassed due to a lack of credit. * [IAPI] IAPI v1.6.6. * [IMPROVEMENT] Support JS data-no-optimize attribute to bypass optimization. * [GUI] Added image group wiki link. * [INTEGRATION] Improved compatibility with Login With Ajax. * [INTEGRATION] Added function_exists check for WooCommerce to avoid 500 errors. = 1.6.5.1 - December 1 2017 = * [HOTFIX] Fixed warning message on Edit .htaccess page. = 1.6.5 - November 30 2017 = * [IAPI] Manually pull image optimization action button. * [IAPI] Automatic credit system for image optimization to bypass unfinished image optimization error. * [IAPI] Notify failed images from LiteSpeed's Image Server. * [IAPI] Reset/Clear failed images feature. * [IAPI] Redesigned report page. * [REFACTOR] Moved pull_img logic from admin_api to media. * [BUGFIX] Fixed a compatibility issue for clients who have allow_url_open setting off. * [BUGFIX] Fixed logged in users sometimes being served from guest cache. * [UPDATE] Environment report is no longer saved to a file. * [UPDATE] Removed crawler reset notification. * [GUI] Added more details on image optimization. * [GUI] Removed info page from admin menu. * [GUI] Moved environment report from network level to single site level. * [GUI] Crawler time added in a user friendly format. * [INTEGRATION] Improved compatibility with FacetWP json call. = 1.6.4 - November 22 2017 = * [NEW FEATURE] Send env reports privately with a new built-in report number referral system. * [IAPI] Increased request timeout to fix a cUrl 28 timeout issue. * [BUGFIX] Fixed a TTL max value validation bug. * [INTEGRATION] Improved Contact Form 7 REST call compatibility for logged in users. * Thanks for all your ratings. That encouraged us to be more diligent. Happy Thanksgiving. = 1.6.3 - November 17 2017 = * [NEW FEATURE] Only async Google Fonts setting. * [NEW FEATURE] Only create WebP images when optimizing setting. * [NEW FEATURE] Batch switch images to original/optimized versions in Image Optimization. * [NEW FEATURE] Browser Cache TTL setting. * [NEW FEATURE] Cache WooCommerce Cart setting. * [IMPROVEMENT] Moved optimized JS/CSS snippet in header html to after meta charset. * [IMPROVEMENT] Added a constant for better JS/CSS optimization compatibility for different dir WordPress installation. * [IAPI] Take over failed callback check instead of bypassing it. * [IAPI] Image optimization requests are now limited to 500 images per request. * [BUGFIX] Fixed a parsing failure bug not using attributes in html elements with dash. * [BUGFIX] Fixed a bug causing non-script code to move to the top of a page when not using combination. * [UPDATE] Added detailed logs for external link detection. * [UPDATE] Added new lines in footer comment to avoid Firefox crash when enabled HTML minify. * [API] `Purge private` / `Purge private all` / `Add private tag` functions. * [GUI] Redesigned image optimization operation links in Media Lib list. * [GUI] Tweaked wp-admin form save button position. * [GUI] Added "learn more" link for image optimization. = 1.6.2.1 - November 6 2017 = * [INTEGRATION] Improved compatibility with old WooCommerce versions to avoid unknown 500 errors. * [BUGFIX] Fixed WebP images sometimes being used in non-supported browsers. * [BUGFIX] Kept query strings for HTTP/2 push to avoid re-fetching pushed sources. * [BUGFIX] Excluded JS/CSS from HTTP/2 push when using CDN. * [GUI] Fixed a typo in Media list. * [GUI] Made more image optimization strings translatable. * [GUI] Updated Tuning description to include API documentation. = 1.6.2 - November 3 2017 = * [NEW FEATURE] Do Not Cache Roles. * [NEW FEATURE] Use WebP Images for supported browsers. * [NEW FEATURE] Disable Optimization Poll ON/OFF Switch in Media tab. * [NEW FEATURE] Revert image optimization per image in Media list. * [NEW FEATURE] Disable/Enable image WebP per image in Media list. * [IAPI] Limit optimized images fetching cron to a single process. * [IAPI] Updated IAPI to v1.6.2. * [IAPI] Fixed repeating image request issue by adding a failure status to local images. * [REFACTOR] Refactored login vary logic. = 1.6.1 - October 29 2017 = * [IAPI] Updated LiteSpeed Image Optimization Server API to v1.6.1. = 1.6 - October 27 2017 = * [NEW FEATURE] Image Optimization. * [NEW FEATURE] Role Excludes for Optimization. * [NEW FEATURE] Combined CSS/JS Priority. * [IMPROVEMENT] Bypass CDN for login/register page. * [UPDATE] Expanded ExpiresByType rules to include new font types. ( Thanks to JMCA2 ) * [UPDATE] Removed duplicated type param in admin action link. * [BUGFIX] Fixed CDN wrongly replacing img base64 and "fake" src in JS. * [BUGFIX] Fixed image lazy load replacing base64 src. * [BUGFIX] Fixed a typo in Optimize class exception. * [GUI] New Tuning tab in admin settings panel. * [REFACTOR] Simplified router by reducing actions and adding types. * [REFACTOR] Renamed `run()` to `finalize()` in buffer process. = 1.5 - October 17 2017 = * [NEW FEATURE] Exclude JQuery (to fix inline JS error when using JS Combine). * [NEW FEATURE] Load JQuery Remotely. * [NEW FEATURE] JS Deferred Excludes. * [NEW FEATURE] Lazy Load Images Excludes. * [NEW FEATURE] Lazy Load Image Placeholder. * [IMPROVEMENT] Improved Lazy Load size attribute for w3c validator. * [UPDATE] Added basic caching info and LSCWP version to HTML comment. * [UPDATE] Added debug log to HTML detection. * [BUGFIX] Fixed potential font CORS issue when using CDN. * [GUI] Added API docs to setting description. * [REFACTOR] Relocated all classes under includes with backwards compatibility. * [REFACTOR] Relocated admin templates. = 1.4 - October 11 2017 = * [NEW FEATURE] Lazy load images/iframes. * [NEW FEATURE] Clean CSS/JS optimizer data functionality in DB Optimizer panel. * [NEW FEATURE] Exclude certain URIs from optimizer. * [IMPROVEMENT] Improved optimizer HTML check compatibility to avoid conflicts with ESI functions. * [IMPROVEMENT] Added support for using ^ when matching the start of a path in matching settings. * [IMPROVEMENT] Added wildcard support in CDN original URL. * [IMPROVEMENT] Moved optimizer table initialization to admin setting panel with failure warning. * [UPDATE] Added a one-time welcome banner. * [UPDATE] Partly relocated class: 'api'. * [API] Added API wrapper for removing wrapped HTML output. * [INTEGRATION] Fixed WooCommerce conflict with optimizer. * [INTEGRATION] Private cache support for WooCommerce v3.2.0+. * [GUI] Added No Optimization menu to frontend. = 1.3.1.1 - October 6 2017 = * [BUGFIX] Improved optimizer table creating process in certain database charset to avoid css/js minify/combination failure. = 1.3.1 - October 5 2017 = * [NEW FEATURE] Remove WP Emoji Option. * [IMPROVEMENT] Separated optimizer data from wp_options to improve compatibility with backup plugins. * [IMPROVEMENT] Enhanced crawler cron hook to prevent de-scheduling in some cases. * [IMPROVEMENT] Enhanced Remove Query Strings to also remove Emoji query strings. * [IMPROVEMENT] Enhanced HTML detection when extra spaces are present at the beginning. * [UPDATE] Added private cache support for OLS. * [BUGFIX] Self-redirects are no longer cached. * [BUGFIX] Fixed css async lib warning when loading in HTTP/2 push. = 1.3 - October 1 2017 = * [NEW FEATURE] Added Browser Cache support. * [NEW FEATURE] Added Remove Query Strings support. * [NEW FEATURE] Added Remove Google Fonts support. * [NEW FEATURE] Added Load CSS Asynchronously support. * [NEW FEATURE] Added Load JS Deferred support. * [NEW FEATURE] Added Critical CSS Rules support. * [NEW FEATURE] Added Private Cached URIs support. * [NEW FEATURE] Added Do Not Cache Query Strings support. * [NEW FEATURE] Added frontend adminbar shortcuts ( Purge this page/Do Not Cache/Private cache ). * [IMPROVEMENT] Do Not Cache URIs now supports full URLs. * [IMPROVEMENT] Improved performance of Do Not Cache settings. * [IMPROVEMENT] Encrypted vary cookie. * [IMPROVEMENT] Enhanced HTML optimizer. * [IMPROVEMENT] Limited combined file size to avoid heavy memory usage. * [IMPROVEMENT] CDN supports custom upload folder for media files. * [API] Added purge single post API. * [API] Added version compare API. * [API] Enhanced ESI API for third party plugins. * [INTEGRATION] Compatibility with NextGEN Gallery v2.2.14. * [INTEGRATION] Compatibility with Caldera Forms v1.5.6.2+. * [BUGFIX] Fixed CDN&Minify compatibility with css url links. * [BUGFIX] Fixed .htaccess being regenerated despite there being no changes. * [BUGFIX] Fixed CDN path bug for subfolder WP instance. * [BUGFIX] Fixed crawler path bug for subfolder WP instance with different site url and home url. * [BUGFIX] Fixed a potential Optimizer generating redundant duplicated JS in HTML bug. * [GUI] Added a more easily accessed submit button in admin settings. * [GUI] Admin settings page cosmetic changes. * [GUI] Reorganized GUI css/img folder structure. * [REFACTOR] Refactored configuration init. * [REFACTOR] Refactored admin setting save. * [REFACTOR] Refactored .htaccess operator and rewrite rule generation. = 1.2.3.1 - September 20 2017 = * [UPDATE] Improved PHP5.3 compatibility. = 1.2.3 - September 20 2017 = * [NEW FEATURE] Added CDN support. * [IMPROVEMENT] Improved compatibility when upgrading by fixing a possible fatal error. * [IMPROVEMENT] Added support for custom wp-content paths. * [BUGFIX] Fixed non-primary network blogs not being able to minify. * [BUGFIX] Fixed HTML Minify preventing Facebook from being able to parse og tags. * [BUGFIX] Preview page is no longer cacheable. * [BUGFIX] Corrected log and crawler timezone to match set WP timezone. * [GUI] Revamp of plugin GUI. = 1.2.2 - September 15 2017 = * [NEW FEATURE] Added CSS/JS minification. * [NEW FEATURE] Added CSS/JS combining. * [NEW FEATURE] Added CSS/JS HTTP/2 server push. * [NEW FEATURE] Added HTML minification. * [NEW FEATURE] Added CSS/JS cache purge button in management. * [UPDATE] Improved debug log formatting. * [UPDATE] Fixed some description typos. = 1.2.1 - September 7 2017 = * [NEW FEATURE] Added Database Optimizer. * [NEW FEATURE] Added Tab switch shortcut. * [IMPROVEMENT] Added cache disabled check for management pages. * [IMPROVEMENT] Renamed .htaccess backup for security. * [BUGFIX] Fixed woocommerce default ESI setting bug. * [REFACTOR] Show ESI page for OLS with notice. * [REFACTOR] Management Purge GUI updated. = 1.2.0.1 - September 1 2017 = * [BUGFIX] Fixed a naming bug for network constant ON2. = 1.2.0 - September 1 2017 = * [NEW FEATURE] Added ESI support. * [NEW FEATURE] Added a private cache TTL setting. * [NEW FEATURE] Debug level can now be set to either 'Basic' or 'Advanced'. * [REFACTOR] Renamed const 'NOTSET' to 'ON2' in class config. = 1.1.6 - August 23 2017 = * [NEW FEATURE] Added option to privately cache logged-in users. * [NEW FEATURE] Added option to privately cache commenters. * [NEW FEATURE] Added option to cache requests made through WordPress REST API. * [BUGFIX] Fixed network 3rd-party full-page cache detection bug. * [GUI] New Cache and Purge menus in Settings. = 1.1.5.1 - August 16 2017 = * [IMPROVEMENT] Improved compatibility of frontend&backend .htaccess path detection when site url is different than installation path. * [UPDATE] Removed unused format string from header tags. * [BUGFIX] 'showheader' Admin Query String now works. * [REFACTOR] Cache tags will no longer output if not needed. = 1.1.5 - August 10 2017 = * [NEW FEATURE] Scheduled Purge URLs feature. * [NEW FEATURE] Added buffer callback to improve compatibility with some plugins that force buffer cleaning. * [NEW FEATURE] Hide purge_all admin bar quick link if cache is disabled. * [NEW FEATURE] Required htaccess rules are now displayed when .htaccess is not writable. * [NEW FEATURE] Debug log features: filter log support; heartbeat control; log file size limit; log viewer. * [IMPROVEMENT] Separate crawler access log. * [IMPROVEMENT] Lazy PURGE requests made after output are now queued and working. * [IMPROVEMENT] Improved readme.txt with keywords relating to our compatible plugins list. * [UPDATE] 'ExpiresDefault' conflict msg is now closeable and only appears in the .htaccess edit screen. * [UPDATE] Improved debug log formatting. * [INTEGRATION] Compatibility with MainWP plugin. * [BUGFIX] Fixed WooCommerce order not purging product stock quantity. * [BUGFIX] Fixed WooCommerce scheduled sale price not updating issue. * [REFACTOR] Combined cache_enable functions into a single function. = 1.1.4 - August 1 2017 = * [IMPROVEMENT] Unexpected rewrite rules will now show an error message. * [IMPROVEMENT] Added Cache Tag Prefix setting info in the Env Report and Info page. * [IMPROVEMENT] LSCWP setting link is now displayed in the plugin list. * [IMPROVEMENT] Improved performance when setting cache control. * [UPDATE] Added backward compatibility for v1.1.2.2 API calls. (used by 3rd-party plugins) * [BUGFIX] Fixed WPCLI purge tag/category never succeeding. = 1.1.3 - July 31 2017 = * [NEW FEATURE] New LiteSpeed_Cache_API class and documentation for 3rd party integration. * [NEW FEATURE] New API function litespeed_purge_single_post($post_id). * [NEW FEATURE] PHP CLI support for crawler. * [IMPROVEMENT] Set 'no cache' for same location 301 redirects. * [IMPROVEMENT] Improved LiteSpeed footer comment compatibility. * [UPDATE] Removed 'cache tag prefix' setting. * [BUGFIX] Fixed a bug involving CLI purge all. * [BUGFIX] Crawler now honors X-LiteSpeed-Cache-Control for the 'no-cache' header. * [BUGFIX] Cache/rewrite rules are now cleared when the plugin is uninstalled. * [BUGFIX] Prevent incorrect removal of the advanced-cache.php on deactivation if it was added by another plugin. * [BUGFIX] Fixed subfolder WP installations being unable to Purge By URL using a full URL path. * [REFACTOR] Reorganized existing code for an upcoming ESI release. = 1.1.2.2 - July 13 2017 = * [BUGFIX] Fixed blank page in Hebrew language post editor by removing unused font-awesome and jquery-ui css libraries. = 1.1.2.1 - July 5 2017 = * [UPDATE] Improved compatibility with WooCommerce v3.1.0. = 1.1.2 - June 20 2017 = * [BUGFIX] Fixed missing form close tag. * [UPDATE] Added a wiki link for enabling the crawler. * [UPDATE] Improved Site IP description. * [UPDATE] Added an introduction to the crawler on the Information page. * [REFACTOR] Added more detailed error messages for Site IP and Custom Sitemap settings. = 1.1.1.1 - June 15 2017 = * [BUGFIX] Hotfix for insufficient validation of site IP value in crawler settings. = 1.1.1 - June 15 2017 = * [NEW] As of LiteSpeed Web Server v.5.1.16, the crawler can now be enabled/disabled at the server level. * [NEW] Added the ability to provide a custom sitemap for crawling. * [NEW] Added ability to use site IP address directly in crawler settings. * [NEW] Crawler performance improved with the use of new custom user agent 'lsrunner'. * [NEW] "Purge By URLs" now supports full URL paths. * [NEW] Added thirdparty WP-PostRatings compatibility. * [BUGFIX] Cache is now cleared when changing post status from published to draft. * [BUGFIX] WHM activation message no longer continues to reappear after being dismissed. * [COSMETIC] Display recommended values for settings. = 1.1.0.1 - June 8 2017 = * [UPDATE] Improved default crawler interval setting. * [UPDATE] Tested up to WP 4.8. * [BUGFIX] Fixed compatibility with plugins that output json data. * [BUGFIX] Fixed tab switching bug. * [BUGFIX] Removed occasional duplicated messages on save. * [COSMETIC] Improved crawler tooltips and descriptions. = 1.1.0 - June 6 2017 = * [NEW] Added a crawler - this includes configuration options and a dedicated admin page. Uses wp-cron * [NEW] Added integration for WPLister * [NEW] Added integration for Avada * [UPDATE] General structure of the plugin revamped * [UPDATE] Improved look of admin pages * [BUGFIX] Fix any/all wp-content path retrieval issues * [BUGFIX] Use realpath to clear symbolic link when determining .htaccess paths * [BUGFIX] Fixed a bug where upgrading multiple plugins did not trigger a purge all * [BUGFIX] Fixed a bug where cli import_options did not actually update the options. * [REFACTOR] Most of the files in the code were split into more, smaller files = 1.0.15 - April 20 2017 = * [NEW] Added Purge Pages and Purge Recent Posts Widget pages options. * [NEW] Added wp-cli command for setting and getting options. * [NEW] Added an import/export options cli command. * [NEW] Added wpForo integration. * [NEW] Added Theme My Login integration. * [UPDATE] Purge adjacent posts when publish a new post. * [UPDATE] Change environment report file to .php and increase security. * [UPDATE] Added new purgeby option to wp-cli. * [UPDATE] Remove nag for multiple sites. * [UPDATE] Only inject LiteSpeed javascripts in LiteSpeed pages. * [REFACTOR] Properly check for zero in ttl settings. * [BUGFIX] Fixed the 404 issue that can be caused by some certain plugins when save the settings. * [BUGFIX] Fixed mu-plugin compatibility. * [BUGFIX] Fixed problem with creating zip backup. * [BUGFIX] Fixed conflict with jetpack. = 1.0.14.1 - January 31 2017 = * [UPDATE] Removed Freemius integration due to feedback. = 1.0.14 - January 30 2017 = * [NEW] Added error page caching. Currently supports 403, 404, 500s. * [NEW] Added a purge errors action. * [NEW] Added wp-cli integration. * [UPDATE] Added support for multiple varies. * [UPDATE] Reorganize the admin interface to be less cluttered. * [UPDATE] Add support for LiteSpeed Web ADC. * [UPDATE] Add Freemius integration. * [REFACTOR] Made some changes so that the rewrite rules are a little more consistent. * [BUGFIX] Check member type before adding purge all button. * [BUGFIX] Fixed a bug where activating/deactivating the plugin quickly caused the WP_CACHE error to show up. * [BUGFIX] Handle more characters in the rewrite parser. * [BUGFIX] Correctly purge posts when they are made public/private. = 1.0.13.1 - November 30 2016 = * [BUGFIX] Fixed a bug where a global was being used without checking existence first, causing unnecessary log entries. = 1.0.13 - November 28 2016 = * [NEW] Add an Empty Entire Cache button. * [NEW] Add stale logic to certain purge actions. * [NEW] Add option to use primary site settings for all subsites in a multisite environment. * [NEW] Add support for Aelia CurrencySwitcher * [UPDATE] Add logic to allow third party vary headers * [UPDATE] Handle password protected pages differently. * [BUGFIX] Fixed bug caused by saving settings. * [BUGFIX] FIxed bug when searching for advanced-cache.php = 1.0.12 - November 14 2016 = * [NEW] Added logic to generate environment reports. * [NEW] Created a notice that will be triggered when the WHM Plugin installs this plugin. This will notify users when the plugin is installed by their server admin. * [NEW] Added the option to cache 404 pages via 404 Page TTL setting. * [NEW] Reworked log system to be based on selection of yes or no instead of log level. * [NEW] Added support for Autoptimize. * [NEW] Added Better WP Minify integration. * [UPDATE] On plugin disable, clear .htaccess. * [UPDATE] Introduced URL tag. Changed Purge by URL to use this new tag. * [BUGFIX] Fixed a bug triggered when .htaccess files were empty. * [BUGFIX] Correctly determine when to clear files in multisite environments (wp-config, advanced-cache, etc.). * [BUGFIX] When disabling the cache, settings changed in the same save will now be saved. * [BUGFIX] Various bugs from setting changes and multisite fixed. * [BUGFIX] Fixed two bugs with the .htaccess path search. * [BUGFIX] Do not alter $_GET in add_quick_purge. This may cause issues for functionality occurring later in the same request. * [BUGFIX] Right to left radio settings were incorrectly displayed. The radio buttons themselves were the opposite direction of the associated text. = 1.0.11 - October 11 2016 = * [NEW] The plugin will now set cachelookup public on. * [NEW] New option - check advanced-cache.php. This enables users to have two caching plugins enabled at the same time as long as the other plugin is not used for caching purposes. For example, using another cache plugin for css/js minification. * [UPDATE] Rules added by the plugin will now be inserted into an LSCACHE START/END PLUGIN comment block. * [UPDATE] For woocommerce pages, if a user visits a non-cached page with a non-empty cart, do not cache the page. * [UPDATE] If woocommerce needs to display any notice, do not cache the page. * [UPDATE] Single site settings are now in both the litespeed cache submenu and the settings submenu. * [BUGFIX] Multisite network options were not updated on upgrade. This is now corrected. = 1.0.10 - September 16 2016 = * Added a check for LSCACHE_NO_CACHE definition. * Added a Purge All button to the admin bar. * Added logic to purge the cache when upgrading a plugin or theme. By default this is enabled on single site installations and disabled on multisite installations. * Added support for WooCommerce Versions < 2.5.0. * Added .htaccess backup rotation. Every 10 backups, an .htaccess archive will be created. If one already exists, it will be overwritten. * Moved some settings to the new Specific Pages tab to reduce clutter in the General tab. * The .htaccess editor is now disabled if DISALLOW_FILE_EDIT is set. * After saving the Cache Tag Prefix setting, all cache will be purged. = 1.0.9.1 - August 26 2016 = * Fixed a bug where an error displayed on the configuration screen despite not being an error. * Change logic to check .htaccess file less often. = 1.0.9 - August 25 2016 = * [NEW] Added functionality to cache and purge feeds. * [NEW] Added cache tag prefix setting to avoid conflicts when using LiteSpeed Cache for WordPress with LiteSpeed Cache for XenForo and LiteMage. * [NEW] Added hooks to allow third party plugins to create config options. * [NEW] Added WooCommerce config options. * The plugin now also checks for wp-config in the parent directory. * Improved WooCommerce support. * Changed .htaccess backup process. Will create a .htaccess_lscachebak_orig file if one does not exist. If it does already exist, creates a backup using the date and timestamp. * Fixed a bug where get_home_path() sometimes returned an invalid path. * Fixed a bug where if the .htaccess was removed from a WordPress subdirectory, it was not handled properly. = 1.0.8.1 - July 28 2016 = * Fixed a bug where check cacheable was sometimes not hit. * Fixed a bug where extra slashes in clear rules were stripped. = 1.0.8 - July 25 2016 = * Added purge all on update check to purge by post id logic. * Added uninstall logic. * Added configuration for caching favicons. * Added configuration for caching the login page. * Added configuration for caching php resources (scripts/stylesheets accessed as .php). * Set login cookie if user is logged in and it isn’t set. * Improved NextGenGallery support to include new actions. * Now displays a notice on the network admin if WP_CACHE is not set. * Fixed a few php syntax issues. * Fixed a bug where purge by pid didn’t work. * Fixed a bug where the Network Admin settings were shown when the plugin was active in a subsite, but not network active. * Fixed a bug where the Advanced Cache check would sometimes not work. = 1.0.7.1 - May 26 2016 = * Fixed a bug where enabling purge all in the auto purge on update settings page did not purge the correct blogs. * Fixed a bug reported by user wpc on our forums where enabling purge all in the auto purge on update settings page caused nothing to be cached. = 1.0.7 - May 24 2016 = * Added login cookie configuration to the Advanced Settings page. * Added support for WPTouch plugin. * Added support for WP-Polls plugin. * Added Like Dislike Counter third party integration. * Added support for Admin IP Query String Actions. * Added confirmation pop up for purge all. * Refactor: LiteSpeed_Cache_Admin is now split into LiteSpeed_Cache_Admin, LiteSpeed_Cache_Admin_Display, and LiteSpeed_Cache_Admin_Rules * Refactor: Rename functions to accurately represent their functionality * Fixed a bug that sometimes caused a “no valid header” error message. = 1.0.6 - May 5 2016 = * Fixed a bug reported by Knut Sparhell that prevented dashboard widgets from being opened or closed. * Fixed a bug reported by Knut Sparhell that caused problems with https support for admin pages. = 1.0.5 - April 26 2016 = * [BETA] Added NextGen Gallery plugin support. * Added third party plugin integration. * Improved cache tag system. * Improved formatting for admin settings pages. * Converted bbPress to use the new third party integration system. * Converted WooCommerce to use the new third party integration system. * If .htaccess is not writable, disable separate mobile view and do not cache cookies/user agents. * Cache is now automatically purged when disabled. * Fixed a bug where .htaccess was not checked properly when adding common rules. * Fixed a bug where multisite setups would be completely purged when one site requested a purge all. = 1.0.4 - April 7 2016 = * Added logic to cache commenters. * Added htaccess backup to the install script. * Added an htaccess editor in the wp-admin dashboard. * Added do not cache user agents. * Added do not cache cookies. * Created new LiteSpeed Cache Settings submenu entries. * Implemented Separate Mobile View. * Modified WP_CACHE not defined message to only show up for users who can manage options. * Moved enabled all/disable all from network management to network settings. * Fixed a bug where WP_CACHE was not defined on activation if it was commented out. = 1.0.3 - March 23 2016 = * Added a Purge Front Page button to the LiteSpeed Cache Management page. * Added a Default Front Page TTL option to the general settings. * Added ability to define web application specific cookie names through rewrite rules to handle logged-in cookie conflicts when using multiple web applications. [Requires LSWS 5.0.15+] * Improved WooCommerce handling. * Fixed a bug where activating lscwp sets the “enable cache” radio button to enabled, but the cache was not enabled by default. * Refactored code to make it cleaner. * Updated readme.txt. = 1.0.2 - March 11 2016 = * Added a "Use Network Admin Setting" option for "Enable LiteSpeed Cache". For single sites, this choice will default to enabled. * Added enable/disable all buttons for network admin. This controls the setting of all managed sites with "Use Network Admin Setting" selected for "Enable LiteSpeed Cache". * Exclude by Category/Tag are now text areas to avoid slow load times on the LiteSpeed Cache Settings page for sites with a large number of categories/tags. * Added a new line to advanced-cache.php to allow identification as a LiteSpeed Cache file. * Activation/Deactivation are now better handled in multi-site environments. * Enable LiteSpeed Cache setting is now a radio button selection instead of a single checkbox. * Can now add '$' to the end of a URL in Exclude URI to perform an exact match. * The _lscache_vary cookie will now be deleted upon logout. * Fixed a bug in multi-site setups that would cause a "function already defined" error. = 1.0.1 - March 8 2016 = * Added Do Not Cache by URI, by Category, and by Tag. URI is a prefix/string equals match. * Added a help tab for plugin compatibilities. * Created logic for other plugins to purge a single post if updated. * Fixed a bug where woocommerce pages that display the cart were cached. * Fixed a bug where admin menus in multi-site setups were not correctly displayed. * Fixed a bug where logged in users were served public cached pages. * Fixed a compatibility bug with bbPress. If there is a new forum/topic/reply, the parent pages will now be purged as well. * Fixed a bug that didn't allow cron job to update scheduled posts. = 1.0.0 - January 20 2016 = * Initial Release. Welcome To – Frugalinnovationhub.com

Blog

  • My reflections on authentic dialogue practices

    Key takeaways:

    • Active listening is crucial for authentic dialogue, enhancing understanding and fostering deeper connections.
    • Creating a safe space encourages participants to share openly, overcoming barriers like vulnerability and societal expectations.
    • Incorporating open-ended questions and reflective feedback improves the quality and depth of conversations.
    • Time constraints and differing communication styles can hinder meaningful dialogue, necessitating a flexible and accommodating approach.

    Understanding authentic dialogue practices

    Understanding authentic dialogue practices

    Authentic dialogue practices are about fostering genuine interactions where all participants feel heard and valued. I remember attending a workshop where the facilitator emphasized the importance of active listening. It was a revelation; I realized how often I had been formulating my response while the other person was still talking. This shift in focus helped me create deeper connections with others.

    When we engage in authentic dialogue, we open the door not just to exchange ideas but to understand diverse perspectives. Have you ever felt that rush of clarity when someone truly engages with your thoughts? I have, and it’s invigorating. It encourages vulnerability and honesty, allowing us to explore complex topics without fear of judgment.

    It’s essential to consider the barriers that can hinder authentic dialogue. Often, preconceived notions and societal expectations can cloud our interactions. I once participated in a discussion where I noticed participants holding back due to concerns about how their opinions would be received. Reflecting on those moments highlighted how crucial it is to create a safe space where authenticity can flourish. Why do we hesitate to share our genuine thoughts? Understanding these barriers can be the key to unlocking more meaningful exchanges.

    Key elements of effective dialogue

    Key elements of effective dialogue

    One of the key elements of effective dialogue is the practice of active listening, which I cannot emphasize enough. During a recent discussion, I found myself fully immersing in what my peer was saying instead of waiting for my turn to speak. This experience illuminated how much richer our conversations became, enabling me to respond with more understanding and relevance. Have you ever noticed how your responses improve when you truly listen?

    Another critical aspect is the balance between sharing and receiving. I remember a group project where members took turns sharing their insights without interruption. This approach fostered a powerful synergy, as each person felt empowered to contribute without the anxiety of being cut off. It reminded me how essential it is for everyone to have the opportunity to voice their thoughts, creating a rhythm that supports open dialogues.

    Moreover, vulnerability plays a surprisingly important role in effective dialogue. I once shared a personal challenge during a conversation, and it unexpectedly opened the floodgates for others to share their own struggles. It was a poignant moment that showcased how vulnerability can foster trust and connection. How often do we allow ourselves to be vulnerable in conversations? Embracing this can lead to deeper, more meaningful exchanges that enrich our understanding of one another.

    Strategies for fostering authentic dialogue

    Strategies for fostering authentic dialogue

    One effective strategy for fostering authentic dialogue is creating a safe space for participants. I once hosted a workshop where I made it a point to encourage everyone to speak freely without fear of judgment. The moment I noticed people’s shoulders relax and their faces light up, I understood the profound impact of safety in dialogue. Have you ever felt the difference when a conversation space feels welcoming?

    In another instance, incorporating open-ended questions significantly transformed the quality of our discussions. During a seminar, I started with “What does this topic mean to you personally?” Instead of the usual “What do you think?” This shift prompted deeper reflections and unexpected insights. Isn’t it fascinating how the way we frame our questions can lead to richer conversations?

    Lastly, practicing reflective feedback can serve as a powerful tool in authentic dialogue. After a group discussion, I made it a habit to summarize shared thoughts and ask if I captured them accurately. This not only validated everyone’s contributions but also encouraged further exploration. Have you noticed how feedback can amplify understanding and connection? Emphasizing this practice can enhance the depth of dialogue significantly.

    Personal experiences with dialogue practices

    Personal experiences with dialogue practices

    During a community dialogue I facilitated, I tried a technique that involved sharing personal stories. I kicked off the session by recounting a pivotal moment in my life that shaped my perspective on education. Watching the participants open up with their own stories was exhilarating. Have you ever noticed how personal narratives can create a bridge of connection between people?

    In another experience, I employed active listening as a core practice. During a discussions about education methods, I focused solely on what others were expressing, nodding and paraphrasing back their points. One participant later told me she felt truly heard for the first time, which sparked a more profound exchange. Isn’t it amazing how simply being present can foster a richer dialogue?

    Reflecting on a challenging round table discussion, I learned how important it is to embrace silence. When the conversation hit a lull, rather than rushing to fill the gap, I sat with it, allowing thoughts to emerge. The tension in the air shifted as people began to ponder deeper questions. Have you found that sometimes, silence speaks louder than words?

    Challenges in implementing dialogue

    Challenges in implementing dialogue

    When implementing dialogue, one major challenge I face is the discomfort around vulnerability. In one session, I invited participants to share thoughts they worried might be judged, and I immediately sensed the hesitation in the room. Have you ever watched a group hold back, knowing they had rich insights to share but fearing how they’d be received? This hesitance can severely hinder the depth of discussion.

    Another challenge is managing differing communication styles. I remember a time when a spirited debate erupted over educational philosophies, and I found myself caught between two speakers who had completely opposing views. It was tough to maintain a flow when one participant was highly analytical while the other was more emotive. I often wonder, how can you foster true dialogue when voices clash so dramatically?

    Additionally, time constraints can turn a meaningful dialogue into a rushed conversation. In one particular workshop, I planned to delve into a complex topic, but we ran out of time just as participants started expressing their most profound thoughts. Doesn’t it feel frustrating when these important exchanges get truncated? This experience reinforced my belief that allowing adequate time for dialogue is crucial to fully embrace the richness of collective insights.

    Reflections on my dialogue journey

    Reflections on my dialogue journey

    Reflecting on my journey in dialogue, I’ve realized that each conversation holds the potential for transformation. I remember a particularly pivotal moment when an unexpected question from a participant shifted the whole tone of our discussion. That simple inquiry ignited a previously dormant energy in the room, reminding me how curiosity can reframe dialogue and open pathways to deeper understanding.

    Throughout my experiences, I’ve come to see the importance of practicing active listening, which often feels like a delicate dance. Occasionally, I find myself so eager to respond that I momentarily tune out the thoughts being shared. Have you ever been caught in the web of your own excitement, losing track of the conversation? It’s a reminder that mastering the art of dialogue involves more than just speaking; it’s about truly hearing the voices of others.

    As I reflect, I can’t help but appreciate the powerful moments when vulnerability melds into collective wisdom. During one session, participants hesitantly disclosed their personal experiences, creating an atmosphere filled with empathy. I was struck by how these authentic exchanges not only elevated the dialogue but also fostered a connection that transcended mere discussion. Isn’t that the essence of what we seek in dialogue?

  • My reflections on authentic engagement

    Key takeaways:

    • Authentic engagement transforms passive observers into active participants, fostering emotional connections and vibrant communities.
    • Creating meaningful learning experiences involves open dialogues, interactive elements, and reflective practices that encourage personal connections.
    • Different educational formats, such as workshops and webinars, can enhance engagement by offering hands-on experiences and interactive opportunities.
    • Future efforts should focus on fostering inclusive spaces, integrating technology thoughtfully, and inviting continuous feedback for improvement.

    Understanding authentic engagement

    Understanding authentic engagement

    Authentic engagement isn’t just a buzzword; it’s a crucial element that transforms passive observers into active participants. I recall attending a workshop where the facilitator didn’t just lecture, but rather encouraged us to share our stories and perspectives. That simple shift made the experience more enriching, as each voice contributed to a deeper understanding of the topic at hand.

    When I reflect on what authentic engagement means, I often think about the emotional connections it fosters. Have you ever felt invigorated by a conversation where your ideas and feelings were truly valued? Those moments not only empower individuals but also create a vibrant community where learning flourishes. It’s fascinating how genuine interactions can lead to unexpected insights and collaborations.

    Consider the last event you attended—was there a moment when you felt truly connected to the content or the people around you? For me, it was during a group brainstorming session, where everyone’s enthusiasm sparked new ideas. This type of genuine engagement invites participants to invest emotionally, making the educational experience memorable and impactful.

    Importance of authentic engagement

    Importance of authentic engagement

    Authentic engagement is vital because it lays the groundwork for meaningful learning experiences. I once attended a seminar where instead of a one-sided lecture, the facilitator initiated an open dialogue. This shift made me feel like an integral part of the process rather than just a bystander, allowing me to absorb and reflect on the information deeply.

    I often think back to moments in educational events when I felt genuinely listened to. How often do we find ourselves in a room where our contributions spark fiery discussions? During a recent conference, I shared a personal challenge related to the topic, and the response from the audience sparked a rich, collaborative exchange. It’s incredible how sharing personal experiences can ignite connections and foster a sense of belonging.

    Moreover, authentic engagement cultivates a nurturing environment for creativity and innovation. Have you ever brainstormed in a space where everyone felt free to express wild ideas? I remember a workshop focused on creative problem-solving, where off-the-wall concepts were celebrated. Such an atmosphere not only encourages risk-taking but also leads to groundbreaking solutions that wouldn’t have surfaced in a more conventional setting.

    Strategies for creating engagement

    Strategies for creating engagement

    Creating engagement often hinges on fostering personal connections among participants. I recall a small-group workshop where we began by sharing our favorite teaching moments. This simple icebreaker not only lightened the mood but also built trust, encouraging each of us to actively contribute to discussions. When participants feel connected, they are much more likely to engage in the learning process.

    Using interactive technology can also enhance engagement significantly. During one webinar, the facilitator utilized live polls and Q&A sessions, which transformed passive listeners into active participants. I found myself eagerly awaiting the next question, feeling my enthusiasm grow as my opinions were solicited and validated in real-time. Isn’t it inspiring how technology can bridge gaps, making everyone feel present and involved?

    Another effective strategy is to incorporate reflective practices throughout the event. I often use journaling prompts after key sessions to encourage participants to capture their thoughts and feelings. This simple act helps solidify learning while giving individuals a chance to personalize their experience. Have you ever taken a moment to reflect on what resonates most with you? It’s fascinating how even a few minutes of introspection can deepen one’s connection to the material.

    Types of educational events

    Types of educational events

    There are several types of educational events, each with its unique flavor and purpose. I once attended a conference where experts shared their research, sparking inspiration and new ideas for my own work. It was a fantastic way to witness fresh perspectives in action and engage with thought leaders in my field, making me realize how much I could benefit from such gatherings.

    Workshops stand out as a hands-on alternative, offering participants an opportunity to practice skills in a supportive environment. I distinctly remember a workshop focused on collaborative teaching strategies, where we not only discussed theories but also role-played real-life classroom scenarios. This immersive format made the learning experience more relatable, allowing me to leave with practical tools to implement immediately. Isn’t it intriguing how such experiences can elevate our confidence and competence?

    Webinars, especially in our digital age, provide an accessible platform for learning. I have participated in numerous online sessions that felt surprisingly intimate, despite being miles away from the speaker. They often include interactive elements like polls or break-out rooms, which create a sense of community among distant participants. Have you ever felt that rush of excitement when engaging with someone across the globe? It’s a powerful reminder of how technology can expand our horizons and enrich our educational journeys.

    Personal experiences with engagement

    Personal experiences with engagement

    Engagement in educational settings often leaves lasting impressions. I recall a particularly memorable seminar where the facilitator invited us to share our own experiences. As I opened up, I felt a wave of connection wash over the room; everyone was nodding in agreement as we exchanged stories of challenges and triumphs. It struck me just how vital authentic engagement is in creating a supportive learning community.

    I once attended a panel discussion that was surprisingly eye-opening. The speakers shared their professional journeys, but what truly captivated me was the Q&A session afterward. As I asked my own question, the genuine interest from the panelists made me feel valued and heard. This reinforced the idea that when we actively participate, it not only enriches our experience but also empowers others to join the conversation.

    Reflecting on my experiences with informal gatherings, I remember a casual meetup among educators discussing innovative techniques. Sitting in a cozy café, I enjoyed the relaxed atmosphere that encouraged honest dialogues. It made me wonder, how often do we allow ourselves to engage in such informal settings? I realized these moments often lead to the most profound insights and spark new collaborations, highlighting the importance of every opportunity to connect with peers.

    Lessons learned from engagement

    Lessons learned from engagement

    Engagement often reveals the depths of our connections with others. I vividly remember a workshop where we were divided into small groups to brainstorm solutions to common educational challenges. As we bounced ideas off one another, I felt a sense of camaraderie that transcended our professional roles. Have you ever felt that rush when a simple conversation blossoms into something transformative? I realized that engaging in a collaborative environment not only hones our problem-solving skills but also strengthens the bonds we share.

    In another instance, I attended a conference where I facilitated a breakout session. The energy in the room shifted as participants began to share their perspectives freely. I found myself deeply moved by the stories of resilience and creativity that emerged. It dawned on me that authentic engagement is a two-way street; while we share our thoughts, we also create a safe space for others to do the same. What if we all made time to listen as much as we speak in these settings?

    One particularly enlightening experience was during a community dialogue event. The organizers encouraged us to share stories about our experiences with educational equity. Listening to others’ lived experiences not only educated me but also ignited a passion for advocacy within my own practice. Have you ever sat in silence only to realize the profound impact you have when you simply listen? I learned that engagement is not just about contributing ideas; sometimes, it’s about absorbing the wisdom of others that leads to growth and understanding.

    Future goals for authentic engagement

    Future goals for authentic engagement

    In envisioning future goals for authentic engagement, I believe we must prioritize creating spaces where everyone feels genuinely heard. During a recent panel discussion, I noticed how impactful it was when a participant expressed fear of sharing their thoughts. This led me to a realization: by deliberately fostering an inclusive atmosphere, we can mitigate those fears, encouraging true vulnerability. How often do we miss the chance to resonate with someone’s silent struggle simply because we don’t cultivate that open environment?

    Another aspiration of mine is to integrate technology in a way that enhances, rather than detracts from, face-to-face interactions. I once participated in an online forum for educational leaders where, surprisingly, the proposed tech tools for engagement often led to disengagement instead. From that experience, I’ve learned that while digital platforms can broaden our reach, they should complement our human connections. This balance is crucial; how can we nurture deeper relationships when screens become our primary form of communication?

    As we look to the future, I see a pressing need for ongoing reflection on our engagement practices. After a recent workshop, I felt compelled to invite feedback from participants on their experiences. It struck me that we can’t improve without understanding these experiences. Are we providing the right avenues for constructive criticism? Our continuous commitment to reflecting on these shared moments will pave the way for authentic connections that resonate long after the events conclude.

  • My reflections on authenticity in communication

    Key takeaways:

    • Authenticity in communication fosters trust, openness, and meaningful connections through vulnerability and honesty.
    • Effective communication enhances collaboration and personal growth in educational settings, transforming classrooms into supportive communities.
    • Active listening and empathy are essential characteristics of authentic communication, promoting deeper interactions and emotional resonance.
    • Challenges such as fear of judgment, time constraints, and prioritizing perfection over authenticity can hinder genuine exchanges.

    Understanding authenticity in communication

    Understanding authenticity in communication

    Authenticity in communication goes beyond merely expressing ideas; it’s about embodying a genuine voice. I remember attending a workshop where the speaker shared their struggles with imposter syndrome. This vulnerability connected deeply with the audience, illustrating how authenticity can foster trust and openness in conversations.

    When I think about authentic communication, I often consider how it feels to share my thoughts without pretense. Have you ever found yourself nodding along while feeling disconnected from the conversation? That tension often arises when people present polished facades instead of their true selves, making it difficult to establish meaningful connections.

    In my experience, the most impactful dialogues happen when people embrace honesty. I visualize a memorable discussion with a colleague who admitted their fears about a project we were working on. This simple moment of honesty transformed our teamwork. It taught me that authenticity encourages others to lower their guards, creating an environment where genuine collaboration thrives.

    Importance of communication in education

    Importance of communication in education

    Effective communication serves as the backbone of educational success. I recall a time when I facilitated a group project among students; the difference between those who communicated openly and those who held back was stark. The teams that thrived were those where each member felt safe to share ideas and ask questions, demonstrating how vital open dialogue is to collaborative learning.

    In my observations, when educators prioritize communication, the classroom transforms into a community. I’ve seen students who initially struggled to voice their opinions begin to shine once encouraged to participate in discussions. It’s fascinating to witness how a supportive communication environment can spark enthusiasm, fostering not just academic performance but also personal growth.

    Reflecting on my own educational journey, I realize that the professors who impacted me the most were those who actively engaged with students. I remember a history teacher who would ask thought-provoking questions that invited us to share our interpretations. This not only deepened our understanding of the subject but also made us feel valued as contributors, reinforcing that communication is not just about exchanging information; it’s about building relationships.

    Characteristics of authentic communication

    Characteristics of authentic communication

    Authentic communication is characterized by honesty and transparency. I remember hosting a workshop where I decided to share my own challenges in education. When I spoke openly about the hurdles I faced, I noticed the participants’ reactions shift; they became more willing to share their own struggles, creating a genuine connection. Doesn’t it resonate when we realize that vulnerability breeds trust?

    Another key trait is active listening. In my experience, when I genuinely listen to others, it encourages a deeper level of interaction. I’ve participated in discussions where I made a conscious effort to really hear my peers, not just wait for my turn to speak. This approach transformed the conversations into rich dialogues, where insights flowed freely and mutual understanding blossomed.

    Lastly, authentic communication is rooted in empathy. I recall a moment during a symposium where a speaker shared a deeply personal story about their educational journey. I felt a profound sense of connection not just to their story but to the collective experience of the audience. This emotional resonance sparked a conversation that transcended the usual superficial exchanges. Have you ever found yourself moved by someone else’s story in a way that changed how you perceive your own experiences? It’s those moments that highlight the power of communicating authentically.

    Strategies for fostering authenticity

    Strategies for fostering authenticity

    One effective strategy for fostering authenticity is creating a safe environment where individuals feel comfortable sharing. I once attended a community education event where the facilitator initiated a circle of trust, asking each of us to share our personal motivations for being there. This simple act of openness immediately created a space where everyone felt valued, transforming apprehension into an eagerness to engage. Isn’t it fascinating how just a few words can dismantle barriers?

    Another approach is to model authenticity yourself. During a professional development session, I decided to share not just my successes but also my failures and the lessons learned from them. This honest reflection encouraged others to do the same. I often wonder, how can we expect authenticity from others unless we first give it ourselves?

    Lastly, incorporating storytelling as a tool in communication can significantly enhance authenticity. I remember incorporating storytelling into a lecture on educational philosophies, sharing personal anecdotes about mentors who shaped my understanding. As I relayed these experiences, I saw how they resonated with my audience, prompting them to share their stories too. Have you noticed how stories connect us on a deeper level than plain facts ever could?

    Challenges in maintaining authenticity

    Challenges in maintaining authenticity

    Maintaining authenticity in communication can be profoundly challenging, especially in formal settings. I recall a workshop I attended where the facilitator seemed so rehearsed that it felt like we were watching a performance rather than having a genuine conversation. This made me realize that when people prioritize perfection over authenticity, it can create a disconnect that leaves participants feeling unengaged. Have you ever felt that gap between what someone says and what they truly mean?

    Another significant challenge lies in the fear of judgment from others. In one group discussion, I hesitated to share my thoughts because I worried about how they would be received. I remember that feeling of holding back; it’s exhausting to navigate through a minefield of potential criticisms. How can we foster an environment where vulnerability is celebrated rather than scrutinized? Reflecting on this has made me see the importance of creating supportive circles.

    Finally, time constraints can hinder authentic exchanges. In fast-paced educational settings, there’s often pressure to cover material quickly, leaving little room for meaningful dialogues. I found that during a compressed seminar, my attempts to encourage interaction fell flat, overshadowed by the ticking clock. It’s a stark reminder that without allowing adequate time for reflection and dialogue, authenticity struggles to flourish. What do you think? Is it worth sacrificing depth for speed?

    Personal experiences with authentic communication

    Personal experiences with authentic communication

    In my experience, moments of authentic communication often arise unexpectedly. During a team-building exercise, I opened up about my struggles with imposter syndrome, and to my surprise, several colleagues shared similar feelings. This vulnerable exchange created an immediate bond, transforming a routine session into a heartfelt discussion that left a lasting impact. Isn’t it fascinating how authenticity can shift the atmosphere in a room?

    I’ve also faced situations where authenticity brought clarity amid confusion. I remember a group project that seemed to be going off the rails. Instead of tiptoeing around the issue, I spoke openly about my concerns. While it felt risky at that moment, the honest conversation led to a breakthrough. We redefined our goals and spirits, ultimately enhancing collaboration. Have you ever taken a leap of faith with your words, only to find it opens doors?

    Sometimes, the simplest moments in communication resonate the most. I once had a mentor who always encouraged open dialogue by genuinely listening to our thoughts. It wasn’t just about what he said but how he made us feel. This shaped my understanding of authentic communication: it’s not just about sharing ideas; it’s also about creating an environment where others feel safe to express theirs. Do you remember a time when someone truly listened to you—how it made you feel valued?

  • My process for topic selection

    Key takeaways:

    • Educational events should create impactful experiences that resonate with attendees, emphasizing formats that encourage interaction and storytelling.
    • Choosing a relevant and engaging topic is crucial; it shapes the audience’s connection to the event and can foster meaningful discussions.
    • Researching audience interests and evaluating current trends are essential steps in topic selection to ensure relevance and engagement.
    • Collaboration and feedback from previous events can significantly inform topic choices and enhance the overall attendee experience.

    Understanding educational events

    Understanding educational events

    Understanding educational events encompasses much more than simply gathering people to learn; it’s about creating impactful experiences that foster growth and connection. I remember attending a workshop where, despite the expected lectures, it turned into a vibrant discussion that deeply resonated with attendees. Have you ever felt that thrill when a conversation ignites new ideas? Those moments are what make educational events truly valuable.

    When I think of educational events, I often reflect on the diverse formats they can take—from conferences and webinars to workshops and informal meet-ups. Each type has its unique flavor and appeals to different audiences. For example, I found that a small, interactive workshop allowed me to engage more deeply compared to larger, more structured conferences. It’s fascinating how the atmosphere can shift based on the event type, isn’t it?

    In my experience, the best educational events emerge from a combination of well-thought-out content and a genuine understanding of the audience’s needs. I once helped organize a seminar aimed at educators, and we prioritized storytelling as a method for sharing insights. The attendees shared their own stories, and it created an atmosphere of trust and openness. Isn’t it incredible how sharing personal experiences can enhance the learning process?

    Importance of topic selection

    Importance of topic selection

    Selecting the right topic for an educational event is crucial because it can make or break the experience for both the organizers and participants. I remember proposing a session on emerging technologies in education at a recent conference. Although I was excited about the subject, I realized too late that it wasn’t relevant to the attendees’ needs. What a lesson that was! Engaging the audience relies heavily on our ability to pick topics that resonate with them.

    When I think about the importance of topic selection, I see it as a bridge between presenters and participants. Choosing a topic that aligns with current trends or addresses specific challenges allows attendees to connect more meaningfully with the content. For instance, during a workshop on mental health in education, participants actively shared their own struggles, leading to richer discussions. Isn’t it rewarding when a topic not only educates but also fosters vulnerability and open communication?

    Ultimately, a well-chosen topic can drive enthusiasm and participation, paving the way for impactful learning experiences. I once attended an event focused on inclusive teaching practices, and it sparked a wave of conversations that extended well beyond the day’s sessions. Isn’t it remarkable how a single topic can inspire a community and create lasting connections? Selecting the right subject is not just about filling an agenda; it’s about igniting passion and curiosity among learners.

    Criteria for selecting topics

    Criteria for selecting topics

    When I think about criteria for selecting topics, I often reflect on the audience’s needs and interests. It’s crucial to gauge what will truly resonate with them. I once attended a panel discussion where the topic was about sustainability in education. Surprisingly, many attendees expressed their desire to learn more about practical, hands-on solutions rather than just theoretical concepts. This experience taught me that aligning topic selection with audience priorities is paramount for engagement.

    Another critical factor is ensuring that the topic is relevant in today’s context. For instance, I recall organizing a workshop on digital literacy. I was initially hesitant about its popularity, but we framed it through the lens of remote learning challenges, which resonated with the participants. This taught me that contextual relevance can transform a standard topic into something profoundly impactful. Who would have thought that a session on digital skills could ignite such vibrant discussions?

    Lastly, I believe in evaluating the uniqueness of the topic. Is there a fresh perspective or an unexplored angle you can offer? I once collaborated on a session that tackled resilience in education with a focus on actionable strategies rather than just theory. The feedback was phenomenal, and it reinforced my conviction that bringing something new to the table can significantly elevate an educational event. How can you ensure that your topic stands out in the crowd? It’s worth considering, as it may very well lead to enlightening conversations and new connections.

    Researching audience interests

    Researching audience interests

    The process of researching audience interests begins with a deep dive into what truly matters to them. I remember attending a series of community forums where people shared their thoughts on educational equity. Listening to their diverse stories revealed not just interests, but passions—topics like access to resources and inclusive teaching strategies. This experience emphasized the importance of not just scratching the surface but truly connecting with the audience’s values and concerns.

    Surveys and polls can be invaluable tools for gathering audience insights. I once conducted a simple survey ahead of a workshop on technology in education. To my surprise, the overwhelming response indicated a desire for simpler tech solutions that could be easily integrated. This taught me that when you actively seek input, you don’t just guess; you directly inform your topic selection with authentic data. Isn’t it fascinating how what we think we know can differ so much from reality?

    Engaging with the audience on social media platforms is another effective way to gauge their interests. I frequently monitor discussions and comments on educational blogs and forums. One time, I spotted a growing dialogue around mental health resources in schools. Recognizing that trend led me to develop a workshop focused on practical support strategies. Seeing the enthusiastic response from attendees reinforced my belief that when you tune into digital conversations, you uncover real-time interests that can shape compelling events. How often do you take that extra step to listen? It might just lead to your next successful topic selection.

    Evaluating current trends

    Evaluating current trends

    Evaluating current trends requires me to stay on top of emerging themes in education. I recall a recent webinar I attended where experts discussed the implications of artificial intelligence in classrooms. The sheer excitement in the virtual room was palpable, sparking my interest in how I could incorporate AI trends into my events. Have you ever experienced that thrill when a new concept resonates deeply with you?

    I often find value in attending workshops and conferences, as they allow me to gauge the current pulse of the educational landscape. Last summer, I participated in an event focused on remote learning strategies, and the discussions around innovative hybrid models were eye-opening. Many attendees shared their challenges and triumphs, which not only informed my topic selection but also provided real-world examples of what resonates with educators today. When was the last time you stepped outside your usual routine to discover what’s new in your field?

    Another critical aspect of trend evaluation is analysis. I frequently review educational publications and online resources to identify patterns and shifts. A few months ago, I stumbled upon a study highlighting the increasing importance of cultural competency in teaching. This finding prompted me to create an event centered on this vital topic, recognizing that awareness around it was growing. Isn’t it amazing how a single piece of information can ignite a whole new series of discussions?

    My personal selection process

    My personal selection process

    When I start my selection process, I often reflect on the voices of educators I’ve interacted with. For instance, during a recent gathering with teachers, I noticed an overwhelming concern about mental health in schools. Their passionate discussions left a lasting impression on me, prompting me to consider how I could create events that address these vital concerns.

    Additionally, I lean heavily on feedback from previous events. At one of my earlier workshops, participants expressed an eagerness for more hands-on activities. This feedback resonated with me, reminding me that engagement is key in educational settings. Have you ever found that your audience’s reactions can shape your plans in unexpected ways?

    Finally, I believe in the importance of my intuition during this process. There’s a certain gut feeling I get when a topic just feels “right.” Recently, while brainstorming ideas, I suddenly felt drawn to the idea of integrating technology in creative arts education. It’s almost as if a light bulb went off in my head, confirming that this emerging trend was something I needed to pursue further. Trusting that instinct can often lead us to the most impactful choices.

    Tips for effective topic selection

    Tips for effective topic selection

    When it comes to choosing topics for educational events, I always remind myself to keep the needs of the audience front and center. For instance, after a recent seminar, I overheard attendees discussing how they struggled to apply theories in real-world scenarios. This insight sparked an idea for my next event focused on practical applications of theoretical concepts. Have you ever noticed how the smallest comments can lead to the biggest ideas?

    Another approach I find valuable is exploring emerging trends in education. Recently, I stumbled upon an article discussing the rise of remote learning tools and their impact. This made me reflect on how important it is to stay current with what’s shaping our industry. By tapping into these trends, I create relevant topics that resonate with educators who want to stay ahead. Isn’t it exciting to think about what the future holds for education?

    Lastly, I often engage in brainstorming sessions with peers. During these discussions, the energy in the room can ignite fresh ideas. For example, a conversation about diversity in curricula led to a collaborative event where we explored inclusive teaching practices. This experience taught me that collaboration can not only enhance topic selection but also foster a sense of community. Have you ever considered how powerful a shared brainstorming session can be?

  • My process for representing diverse opinions

    Key takeaways:

    • Diverse opinions enrich discussions by encouraging understanding and empathy, transforming conversations into collaborative experiences.
    • Creating safe spaces and using storytelling significantly enhance engagement and the sharing of personal narratives, fostering deeper connections among participants.
    • Employing strategies like active listening and breakout sessions allows for more authentic exchanges, with a focus on respecting differing viewpoints.
    • Humor and patience play essential roles in navigating complex dialogues, helping to ease tensions and promote genuine understanding.

    Understanding diverse opinions

    Understanding diverse opinions

    Understanding diverse opinions means recognizing that everyone brings their unique experiences and perspectives to the table. I remember attending a panel discussion where participants held radically different views on education policies. Hearing their stories not only opened my eyes but also deepened my appreciation for the complexities behind each opinion.

    When I reflect on the emotional weight carried by these diverse viewpoints, it’s clear how deeply personal experiences shape our beliefs. Have you ever found yourself surprised by a friend’s opinion on a topic you thought was straightforward? Such moments reveal the rich tapestry of thought influenced by culture, upbringing, and individual struggles. It fosters a dialogue that is not just informative but transformative.

    Engaging with diverse opinions challenges us to step outside of our echo chambers. I often find myself pondering how our conversations would change if we approached them with a mindset of curiosity instead of defensiveness. Isn’t it fascinating how a respectful exchange can lead to new insights and a greater understanding of complex issues?

    Importance of diversity in education

    Importance of diversity in education

    The significance of diversity in education cannot be overstated. I vividly recall a workshop where educators from various backgrounds shared their teaching experiences. Each story highlighted how cultural context influences learning styles and student engagement. It struck me that a homogeneous teaching approach could miss the mark entirely for students whose life experiences differ greatly from that of their teachers.

    When different perspectives come together in educational settings, the learning environment flourishes. I remember a discussion in a diverse classroom about history, where students brought their family narratives into the conversation. It created a dynamic atmosphere where students learned not just from the curriculum, but from each other. Isn’t it fascinating how sharing personal stories can deepen our understanding of abstract concepts, transforming education into a rich, collaborative journey?

    Diversity also prepares students for a globalized world. In my experience, participating in multicultural events not only broadens one’s perspective but also fosters empathy. It makes me wonder: how can we expect learners to thrive in a diverse society if they’re never exposed to different viewpoints? Embracing diversity in education equips students with critical thinking skills and prepares them for the complexities they will face outside the classroom.

    Strategies for encouraging discussions

    Strategies for encouraging discussions

    Encouraging discussions in educational settings can be enhanced by creating safe spaces where every voice feels valued. I recall facilitating a workshop where we established ground rules for respectful dialogue, which eased initial tensions and allowed participants to open up. This process not only fostered trust but also encouraged sharing of diverse opinions, transforming a potentially intimidating environment into a collaborative one.

    Another powerful strategy is to employ thought-provoking prompts that spark curiosity. During a recent seminar, I used questions about societal challenges that required personal reflections. This approach led to an animated exchange of ideas, as participants felt compelled to relate their experiences to the topic. It made me realize that when we challenge people to think and share, we unlock a wealth of insight that enriches discussions.

    Additionally, integrating small-group discussions can break down barriers and facilitate deeper conversations. In my experience, when I paired participants for intimate discussions before regrouping, it allowed quieter individuals to express their thoughts more freely. Isn’t it interesting how the dynamics change when there’s less pressure? This method not only cultivates diverse opinions but also creates connections among participants that can lead to richer, more meaningful conversations.

    Techniques for facilitating conversations

    Techniques for facilitating conversations

    To facilitate engaging conversations, I find that active listening is crucial. In a recent roundtable discussion, I noticed how the act of genuinely listening—nodding, maintaining eye contact, and occasionally reflecting back what was said—significantly impacted the flow of dialogue. Participants felt heard and valued, which deepened their willingness to share their viewpoints openly. Have you ever noticed how effective listening can transform the atmosphere of a conversation?

    Another technique I’ve embraced is using storytelling to draw in diverse perspectives. I once invited participants to share personal stories related to a common theme. Watching how their narratives intertwined was mesmerizing; it created a seamless dialogue where differences were celebrated rather than glossed over. Isn’t it fascinating how personal experiences can ignite empathy and understanding among individuals with varying opinions?

    Lastly, I find that incorporating technology can be a game-changer in facilitating conversation. In a hybrid workshop I led, we used an online platform for anonymous sharing of questions and thoughts in real-time. The way participants opened up, unshackled by the fear of judgment, was astounding. It made me reflect on the power of anonymity in fostering honesty—do you think we often underestimate how shifting the medium can promote genuine dialogue?

    Methods for representing diverse views

    Methods for representing diverse views

    When it comes to representing diverse views, I’ve found that employing breakout sessions can be incredibly effective. In a workshop I led, I divided participants into smaller groups, each tasked with discussing specific angles on a contentious topic. The results were eye-opening; people felt more comfortable expressing their thoughts in a more intimate setting. Have you ever noticed how breaking down barriers can encourage more authentic exchanges?

    Another method I cherish is using visual aids to represent differing viewpoints. In one event, I created a mind map that visually displayed contrasting opinions on a particular issue. As we added insights from participants, it became clear how interconnected yet distinct their perspectives were. It was a powerful reminder that diversity isn’t just about differing opinions but also about understanding the complexity behind them. Isn’t it amazing how visual representation can shift our understanding?

    Lastly, I’ve experienced the impact of curated expert panels. When I invited professionals from various fields to discuss a topic, their insights provided a spectrum of opinions. The audience was not only able to hear diverse viewpoints but also engage in a lively discussion afterward. This dynamic exchange often reveals underlying assumptions and challenges preconceived notions. Do you think we can learn as much from others’ expertise as we do from our own experiences?

    Personal reflections on my process

    Personal reflections on my process

    As I reflect on my approach to showcasing diverse opinions, I can’t help but recall an event where I brought together individuals with strong opposing views. I encouraged open dialogue by creating a safe environment where participants felt respected and heard. It was deeply fulfilling to witness the shift in energy as the initial tension transformed into curiosity and empathy. Have you ever experienced that moment of understanding when common ground emerges?

    I also find value in personal storytelling. At one workshop, I invited participants to share their own experiences related to the topic. Hearing their stories not only humanized the issues at hand but also fostered deeper connections among attendees. It struck me how powerful personal narratives can be in bridging divides. Isn’t it fascinating how a simple story can reshape our perceptions?

    Moreover, I’ve learned the importance of active listening during these events. By simply allowing space for others to voice their thoughts without interruption, I noticed a remarkable change in the depths of the conversations. I often remind myself that sometimes, it’s not about finding common solutions but rather about understanding the myriad paths that lead us there. How often do we pause to truly listen?

    Lessons learned from diverse events

    Lessons learned from diverse events

    Diverse events have profoundly shaped my understanding of collaboration and respect. In a recent panel discussion, I witnessed how the presence of varied perspectives sparked deeper insights. One moment that stood out was when a participant challenged a common assumption, leading to a dynamic exchange that not only educated those present but also shifted our collective viewpoint. Have you ever felt that jolt of realization when a new perspective illuminates your understanding?

    Another lesson I’ve embraced is the value of patience in dialogue. At one conference, I was part of a roundtable where participants took time to articulate their beliefs, even when emotions ran high. It was during these thoughtful pauses that the most meaningful connections blossomed. This experience reminded me that fostering understanding often requires us to sit with discomfort. How crucial is it to navigate that discomfort to reach a place of genuine dialogue?

    Finally, I have learned that humor can be a powerful tool in bridging differences. During an interfaith event, one speaker used light-hearted anecdotes to address serious topics, easing the tension in the room. It illustrated for me how laughter can create a shared experience, making it easier to tackle tough conversations head-on. Don’t you think it’s incredible how laughter can weave threads of connection in the most unexpected ways?

  • My perspectives on exploring ethics and morality in discussions

    Key takeaways:

    • Ethics and morality, while often used interchangeably, encompass distinct concepts that influence personal decisions and societal interactions.
    • Engaging in ethical discussions creates opportunities for vulnerability, reflection, and personal growth, allowing individuals to confront their beliefs and develop empathy.
    • Incorporating ethics into education fosters an environment of honesty and accountability, preparing future leaders to handle moral challenges in society.
    • Real-life experiences, such as community service or workshops, provide practical insights into ethical dilemmas, fostering deeper understanding and reflection on personal values.

    Understanding ethics and morality

    Understanding ethics and morality

    Ethics and morality are often seen as interchangeable, but they have distinct nuances that shape our daily decisions. From my perspective, morality tends to reflect personal beliefs about right and wrong—often shaped by cultural, religious, and individual experiences—while ethics relates more to the rules set by external entities, like institutions or professions. For instance, I remember grappling with a moral dilemma in college: Should I report a cheating classmate, knowing it could ruin their academic journey? This internal struggle forced me to confront my moral values and the ethical standards of my academic community.

    Have you ever questioned what guides your decisions? For me, understanding ethics and morality has been a journey of self-discovery. I often reflect on conversations I’ve had with friends, where we navigate complex moral landscapes. One memorable discussion revolved around whether lying could ever be justified. It made me realize that the implications of our choices resonate beyond the individual, influencing the fabric of our relationships and society as a whole.

    As I delve deeper into ethical theories—like utilitarianism, where the focus is on the greatest good for the greatest number—I find myself occasionally wrestling with the implications of such ideas. Do we sacrifice individual rights for a perceived greater good? My own exploration of these concepts has led me to appreciate the dynamic nature of ethics and morality, as they are not just theoretical constructs but living, breathing aspects of our interactions with one another.

    Importance of ethics in education

    Importance of ethics in education

    Ethics serves as a foundational pillar in education, guiding both students and educators in making principled decisions. I often think about my own educational experiences, where ethical dilemmas required not just knowledge but the maturity to assess situations critically. For example, when I observed a classmate who had plagiarized, I was torn between wanting to uphold integrity and fearing the consequences for them. This taught me that ethics is not just about rules; it’s about fostering an environment where honesty and accountability thrive.

    The role of ethics in education extends beyond individual choices; it shapes the culture within learning institutions. I remember a professor who emphasized ethical behavior in our discussions, encouraging us to consider the broader implications of our actions. This approach sparked my curiosity: how do we cultivate an ethical mindset in future leaders? The answer lies in integrating ethics into the curriculum, allowing students to engage in critical thinking and develop a moral compass that will guide them throughout life.

    Furthermore, the significance of ethics can’t be overstated when we consider the impact on society. For example, reflecting on my volunteer work, I’ve seen firsthand how ethical practices improve community relations. I often ask myself, what kind of world would we be building if education did not prioritize ethics? The answer is clear—an ethical framework in education nurtures responsible citizens who are prepared to face moral challenges and contribute positively to society.

    Exploring ethical discussions in events

    Exploring ethical discussions in events

    When exploring ethical discussions in events, I often recall the transformative moments that stem from open dialogue. At one seminar I attended, participants were invited to share their personal experiences with ethics in their professional lives. I found it fascinating how diverse perspectives were woven together, demonstrating that ethical dilemmas often do not have clear-cut solutions. This experience opened my eyes to the rich tapestry of human values, showcasing the importance of context in moral reasoning.

    In my view, engaging in ethical discussions during events cultivates a deeper understanding of societal expectations. For instance, during a panel on corporate responsibility, one speaker shared a poignant story about a company that faced backlash over unethical practices. It made me ponder how often we overlook the moral implications of business decisions. Questions like, “What is the real cost of our choices?” resonate deeply and can propel us toward a more conscientious mindset.

    Moreover, I believe that facilitating these discussions is not just about exchanging ideas; it’s about creating safe spaces for vulnerability and reflection. A friend once shared how participating in a values-based workshop helped them confront their biases, leading to personal growth. It serves as a reminder that ethical conversations can spark profound change, affecting not only individual participants but also the wider community. How can we harness this power to promote lasting ethical engagement in future events?

    Engaging participants in moral dialogues

    Engaging participants in moral dialogues

    Creating an inviting atmosphere is crucial for engaging participants in moral dialogues. During a recent workshop, I noticed that when facilitators encouraged participants to share stories from their own lives, the conversations flowed more naturally. There’s something about personal narratives that resonate deeply, evoking empathy and prompting others to reflect on their own experiences. Isn’t it amazing how sharing a simple story can foster an environment of trust and openness?

    I once sat in a discussion where the facilitator introduced a thought-provoking ethical dilemma based on a real-world scenario. As we deliberated, the diverse opinions sparked lively debates. I felt a mix of excitement and fear as we navigated these complex issues together. This combination of emotional responses is what makes moral dialogues so engaging; they challenge us to confront our beliefs while also considering perspectives that might contradict them. How often do we get the chance to explore the nuances of our values in such a dynamic setting?

    Active listening is vital in these conversations, as it encourages a deeper connection among participants. I remember when a fellow participant voiced a controversial opinion that initially shocked me. Instead of dismissing her viewpoint, I chose to listen and ask questions, which led to a rich discussion on underlying beliefs. In that moment, I realized that engaging with differing opinions doesn’t have to be a conflict; it can be an opportunity to grow. Isn’t that what we ultimately seek in moral dialogues – growth through understanding?

    Effective strategies for ethical exploration

    Effective strategies for ethical exploration

    One effective strategy for ethical exploration is to pose open-ended questions that stimulate critical thinking. I recall a time during a philosophy class when the instructor asked, “What does it really mean to be good?” This simple yet profound question invited us to dissect our moral frameworks and personal definitions of goodness. It made me realize how often we take our values for granted without truly examining their origins. Why not challenge yourself with similar questions in discussions and see where the dialogue leads?

    Facilitating small group discussions can also enhance ethical exploration. In one event, I participated in a breakout group where we analyzed recent ethical controversies. The intimate setting allowed everyone to voice their opinions freely, leading to unexpected revelations about our views on accountability and justice. Have you ever experienced how sharing space with a smaller group can lead to deeper insights? I certainly have, and it reinforced my belief in the power of collaborative dialogue.

    Encouraging role-playing exercises can bring ethical concepts to life in a powerful way. During a workshop, I took on the role of a corporate leader facing an ethical decision. As I navigated the dilemmas presented, the experience felt strikingly real. It was a visceral reminder of how values can conflict in practice. Would you be willing to step into someone else’s shoes? From my perspective, this method not only deepens understanding but also fosters empathy, making it a valuable tool for exploring ethics.

    Personal experiences in ethical events

    Personal experiences in ethical events

    Participating in a community service project brought ethical discussions to life for me in an unexpected way. We were tasked with helping a local shelter, and during a break, I started talking with a volunteer about the complexity of charity versus empowerment. This conversation forced me to confront my own assumptions about giving. Isn’t it fascinating how real-life situations can challenge our preconceived notions of right and wrong?

    Another memorable experience happened during a campus ethics symposium where we debated the implications of artificial intelligence in society. I remember feeling uneasy as different viewpoints emerged, especially when my peers questioned whether AI might influence social inequalities. It made me reflect deeply on my own stance and consider the broader societal impact of technological advancements. Have you ever felt a sense of discomfort that ultimately led to personal growth? For me, this event certainly did.

    In a different context, I attended a film screening that highlighted ethical dilemmas faced by whistleblowers. The emotional weight of the stories resonated with me long after the event ended. I found myself grappling with the tension between loyalty to an employer and the moral imperative to expose wrongdoing. Isn’t it interesting how stories can evoke such strong ethical reflections? This experience helped me appreciate the nuanced nature of morality in real-world situations.

    Reflections on ethical discussions

    Reflections on ethical discussions

    Engaging in ethical discussions often illuminates the grey areas of morality that we don’t encounter in everyday life. I remember sitting in a philosophy class, where we dissected the trolley problem—a hypothetical scenario involving tough choices about sacrificing one life to save many. As my classmates articulated their positions, I felt a rush of emotions. Could I really advocate for such a drastic decision? Reflecting on our discussions, I realized how ethics isn’t just an academic exercise; it’s a deeply personal journey that forces us to confront our values and beliefs.

    One time, during a small group discussion about environmental ethics, I shared my perspective on sustainability and corporate responsibility. My comments sparked a lively debate, revealing differing views on whether businesses should prioritize profits over environmental protection. As we chatted, I could feel my passion growing stronger, and I was reminded of my own responsibility as a consumer. This moment made me question: How often do we consider the ethical implications of our choices? It’s clear to me that creating space for these conversations helps us evolve our understanding and encourages collective action towards a more ethical society.

    I also recall an instance at a community workshop focused on social justice issues. One participant candidly shared their experiences with systemic racism, which triggered a wave of emotions within the group. Listening to their story not only made the abstract concepts we’d studied become tangible but also highlighted the importance of empathy in ethical discussions. It left me pondering the question: How can we truly support one another if we don’t understand the underlying struggles? This experience reinforced my belief that ethical discussions demand openness and vulnerability, guiding us toward a deeper connection with both ourselves and others.

  • My principles for moderating

    Key takeaways:

    • Inclusivity and engagement are essential principles for successful educational events, fostering an environment where all voices are heard and valued.
    • Effective moderation is crucial for maintaining focus, guiding discussions, and creating a collaborative atmosphere that enriches the learning experience.
    • A successful moderator should exhibit strong communication skills, adaptability, and empathy to navigate challenges and engage participants effectively.
    • Preparation, including knowing the audience and creating a welcoming atmosphere, significantly enhances the impact of educational events.

    Understanding educational events principles

    Understanding educational events principles

    When I think about the principles behind educational events, it often brings me back to a workshop I attended years ago. The organizer highlighted the importance of inclusivity, ensuring that everyone from diverse backgrounds felt welcomed and able to contribute. It made me realize how crucial it is to create an environment where all voices are heard—after all, wouldn’t you agree that learning flourishes in a space where everyone feels valued?

    Another principle that resonates deeply with me is the emphasis on engagement. I recall a session that seemed to come alive; the facilitator employed interactive activities that not only kept participants awake but also sparked genuine conversations. It prompted me to consider how crucial it is for moderators to incorporate elements that captivate and involve the audience, fostering a more enriching experience.

    Moreover, the principle of adaptability cannot be overstated. In my experience, I’ve seen events that thrive by being flexible to participant feedback or unexpected outcomes. Have you ever been in a situation where a change in plan turned a potentially mundane session into something innovative? This principle underlines the importance of staying attuned to the audience’s needs and being ready to pivot as necessary.

    Importance of effective moderation

    Importance of effective moderation

    Effective moderation is at the core of any successful educational event. I remember a time when a moderator’s quick thinking salvaged a session that veered off track. By gently steering the conversation back to the key topics while ensuring participants still felt heard, he created a safe space that encouraged open dialogue. Isn’t it fascinating how one person’s ability to guide discussions can shape the entire atmosphere of an event?

    Moderation also plays a vital role in maintaining focus. I once attended a workshop where the moderator struggled to rein in participants who frequently went off-topic. The lack of direction not only diluted the session’s impact but left many attendees feeling frustrated. This experience underscored for me that without effective moderation, discussions can quickly spiral, diverting attention from the valuable insights meant to be shared.

    Finally, I’ve seen how a skilled moderator can foster a sense of community among attendees. I vividly recall a panel discussion where the moderator encouraged participants to ask questions, framing them as a collaborative exploration rather than interrogative ones. It transformed the experience, making everyone feel part of the collective learning journey. Doesn’t this dynamic illustrate the power of effective moderation in enriching educational events?

    Key qualities of a moderator

    Key qualities of a moderator

    A successful moderator possesses strong communication skills, which are essential for guiding discussions smoothly. I recall a session where the moderator expertly clarified complex points, using relatable analogies that resonated with the audience. This ability to articulate ideas clearly not only helped attendees grasp the material but also facilitated more meaningful interactions. Have you ever noticed how effective communication can ignite engagement?

    Another key quality is adaptability. I once observed a moderator who, faced with unexpected technical difficulties, maintained composure and transitioned the group into a relevant discussion. By being adaptable, they turned a potential setback into an opportunity for deeper conversation, highlighting the idea that challenges can be reframed as moments for learning. Isn’t it remarkable how flexibility can turn obstacles into stepping stones?

    Empathy is also critical for a moderator. In one workshop, I saw how a moderator attentively listened to participants, validating their concerns and feelings, which fostered an open atmosphere. When a moderator displays genuine empathy, it encourages attendees to share their thoughts without fear of judgment. Don’t you think that emotional intelligence is a game changer in creating a supportive learning environment?

    Preparing for educational event moderation

    Preparing for educational event moderation

    Preparing for educational event moderation requires thorough organization. I always start by reviewing the agenda and materials well in advance. This ensures that I’m familiar with the topics and can anticipate questions or areas where participants might need more clarity. Have you ever experienced the relief that comes from being well-prepared? It truly makes a difference.

    Another important step is understanding the audience. I make it a point to know who will be attending and what their interests are. For instance, during a recent panel discussion, I realized that tailoring my approach to match the audience’s background created a more engaging experience. It’s amazing how connecting with the audience on their level can spark richer conversations. Wouldn’t you agree that knowing your audience amplifies the impact of the event?

    Lastly, I always prioritize creating a welcoming atmosphere. Before an event, I sometimes even visualize how I want the room to feel – open and inviting. During one event, simply arranging the seating in a circle encouraged more interaction than I had anticipated. How can something so simple, like seating arrangements, significantly influence engagement? This kind of preparation goes beyond logistics; it sets the tone for a meaningful experience.

    Engaging participants during events

    Engaging participants during events

    Engaging participants during events is all about creating opportunities for interaction. I’ve found that incorporating icebreakers can instantly transform the atmosphere. During one workshop, I had participants draw a picture that represented their learning goals. It was fun, surprising, and really helped everyone feel at ease. Can you imagine the laughter that erupted as we shared our drawings? That simple activity opened the door for deeper discussions throughout the event.

    Additionally, I use thoughtful questioning techniques to maintain momentum. While moderating a roundtable, I would ask open-ended questions that encouraged everyone to contribute. One participant shared an unexpected perspective about educational technology that sparked a lively debate. I believe that when people feel their thoughts matter, they engage more openly. Isn’t it fascinating how a single question can lead to such rich dialogue?

    Finally, I always keep an eye on non-verbal cues from the audience. At one event, I noticed a few participants looking disengaged, so I paused to invite their opinions directly. It was eye-opening! The moment I asked for their input, the energy in the room shifted dramatically. Don’t you think that being attuned to our audience helps us create a more dynamic space for learning? It’s about being present and responsive to the needs of the participants.

    Addressing challenges in moderation

    Addressing challenges in moderation

    Addressing challenges in moderation often means navigating differing opinions and potential conflicts. I remember a panel discussion where the experts held starkly contrasting views on educational policy. At first, the tension was palpable, and I could sense discomfort among the audience members. By acknowledging the differences openly, I created a safe space for dialogue, inviting each expert to express their thoughts further. Isn’t it rewarding when addressing tension can actually transform the conversation into a constructive exchange?

    Another challenge is managing time effectively while ensuring that all voices are heard. I once moderated a workshop where participants had a wealth of ideas but limited time to share them. To tackle this, I implemented a timed round-robin format. Each participant received a minute to share their thoughts, keeping the energy high and allowing everyone to contribute. Have you ever felt that rush when multiple ideas are shared in quick succession? It can lead to a brilliant flow of creativity.

    Sometimes, it’s about addressing the quieter voices in the room. During a breakout session, I noticed a participant who seemed hesitant to speak. I took a moment to connect with them privately, asking if they had any thoughts to share. Their insights turned out to be enlightening, adding depth to our discussion. By being proactive in seeking out these quieter voices, we can uncover valuable perspectives and enrich the overall experience for everyone involved. How essential is it to cultivate a space where everyone feels empowered to share?

    Personal reflections on moderation experience

    Personal reflections on moderation experience

    In my journey as a moderator, I’ve learned that each event presents unique dynamics. Once, during a community forum, I faced a challenging moment when a participant became emotionally overwhelmed. I felt the weight of the room shift; everyone was hesitant. By gently guiding the conversation to focus on their feelings and validating their experience, I not only relieved the tension but also fostered a deeper connection among participants. Isn’t it incredible how empathy can transform a potentially isolating experience into a collective journey?

    I’ve also realized that preparation can’t be overstated. For example, before moderating an educational symposium, I spent time researching each speaker’s background and expertise. This preparation allowed me to ask tailored questions that not only stimulated insightful discussions but also encouraged speakers to express their passion. Have you ever noticed how a well-placed question can unlock a wave of enthusiasm? It’s as if the right words can bridge gaps and foster real engagement.

    Moreover, I often find that allowing space for silence can be just as powerful as facilitating discussion. In one event, after posing a complex question, I intentionally paused to give participants time to reflect. The quiet that followed felt charged with potential, as ideas began to crystallize in their minds. I believe that moments of silence allow for deeper thought and ultimately contribute to more meaningful conversations. What if we embraced those pauses instead of filling them with chatter?

  • My perspectives on peer feedback

    Key takeaways:

    • Peer feedback enhances learning by building trust and fostering a community focused on mutual growth.
    • Effective feedback methods include written critiques for thoughtful analysis and verbal discussions for spontaneous insights.
    • Receiving feedback requires an open mindset, viewing it as an opportunity for personal development.
    • Asking clarifying questions during feedback sessions can lead to deeper understanding and improved outcomes.

    Understanding peer feedback importance

    Understanding peer feedback importance

    Peer feedback plays a crucial role in the learning process, transforming how we view our work. I remember a group project in college where my classmates offered unexpectedly insightful comments on my presentation. Their feedback not only boosted my confidence but also highlighted areas I’d never considered, showcasing how collaboration often unveils a deeper understanding.

    Think about this: Have you ever been surprised by how much a friend’s perspective can shift your view? When I reflect on my own experiences, I realize that peer feedback doesn’t just improve the quality of our work; it builds a community rooted in trust and mutual growth. There’s something powerful about working alongside others who challenge us to think differently, which makes the learning experience richer.

    Understanding the importance of peer feedback also cultivates critical thinking skills. Through reviewing others’ work, I learned how to analyze not only their strengths but also my own weaknesses. This reciprocal process fosters an environment where learners feel valued and actively engaged, enhancing not just individual growth but the group’s dynamic as a whole.

    Types of peer feedback methods

    Types of peer feedback methods

    When it comes to peer feedback methods, I’ve found that two main approaches stand out: written feedback and verbal feedback. In my experience, written feedback allows for more thoughtful responses, as it gives individuals time to process their thoughts. I remember receiving a detailed critique via email during a workshop; it was clear, constructive, and really helped me address specific concerns about my project.

    Another method I’ve encountered is the peer review session, where participants discuss their work aloud in small groups. This approach always sparked lively discussions, and I often left feeling energized. I can still recall a session where one of my peers posed a question that completely shifted my perspective on my project. It makes me wonder: how often do we overlook insights that come from spontaneous conversations?

    Then there’s the 360-degree feedback approach, which provides input from multiple peers and mentors. In my own journey, I found this method to be particularly enlightening. Receiving diverse perspectives illuminated aspects of my work that I hadn’t considered before, fostering a deeper understanding of my skills and areas for improvement. Isn’t it fascinating how varied viewpoints can lead to growth we didn’t know we needed?

    How to receive peer feedback

    How to receive peer feedback

    Receiving peer feedback is a skill that many of us can cultivate with the right mindset. I remember feeling a mix of anxiety and excitement before sharing my work for feedback during a group project. That experience taught me to view feedback as an opportunity for growth rather than a personal critique. Have you ever considered how your perception can reshape your approach to receiving feedback?

    One thing I’ve learned is the importance of being open and receptive. After a particularly tough critique, I took a moment to reflect on the feedback rather than react defensively. It was then that I realized the feedback aimed to help me improve, not to diminish my efforts. How often do we let our initial reactions cloud our ability to absorb valuable insights?

    Additionally, asking clarifying questions can significantly enhance the feedback experience. In one instance, after receiving feedback on a presentation, I was unsure about a few comments. By seeking clarification from my peers, I was able to grasp their intentions, which ultimately refined my final project. Isn’t it intriguing how a simple question can unlock deeper understanding and ultimately lead to better outcomes?

  • My perspectives on reframing panel norms

    Key takeaways:

    • Educational events promote learning and collaboration, enhancing engagement through dialogue and physical space considerations.
    • Panel discussions foster interactive learning, encouraging diverse viewpoints and audience participation to deepen understanding.
    • Challenges include dominant voices overshadowing quieter ones, strict adherence to scripts, and insufficient audience engagement strategies.
    • Reforming panel norms involves encouraging participation, allowing authenticity, and integrating real-time audience feedback for dynamic discussions.

    Understanding educational events

    Understanding educational events

    Educational events serve as vital platforms for learning and collaboration, where individuals can come together to share knowledge and insights. I remember attending a workshop that transformed my understanding of collaborative learning. It was eye-opening to witness firsthand how diverse perspectives can ignite creativity and foster innovation among participants.

    These events are not merely about content delivery; they are about creating a space for dialogue and interaction. Have you ever left a session feeling inspired and charged with new ideas? I have, and it’s those moments of connection with others that truly enrich the learning experience.

    Moreover, the effectiveness of educational events often hinges on their structure and environment. Reflecting on my own experiences, I’ve found that breaking down furniture barriers or encouraging casual discussions during breaks can significantly elevate engagement levels. Isn’t it fascinating how the physical space we occupy influences our ability to learn together?

    Importance of panel discussions

    Importance of panel discussions

    Panel discussions play a crucial role in educational events by fostering an interactive learning atmosphere. I recall being part of a panel where experts shared their diverse experiences on a hot topic. The back-and-forth dialogue not only deepened my understanding but also highlighted the complexities surrounding the issue, creating a more dynamic learning experience for everyone involved.

    What truly struck me was the way panel discussions encourage audience participation. During one particular session, a member from the crowd posed a question that sparked a lively debate among the panelists. It reminded me how essential it is to bring different voices into the conversation. Have you ever felt more engaged when your thoughts are invited? I know I have, and it enhances the overall impact of the event.

    Furthermore, the value of panel discussions lies in their ability to expose participants to varying viewpoints. When I attended a panel featuring leaders from different industries, I found myself reconsidering my own assumptions. It was an enlightening reminder of how important it is to challenge our perspectives through open dialogue. Isn’t it amazing how one conversation can reshape our understanding of the world?

    Common panel norms in education

    Common panel norms in education

    Panel discussions often follow a set of norms that guide their structure and interaction. One common norm is the expectation that panelists should prepare in advance, allowing them to share meaningful insights and stories. I remember a panel where the preparation truly shone through; the experts seamlessly connected their fields with personal anecdotes, making complex concepts accessible. Have you ever encountered a panel where it felt like the speakers were really in tune with each other? That collaborative energy is both captivating and informative.

    Another prevalent practice is the role of a moderator, who steers the conversation and ensures that all voices are heard. I once participated in a session where the moderator skillfully balanced the dialogue, allowing quieter panelists to contribute their perspectives. It demonstrated to me the importance of having someone who can navigate discussions effectively. How often have you felt a conversation take a turn when a skilled mediator intervenes? It’s moments like these that illustrate the power of thoughtful facilitation.

    Additionally, the expectation of audience engagement is vital in educational panels. I’ve often seen panels where participants are encouraged to ask questions, creating a two-way street of knowledge exchange. There was a time when an attendee posed a challenging question that led to unexpected insights from the panel. It made me realize how essential it is for attendees to feel empowered to speak up. Isn’t it interesting how a single question can elevate the entire discussion and spark deeper contemplation among everyone present?

    Challenges in current panel norms

    Challenges in current panel norms

    One significant challenge in current panel norms is the tendency for dominant voices to overshadow quieter ones. I attended a panel where one expert monopolized the conversation, leaving little room for others to share their insights. It made me wonder: how many brilliant ideas went unheard simply because the discussion became unbalanced? This scenario not only limits diverse perspectives but can also diminish the audience’s overall experience.

    Another issue is the pressure on panelists to adhere strictly to their prepared talking points. In a recent discussion, I noticed a panelist glossing over a personal story that could have resonated deeply with the audience, all in the name of staying on script. It’s a shame, really, as authenticity often fosters deeper connections. Do we risk losing valuable dialogues when we prioritize structure over spontaneity?

    Lastly, many panels lack effective mechanisms for genuine audience engagement, often resorting to scripted Q&A sessions that feel more like a formality than an opportunity for interaction. I recall a session where the audience was invited to share their thoughts via a digital platform, creating an electrifying atmosphere. The shift was palpable—suddenly, the energy in the room transformed into a vibrant discussion fueled by varied voices. Isn’t it essential for panels to evolve and truly embrace the input of their audiences?

    Reframing panel norms effectively

    Reframing panel norms effectively

    One effective way to reframe panel norms is to actively encourage participation from all members, creating a safe space where everyone feels valued. I once facilitated a panel where, before starting, I invited each participant to share a brief personal anecdote related to the topic. This small shift instantly altered the dynamics; it not only warmed up the room but also invited even the more reserved panelists to join the conversation. Have you ever noticed how a simple invitation can transform interactions?

    Another approach involves allowing panelists to step away from their scripts and speak authentically. In one panel I attended, a panelist broke from their prepared notes to discuss a powerful moment from their career. The room fell silent, captivated by their raw honesty. It made me reflect on how often we miss out on these resonating stories when we prioritize adherence to structure. Isn’t it fascinating how vulnerability can create stronger bonds among a panel and its audience?

    Finally, integrating real-time feedback from the audience can lead to a more dynamic and engaging experience. I recall a session where we used live polls to gauge audience interests, guiding the discussion in real-time. The shift in energy was tangible, as attendees felt their thoughts were shaping the direction of the panel. Wouldn’t it be revolutionary if every panel adopted such interactive methods, making each event a unique dialogue rather than a one-way exchange?

    Strategies for successful panel reformation

    Strategies for successful panel reformation

    Creating a successful panel reformation begins with defining clear objectives for the discussion. I once worked on a panel where we set aside time at the start to outline the key questions we aimed to tackle. This simple strategy focused the energy of the participants and allowed them to engage more purposefully. Doesn’t it make sense that when everyone knows the goals, conversations naturally flow more smoothly?

    Additionally, empowering a facilitator who can adeptly read the room is crucial. I’ve seen sessions where the moderator lacked the ability to steer the conversation when it veered off track. In one memorable instance, a skilled facilitator gracefully redirected a meandering discussion back to relevant points, allowing for richer contributions from panelists. It’s remarkable how a good facilitator can transform the entire dynamic—have you experienced that shift in energy when the right person is guiding the conversation?

    Lastly, consider the value of diverse panel representation. During a particularly enlightening event, I witnessed how including voices from various backgrounds sparked richer discussions and challenged the dominant narratives. The variety of perspectives encouraged critical thinking and made the panel thoroughly engaging. Isn’t it incredible how diversity can elevate conversations and lead to unexpected insights?

    Personal reflections on panel changes

    Personal reflections on panel changes

    Reflecting on recent changes in panel formats, I can’t help but appreciate the shift towards more interactive discussions. I recall a session where, instead of waiting for Q&A at the end, audience members were encouraged to ask questions throughout. This not only made the audience feel valued but also transformed the overall atmosphere into a vibrant exchange of ideas. Have you noticed how spontaneous dialogue can breathe new life into discussions?

    The adjustments in panel structures have also prompted a rethinking of how we define expertise. In one event, we invited a young entrepreneur alongside seasoned professionals. The fresh perspective of the newcomer not only challenged the status quo but also inspired the veterans to reconsider their experiences. It was a powerful reminder that wisdom doesn’t always come with years; sometimes, innovative ideas arise from unexpected voices. How often do we embrace the potential for insight from those who are still carving their paths?

    Moreover, I’ve found that encouraging vulnerability among panelists can lead to profound connections with the audience. In a recent panel, one speaker openly shared their early career struggles, prompting others to share similar stories. That moment of honesty forged an authentic bond between the panel and the audience, leaving everyone with a sense of shared humanity. Isn’t it fascinating how openness can dissolve barriers and create a more enriching environment for everyone involved?

  • My perspectives on celebrating small successes

    Key takeaways:

    • Small successes in education foster confidence and encourage participation, transforming students’ learning experiences.
    • Celebrating minor achievements creates a positive classroom environment, enhances motivation, and builds a sense of belonging among students.
    • Incorporating celebrations into educational events strengthens community bonds and promotes engagement.

    Understanding small successes in education

    Understanding small successes in education

    Small successes in education often emerge in overlooked moments—like the day a student confidently shares their first book report or finally solves a challenging math problem. I still remember a student of mine who once struggled to contribute in class; when she finally raised her hand to answer a question, the joy on her face lit up the room. These moments matter immensely, reaffirming the idea that progress isn’t always grand; sometimes, it’s simply about being brave enough to speak up.

    Understanding these small victories can transform how we view education. It prompts us to ask ourselves: how often do we celebrate the minor wins? Reflecting on my experiences, I’ve found that acknowledging these achievements fosters an encouraging atmosphere. For instance, after one student completed their first homework assignment independently, I made it a point to celebrate that effort. It was a small moment, but it sparked a newfound confidence in them.

    Moreover, small successes serve as the building blocks for larger accomplishments. Every tiny step taken in learning creates a pathway to greater understanding and skill development. I’ve witnessed students who once hesitated in class gradually become confident participants, and it all started with those seemingly trivial wins. Each achievement, no matter how small, plays a crucial role in shaping their educational journey.

    Importance of celebrating achievements

    Importance of celebrating achievements

    Celebrating achievements is vital because it reinforces the belief that every effort counts. I still recall a time when I organized a simple certificate ceremony for students who completed their reading logs. As each student received their certificate, I could see the pride in their eyes. This small act not only boosted their self-esteem but also motivated their peers to strive for similar recognition.

    When we acknowledge accomplishments, no matter how minor, we create a positive feedback loop. I remember a student who was often overlooked during group activities. Yet, when I publicly praised her for effectively summarizing a discussion, it was as if a light bulb went off. She not only smiled but also engaged more actively in future discussions. Isn’t it amazing how recognition can shift someone’s perspective and encourage them to embrace their potential?

    Additionally, celebrating small successes can enhance the classroom environment. Reflecting on my teaching journey, I’ve learned that when we highlight individual achievements, we foster a culture of support and encouragement. I once started a “Wall of Fame” featuring students’ accomplishments, big and small. Watching them take pride in this collective celebration cultivated a sense of community. Why not consider how you could integrate similar practices in your own educational spaces?

    Benefits of recognizing small wins

    Benefits of recognizing small wins

    Recognizing small wins has an immediate impact on motivation. I recall when I encouraged my colleagues to acknowledge their teaching milestones, no matter how small. The look of surprise on their faces when they realized the power of a simple “well done!” was priceless. Those small affirmations fueled a collective enthusiasm that rippled through our entire team, reminding us all that progress comes in many forms.

    In my experience, celebrating small successes fosters resilience. One time, a student who was struggling academically celebrated his completion of a challenging assignment. I can still picture the determination in his eyes—the pride was palpable. This moment didn’t just mark an academic win; it instilled confidence in him to tackle even more significant challenges ahead. Hasn’t everyone felt empowered by seeing their efforts recognized, even if those efforts seem small?

    Moreover, acknowledging these achievements can build a stronger sense of belonging. I remember creating a “celebration jar” in my classroom where students could write down their small successes and drop them in. The excitement during our weekly sharing sessions, as each student read aloud a success story, was contagious. It transformed our classroom into a nurturing environment where everyone felt valued. Isn’t it amazing how these seemingly minor celebrations can weave a fabric of connection and support?

    Ways to celebrate small successes

    Ways to celebrate small successes

    One effective way to celebrate small successes is by organizing a team shout-out during meetings. I remember a time when our team would take a few minutes each week to recognize individual contributions. Those moments became a highlight for everyone involved, as each shout-out not only brought smiles but also reinforced our commitment to one another. Isn’t it uplifting to know that your small efforts are acknowledged and appreciated?

    Another method that resonates with me is creating personalized reward systems. In my experience as an educator, I would hand out “success badges” whenever a student achieved a personal goal. This simple visual reminder of their accomplishment followed them throughout the semester, sparking pride and encouraging them to keep pushing forward. Can you recall a time when a simple token fueled your motivation to strive for even more?

    Finally, I suggest hosting small celebration events or gatherings. I once organized a themed potluck that invited everyone to share a dish representing a small win they had achieved. It led to laughter and camaraderie, as we all shared our stories of challenges and victories over good food. Doesn’t the act of gathering to celebrate shared experiences enhance our collective journey?

    Incorporating celebrations into educational events

    Incorporating celebrations into educational events

    Incorporating celebrations into educational events can truly transform the atmosphere. During a recent workshop I attended, we set aside time for brief celebrations after each session, allowing participants to share their progress. I vividly recall the collective cheer that erupted when someone shared their breakthrough moment. It didn’t just lighten the mood; it strengthened the community, reminding us that we were all part of something bigger.

    Another impactful approach is to integrate themed activities that align with the educational objectives. For instance, I once facilitated a workshop on creative problem-solving where, after each group presented their innovative solutions, we threw a mini celebration with fun props and music. The playful elements created an environment ripe for creativity, and it was fascinating to see how those small celebrations unlocked deeper engagement. Isn’t it amazing how a sprinkle of joy can inspire further collaboration?

    Additionally, I find that creating a visually celebratory space can energize participants. During a conference I helped organize, we adorned the hall with colorful banners showcasing attendees’ achievements. Each time someone walked by and saw their name or achievement displayed, their face lit up with pride and happiness. Have you ever walked into a space that made you feel celebrated? It’s a powerful reminder of what we can achieve together while enriching the educational journey.

    Personal experiences with small successes

    Personal experiences with small successes

    I remember a time when I finished a challenging online course. I had set a small goal for myself: to complete it within a month. When I hit that mark, I celebrated by treating myself to a favorite meal. It felt more than just a reward; it was a recognition of my effort and commitment. Have you ever noticed howself-acknowledgment can boost future motivation?

    Another small success that stands out to me occurred during a community service project I led. After each day’s work, we gathered to share wins, whether big or small, and I found myself genuinely inspired by the stories my team shared. One person illustrated how they overcame a personal hurdle to contribute effectively. That sharing moment didn’t just uplift individuals; it created a bond among us that made the hard work feel worthwhile. Could anyone have guessed that simple discussions could foster such a strong sense of belonging?

    Lastly, there was a day when I received positive feedback on a presentation I had given. Instead of brushing it off as merely “part of the job,” I chose to document that moment in my journal. I reflected on not just the words but the emotions tied to that acclaim. Each time I read that entry, it rekindles a spark within me. How often do we take the time to recognize and celebrate our smaller milestones, letting them fuel our journey forward?