= 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 strategies for bridging generational gaps in discussion

    Key takeaways:

    • Generational gaps in communication stem from differing experiences and preferences, affecting understanding and collaboration.
    • Bridging these gaps encourages diverse perspectives, fostering creativity and mutual respect among team members.
    • Techniques like active listening, vulnerability sharing, and engaging activities can enhance openness and dialogue across generations.
    • Successful educational events illustrate the value of cross-generational collaboration, revealing insights that enrich participants’ understanding and connections.

    Understanding generational gaps in discussion

    Understanding generational gaps in discussion

    Generational gaps in discussion can often feel like speaking different languages. I recall a team meeting where the younger members were eagerly suggesting digital tools, but some of my senior colleagues seemed bewildered, longing for the comfort of their traditional methods. Has this happened to you in your conversations?

    Understanding these gaps requires recognizing that each generation brings its own set of experiences and communication styles. For example, while I cherish face-to-face interactions, my younger friends often prefer text messages and memes. Doesn’t this difference sometimes lead to misunderstandings or even frustration?

    The emotional landscape of discussions across generations can be quite complex. I’ve witnessed a mix of enthusiasm and apprehension when older and younger individuals come together. The eagerness of youth can clash with the caution of experience, leaving us to ponder: how can we bridge this divide to foster more meaningful conversations?

    Importance of bridging generational gaps

    Importance of bridging generational gaps

    Bridging generational gaps is essential for fostering understanding and collaboration. I remember a workshop where participants from varying age groups shared insights on project management. The younger attendees brought fresh ideas, while the older ones offered practical wisdom. This exchange not only enhanced the project but also built mutual respect among team members. Don’t you think that such connections can pave the way for innovative solutions?

    When we make an effort to understand each other, we unlock a treasure trove of diverse perspectives. I often find myself learning something unexpected from conversations with my younger colleagues, like new tech tricks or fresh takes on problem-solving. This diversity of thought not only enriches discussions but also encourages creativity. How can we ignore the potential for growth when we bring different viewpoints together?

    The emotional component of bridging these gaps shouldn’t be underestimated. I’ve noticed that when older generations feel heard and valued, they tend to open up more during discussions. Creating a safe space for dialogue can help ease tensions and foster camaraderie. Could the secret to effective teamwork lie in our willingness to listen and empathize with one another?

    Strategies for effective communication

    Strategies for effective communication

    Understanding the style and preferences of each generation can significantly enhance communication. I’ve noticed that younger individuals often prefer digital communication, while older generations appreciate face-to-face interactions. By adjusting my approach—like using group messaging for quick updates or scheduling in-person meetings for collaborative brainstorming—I can bridge the gap and foster more effective discussions. What strategies do you think work best in your experience?

    Active listening plays a central role in effective communication across generations. I remember a time during a team meeting when I consciously put aside my thoughts and focused entirely on what my older colleague was saying. This simple act allowed me to grasp the nuances of their perspective, and it transformed the conversation into a meaningful dialogue. How often do we miss out on valuable insights because we’re too distracted by our own ideas?

    Encouraging questions is another strategy I’ve found invaluable. During a recent intergenerational workshop, I asked both younger and older participants to share what they wanted to know from one another. The results were enlightening! It created a dynamic exchange where curiosity drove the conversation, leading to deeper understanding. Isn’t it remarkable how fostering curiosity can break down barriers and ignite passionate discussions?

    Techniques for fostering openness

    Techniques for fostering openness

    To foster openness in discussions, I often use a technique called vulnerability sharing. There was a time when I shared a personal challenge from my early career during a mixed-generation panel discussion. By being open about my struggles and mistakes, I noticed others felt comfortable doing the same. This created a safe space where participants felt they could express their thoughts freely. Have you ever considered how sharing your own experiences can encourage others to open up?

    I also prioritize creating a relaxed atmosphere to ease tension and promote openness. In a recent workshop, we played an icebreaker game that had everyone laughing and bonding over shared experiences. This light-hearted approach not only broke the initial barriers but also made it easier for individuals to voice their opinions without fear of judgment. Wouldn’t it be wonderful if every discussion started with a little laughter and connection?

    Regularly checking in with participants can significantly enhance openness as well. After realizing that some voices were quieter in discussions, I began implementing a simple practice of asking for feedback on the atmosphere of our sessions. Whether it was through anonymous surveys or casual one-on-one chats, I discovered that many felt more at ease sharing their thoughts when they saw that their comfort mattered. How can we prioritize the feelings of those around us to create more inclusive conversations?

    Engaging activities for cross-generational dialogue

    Engaging activities for cross-generational dialogue

    One engaging activity I often use to spark cross-generational dialogue is storytelling circles. In a recent event, I invited participants to share a brief story from their past, related to a specific theme such as “overcoming challenges.” The room buzzed as individuals from different generations shared their experiences, seamlessly weaving together lessons that resonated across age groups. Have you ever noticed how a simple story can bridge the gap between ages?

    Another technique that really stands out is creative collaboration. For instance, I once organized a mixed-age workshop where teams created a project together, choosing to design a poster or a video presentation. Watching them brainstorm and incorporate diverse perspectives was a revelation; even a teenager’s fresh ideas complemented a retiree’s wealth of experience. How powerful is it to see the magic of collaboration unfold right before your eyes?

    Lastly, I’ve found that cooking together can become a delightful platform for dialogue. In one event, we invited participants to prepare a dish that represented their childhood. This not only elicited conversations about cultural heritage but also led to shared laughter and stories over the simmering pots. Has cooking ever made you feel more connected to someone else’s story? It’s fascinating how food can act as a universal language, fostering connections across generations.

    Examples of successful educational events

    Examples of successful educational events

    One notable example of a successful educational event was a community forum I attended that focused on technology’s impact across generations. Participants were invited to share their experiences—some reminiscing about the first time they used a rotary phone, while others discussed their first smartphone. It was a powerful moment to witness how everyone, regardless of age, reflected on their adaptability to change and the importance of staying connected. Have you ever thought about how technology shapes our lives differently depending on our age?

    In another event, we hosted a panel discussion featuring educators from different generations discussing the evolution of teaching methods. The back-and-forth exchange demonstrated how traditional techniques merge with modern approaches. Listening to the seasoned educators highlight the value of personal connections and the younger ones push for interactive technology was enlightening. It made me realize how education can evolve when generations collaborate. Isn’t it interesting how two perspectives can create a more holistic understanding of a topic?

    A memorable workshop I facilitated involved participants designing a mural that represented their combined vision for the future. This creative endeavor brought out both youthful enthusiasm and seasoned wisdom, with each stroke of paint reflecting a shared hope. As we painted together, laughter filled the air, and heartfelt discussions unfolded about dreams and aspirations. Have you ever experienced the magic that happens when people unite for a common purpose? It’s moments like these that truly illustrate the potential of educational events to bridge gaps and foster collaboration.

    Personal experiences in bridging discussions

    Personal experiences in bridging discussions

    In my experience, I once participated in a roundtable discussion where our main goal was to explore different perspectives on work-life balance. I remember sitting next to a young professional who had very different views on the topic compared to a retiree sharing his insights from over 30 years in the workforce. The exchange became a real eye-opener, leading me to think about how varied our definitions of success can be based on our generational context. Does it surprise you how our backgrounds influence our priorities?

    At another event, I led a workshop where attendees were encouraged to share their favorite books from childhood. I was captivated by the enthusiasm of younger participants discussing the latest series they were reading, while older participants nostalgically recalled classics. As they began to exchange ideas, I felt a bridge forming—not just through the stories, but through memories that resonated across age groups. Isn’t it fascinating how literature can unite us in such a profound way, regardless of the time we spent growing up?

    I also remember moderating a discussion about the role of mentorship across generations. The enthusiasm from young mentees listening to their older counterparts was palpable. One mentee shared how the advice from a retired professional transformed her approach to her career, which then led to an inspiring conversation about fostering relationships in the workplace. Have you ever felt that sense of connection and understanding blossoming from simply sharing experiences? It was a reminder of how powerful dialogue can be in shaping our paths.

  • My strategies for conflict resolution

    Key takeaways:

    • Conflict resolution is vital in personal and professional relationships, requiring a proactive approach to address underlying emotions.
    • Active listening and mediation techniques can transform conflicts into constructive conversations and foster cooperation.
    • Focusing on solutions instead of blame strengthens team dynamics and promotes collaboration during conflicts.
    • Techniques such as empathy, taking “timeouts,” and using open-ended questions enhance understanding and facilitate deeper dialogue.

    Introduction to conflict resolution

    Introduction to conflict resolution

    Conflict resolution is an essential skill in both personal and professional settings. From my experience, unresolved conflicts can fester and lead to greater issues down the line. Have you ever found yourself in a disagreement so tangled that it seemed impossible to find common ground?

    When I first faced a significant conflict among team members, I felt a wave of frustration wash over me. It was a challenging moment that taught me the importance of addressing issues head-on rather than letting them simmer. I realized that, often, it’s about understanding the underlying emotions—what drives each person’s perspective—and finding a way to navigate those feelings toward resolution.

    Recognizing that conflict is a natural part of relationships can shift how we approach it. I often ask myself, “What can I learn from this situation?” By reframing conflict as an opportunity for growth, we can create a safer space for dialogue and resolution. How do you view conflicts in your life—do you see them as hurdles or as stepping stones toward improvement?

    Strategies for effective conflict management

    Strategies for effective conflict management

    Effective conflict management starts with active listening. I’ve found that when I genuinely listen to the other person’s perspective, it opens up a pathway to understanding their emotions and motivations. Have you ever noticed how simply hearing someone out can diffuse tension? It’s remarkable how this single step can turn a heated argument into a constructive conversation.

    In another instance, I used mediation techniques to guide a difficult discussion between two colleagues. We collaborated to set ground rules that ensured respect and clarity in our dialogue. I vividly remember how, after establishing a safe environment, both parties slowly began to voice their concerns. It was rewarding to see them shift from confrontation to cooperation, discovering shared goals that had initially been overshadowed by their differences.

    Moreover, I find that focusing on solutions rather than blame is crucial. One time, during a team project, emotions ran high when deadlines loomed. Instead of pointing fingers, we collectively brainstormed potential solutions. This approach not only resolved the immediate issue but also strengthened our team’s bond. Have you tried shifting the focus in your conflicts? It’s truly amazing how it can change the dynamics of the conversation.

    My personal conflict resolution techniques

    My personal conflict resolution techniques

    I often rely on the technique of empathy during conflicts. For me, putting myself in the other person’s shoes can truly transform the interaction. I remember a time when a friend was upset with me over a misunderstood comment. By genuinely trying to feel what they were experiencing, I was able to communicate my regret effectively and rebuild our relationship. Have you ever tried to see things from a different perspective? It makes a world of difference.

    Another method I frequently use is the “timeout” approach. I’ve learned that stepping back for a moment can be incredibly beneficial. Once, during a heated debate at a workshop, I recognized signs of escalating emotions. I suggested a short break to collect our thoughts. This pause helped us return with clearer minds and ultimately led to a more productive discussion. Isn’t it interesting how a little space can create clarity?

    Finally, I embrace open-ended questions as a tool for deeper dialogue. When I’m both participating and guiding discussions, I find that asking questions like, “What do you think would help us both feel heard?” invites others to share their feelings safely. This approach has proven invaluable in resolving misunderstandings. It’s fulfilling to see how these questions often uncover underlying issues that we hadn’t even considered. Have you considered the power of inquiry in your own conversations? It really can open doors to resolution.

  • My strategies for building respectful dialogue

    Key takeaways:

    • Respectful dialogue fosters mutual respect, understanding, and deeper connections in conversations.
    • In educational settings, dialogue cultivates critical thinking, collaborative learning, and empowers students to voice their thoughts.
    • Active listening, setting ground rules, and sharing personal stories are effective strategies for fostering meaningful dialogue.
    • Empathy, “I” statements, and allowing pauses are crucial techniques for managing difficult conversations effectively.

    Understanding respectful dialogue

    Understanding respectful dialogue

    Respectful dialogue is about more than just exchanging ideas; it’s about recognizing the value of each participant’s perspective. I remember a time during a workshop where every participant was encouraged to share their views without fear of judgment. This environment fostered not just conversation but also mutual respect and understanding. Isn’t it fascinating how open dialogue can transform a group dynamic?

    When we engage in respectful dialogue, we create a safe space where different opinions can coexist. I often ask myself, what if we approached every conversation with curiosity instead of defensiveness? I’ve found that this shift often leads to deeper connections and breakthroughs that I never anticipated.

    It’s essential to listen actively and validate others’ feelings, even if we don’t fully agree with their viewpoints. Once, during a heated discussion, I took a moment to acknowledge a colleague’s emotions first before presenting my counterargument. The result? It turned a potential clash into a collaborative problem-solving session. How can we cultivate this level of understanding in our daily interactions?

    Importance of dialogue in education

    Importance of dialogue in education

    Dialogue in education is indispensable because it nurtures critical thinking and encourages collaborative learning. I recall facilitating a group project where students shared their ideas openly. Their willingness to listen and build on one another’s thoughts not only enhanced their understanding of the topic but also forged a sense of community within the classroom. It makes me wonder, how often do we overlook the potential of a simple conversation?

    Furthermore, dialogue helps in bridging gaps between diverse perspectives. I experienced this firsthand during a multicultural event at my school, where students from various backgrounds engaged in discussions about their histories and beliefs. Witnessing their openness to learn from each other transformed what could have been a superficial exchange into a powerful experience of empathy. Isn’t it remarkable how dialogue can deepen our understanding of one another?

    In my view, fostering dialogue in educational settings promotes confidence and assertion in students’ voices. I’ve observed that when students feel heard, they are more likely to participate actively. Remember the last time you felt truly listened to? It sparks motivation and a sense of responsibility towards their learning journey. Ultimately, dialogue shapes not only individual participants but the educational landscape as a whole.

    Strategies for fostering respectful dialogue

    Strategies for fostering respectful dialogue

    One effective strategy for fostering respectful dialogue is to model active listening. I remember a workshop where I encouraged participants to paraphrase what their peers said before responding. This practice not only demonstrated attentiveness but also created a space where everyone felt valued. It got me thinking: how often do we truly listen instead of just waiting for our turn to speak?

    In my experience, setting clear ground rules can significantly enhance the dialogue environment. During a discussion on sensitive topics, I facilitated a session where we established guidelines about respecting differing opinions. This led to a more open and honest exchange. Have you ever been in a conversation where you felt it was safe to share your thoughts? That feeling can change everything.

    Moreover, incorporating personal stories can humanize conversations and build connection. I once shared a formative experience related to a contentious issue, which prompted others to share their journeys too. This vulnerability allowed us to connect on a deeper level. Isn’t it fascinating how a simple personal narrative can transform a dialogue from mere words into a shared experience?

    Techniques for managing difficult conversations

    Techniques for managing difficult conversations

    When faced with a difficult conversation, it’s crucial to approach it with empathy. I recall a time I had to discuss performance issues with a colleague. Instead of diving straight into the specifics, I first acknowledged their hard work and how challenging the department’s dynamics had been. This softened the atmosphere and made the subsequent feedback feel more like a collaborative problem-solving session rather than an attack. Don’t you think that starting with understanding can set the tone for a more productive dialogue?

    Another technique I’ve found valuable is using “I” statements to express feelings without assigning blame. During a tense meeting, I shared my concerns about deadlines by saying, “I feel stressed when timelines slip versus pointing fingers at others.” It transformed the dynamic, encouraging openness rather than defensiveness. Have you noticed how the language we use can significantly change the course of a conversation?

    Lastly, allowing for pauses can be incredibly healing in tough discussions. I once facilitated a conversation about policy changes that met with significant resistance. When disagreements flared, I suggested a brief silence to reflect before responding. That simple act gave everyone a moment to collect their thoughts and reduced the emotional charge in the room. Isn’t it interesting how a few moments of quiet can pave the way for clearer, calmer exchanges?

    Personal experiences with dialogue strategies

    Personal experiences with dialogue strategies

    My experience with dialogue strategies often begins with a shared meal. I remember organizing a lunch to discuss curriculum changes with my team. As we broke bread, I noticed a shift in how we communicated; the meal created a comfortable atmosphere that encouraged everyone to express their thoughts freely. Isn’t it fascinating how something as simple as sharing food can open up dialogue and build trust?

    One time, I tried a more unconventional approach by incorporating role reversal in a discussion about student engagement. I asked my colleagues to step into the shoes of our students and voice their perspectives on the issues we faced. This exercise not only fostered empathy but prompted eye-opening insights about our teaching methods. Have you ever considered how stepping outside your own viewpoint can illuminate blind spots in a conversation?

    I also place great value on the art of active listening. During a session on addressing community concerns, I made it a point to repeat what a participant had said before responding. For instance, when one member expressed frustration with the new policies, I said, “So you feel overwhelmed by the changes.” This not only validated their feelings but helped to diffuse tension and foster a more constructive exchange. How often do we truly listen to understand rather than just waiting for our turn to speak?

  • My reflections on weaving in-depth narratives through dialogue

    Key takeaways:

    • Educational events foster dialogue that enhances learning by transforming information exchange into collaborative experiences.
    • Effective storytelling techniques, such as vivid imagery and relatable characters, engage audiences and create emotional connections.
    • Participant interaction during events weaves individual narratives into a collective understanding, strengthening community bonds.
    • Applying dialogue in educational settings cultivates emotional safety, enabling all voices to be heard and fostering deeper insights.

    Understanding educational events

    Understanding educational events

    Educational events serve as powerful platforms for learning, influence, and connection. I still remember attending a local workshop early in my career, where discussions sparked new ideas and challenged my thinking. How often do we encounter opportunities that not only expand our knowledge but also reshape our perspectives?

    When I think about the dynamics within educational events, I am reminded of the moments when participants engage in dialogue that transcends the formal agenda. For instance, during a panel discussion I once attended, a simple question from the audience led to a rich conversation that brought to light various experiences and insights I had never considered before. It struck me how much dialogue could enhance the learning environment, turning a one-way transfer of information into a vibrant exchange of ideas.

    Understanding the true essence of educational events involves recognizing their potential for storytelling and community building. It’s fascinating how narratives shared in these settings can resonate deeply with participants. Have you ever left an event feeling inspired by the stories of others? Those moments illustrate how educational gatherings can weave together diverse experiences, creating a tapestry of knowledge that feels personal and profound.

    Importance of dialogue in education

    Importance of dialogue in education

    One of the most compelling aspects of dialogue in education is its ability to foster critical thinking. I recall a lively discussion in a graduate seminar where different viewpoints clashed beautifully. It was in that heated exchange that I discovered the depth of my own beliefs, forcing me to articulate my thoughts with clarity. Have you ever found that your ideas become sharper and more nuanced when they’re challenged?

    Dialogue not only encourages personal reflection but also cultivates a collaborative spirit among participants. I witnessed this firsthand at a community forum I attended, where each voice contributed to a shared understanding of complex issues. It was amazing to feel the energy in the room as everyone built on one another’s thoughts; it transformed the dialogue into an enriching group experience, rather than a solitary endeavor. How often do we underestimate the power of collective insights?

    Moreover, creating a safe space for dialogue can truly bridge gaps in understanding. I often think about a workshop I participated in focused on diversity and inclusion. The candid conversations that emerged helped break down barriers, allowing individuals to connect on deeper levels. Isn’t it incredible how sharing vulnerabilities can lead to profound learning? In this way, dialogue becomes not just a tool for communication, but a pathway for empathy and growth within educational contexts.

    Techniques for effective storytelling

    Techniques for effective storytelling

    When it comes to effective storytelling, one powerful technique is the use of vivid imagery. I remember attending a storytelling workshop where the instructor encouraged us to paint pictures with our words. By describing a scene in detail—the rustle of leaves or the smell of rain—I noticed how my audience leaned in closer, captivated by the sensory experience. Have you ever felt transported to another place when someone shares a story that ignites your senses?

    Another important technique is creating relatable characters. In my own experiences sharing stories, I found that characters who mirror real-life emotions resonate deeply. I once shared a narrative about a mentor who guided me through a tough time, revealing vulnerabilities that helped students see themselves in my story. It made me wonder: how often do we overlook the power of sharing our authentic selves to connect with others?

    Building tension and resolving conflict is also crucial. I recall a storytelling event where I shared a personal challenge I faced in my career. By leading my audience through the ups and downs, I kept them engaged, wondering what would happen next. It struck me how storytelling, when done effectively, becomes a shared journey of uncertainty and discovery, inviting listeners to invest emotionally in the outcome. Do you think that the thrill of not knowing can make a story even more compelling?

    Weaving narratives through participant interaction

    Weaving narratives through participant interaction

    In my experiences with educational events, I’ve found that participant interaction can bring narratives to life in unexpected ways. I remember a workshop where we broke into small groups to share our own stories around a central theme. As each person shared their unique perspective, I noticed how the collective experience transformed a simple story into a tapestry of emotions and insights. Isn’t it remarkable how one person’s narrative can spark a connection with someone else’s?

    When participants engage in dialogue, it allows for a natural exploration of themes and character development. I once facilitated a session where attendees were encouraged to discuss the challenges they faced in their teaching practices. The conversations that followed revealed layers of complexity that I hadn’t anticipated. I realized that the stories shared weren’t just individual experiences; they were threads that woven deeper narratives about resilience and growth.

    Moreover, the act of sharing and responding to each other’s stories fosters a sense of community. I once witnessed this firsthand during a storytelling retreat, where the exchange of personal anecdotes led to profound discussions about vulnerability and support. It made me think: how often are we missing opportunities to create a richer narrative simply by encouraging dialogue among participants?

    Reflecting on personal storytelling experiences

    Reflecting on personal storytelling experiences

    Reflecting on personal storytelling experiences brings to mind a particularly poignant moment during a conference. I had the opportunity to listen to a facilitator share a deeply personal story about their journey through an educational crisis. As they spoke, the room grew quiet, and you could almost feel the weight of shared emotions in the air. This experience made me realize how impactful it is to be vulnerable in storytelling; it invites others to open up as well, creating a space where authenticity reigns.

    In another instance, I participated in a storytelling circle focused on the theme of failure. Each participant took turns sharing their failures, often with laughter and tears alike. I found it fascinating how the act of recounting those moments transformed pain into shared understanding and humor. Wasn’t it eye-opening to see that failure isn’t just an individual setback but a universal experience that binds us together?

    Every time I reflect on these storytelling experiences, I am drawn to the idea of interconnectedness. During a workshop on teaching methods, we were asked to pair up and share our most significant learning challenges. I had a chance to connect with a mentor whose insights resonated with my own struggles. This exchange illuminated how our stories, though different, can illuminate common pathways toward growth and resilience in education. How often do we overlook these moments of connection?

    Applying dialogue in educational settings

    Applying dialogue in educational settings

    When I think about applying dialogue in educational settings, it always brings to mind a collaborative project I facilitated. We gathered students from diverse backgrounds to engage in a dialogue about cultural perceptions. As they shared their thoughts and experiences, I noticed how the room lit up with energy—students who were usually reserved began to speak up. Isn’t it incredible how that simple act of dialogue can break barriers and spark connections?

    I once observed a classroom where the teacher implemented a “circle of voices.” Students, sitting in a circle, took turns speaking while others listened intently. This format not only fostered respect but also allowed quieter students the chance to contribute without interruption. I vividly remember a shy student who surprised everyone by sharing her perspective on teamwork. How often do we miss those hidden gems of insight when we don’t provide the right space for dialogue?

    In my experience, dialogue thrives in environments where emotional safety is prioritized. During a workshop focused on conflict resolution, participants practiced role-playing dialogues. It was extraordinary to witness peers transform confrontational exchanges into meaningful conversations. That evening, I left feeling a sense of hope—if we can harness the power of dialogue in education, imagine what we could achieve in broader society.

    Evaluating the impact of narratives

    Evaluating the impact of narratives

    When I reflect on the impact of narratives in education, I recall a storytelling event where students shared their life stories. The room was filled with a tapestry of emotions—laughter, tears, and moments of silence. It struck me how, through the simple act of sharing, students not only connected with each other but also gained a deeper understanding of themselves. Isn’t it fascinating how narratives can illuminate our shared humanity?

    In another instance, I introduced a narrative assignment that allowed students to explore their heritage through writing. Some hesitated initially, worried their stories weren’t “important” enough. But as they delved into their backgrounds, I witnessed a transformation—not just in their writing, but in their confidence. This experience made me realize that narratives foster a sense of belonging; they validate our experiences and make us feel seen.

    Evaluating the impact of these narratives, I often think about how they serve as mirrors. They reflect not only our individual journeys but also the collective experiences of a community. In a diverse classroom, these stories create a rich dialogue around identity and empathy. How can we harness that power to encourage deeper connections and understanding in educational settings? The answer seems to lie in embracing these narratives, making them integral to our learning processes.

  • My strategies for audience involvement

    Key takeaways:

    • Audience involvement is about creating a connection, which transforms passive experiences into interactive ones, fostering community engagement.
    • Engagement enhances retention of information and provides valuable feedback for future events, demonstrating the importance of audience contributions.
    • Different educational formats, such as workshops and panel discussions, cater to diverse learning preferences and promote richer interactions.
    • Techniques like gamification, hands-on activities, and real-time feedback loops foster interaction and sustain audience energy throughout an event.

    Understanding audience involvement

    Understanding audience involvement

    Audience involvement is not just about numbers; it’s about connection. I remember attending an educational event where the speakers took time to engage with us, asking our thoughts and opinions. This simple act made me feel valued, turning a passive experience into an interactive one where I was eager to participate.

    Have you ever felt like just a face in the crowd during a seminar? I know I have, and it’s disheartening. When organizers actively encourage questions and discussions, it transforms the atmosphere. It creates a community feel, making everyone invested in the topic at hand—one shared insight can spark a cascade of ideas and enthusiasm.

    Understanding audience involvement also means recognizing the diversity within the crowd. I’ve seen firsthand how some participants prefer to engage through group discussions, while others thrive in one-on-one interactions. Acknowledging these differences can lead to richer contributions and a more engaging overall experience—what strategies can you implement to ensure everyone feels included?

    Importance of audience engagement

    Importance of audience engagement

    Engaging an audience is crucial because it fosters a sense of belonging. I recall a workshop where participants were encouraged to share their personal experiences related to the topic. The room buzzed with energy, and I could see the impact of shared stories—everyone felt more connected and invested in the discussion, which, in turn, enriched the learning environment.

    When attendees are actively engaged, they tend to retain information better. I’ve noticed that in events where the audience participates in polls or interactive activities, the level of retention increases significantly. It really makes you wonder: how much more can we learn when we’re not just listening, but also contributing to the dialogue?

    Moreover, audience engagement prompts valuable feedback that can enhance future events. During one seminar, I had the chance to express my thoughts directly after a session. The organizers were not only receptive, but they used those insights to refine their approach. Do you ever think about how your voice could shape the learning experiences of others? The power of audience involvement should never be underestimated.

    Types of educational events

    Types of educational events

    Educational events come in various formats, each designed to cater to different learning preferences and objectives. For instance, I’ve attended panel discussions where experts share insights and respond to audience questions. The interaction is what makes these sessions truly engaging; it’s captivating to witness the back-and-forth dialogue as attendees challenge and refine ideas in real-time.

    Workshops stand out in my experience as highly effective educational events. They offer immersive learning experiences where participants dive into hands-on activities. I remember facilitating a workshop that involved collaborative problem-solving. Seeing participants brainstorm together sparked creativity and camaraderie that I still cherish.

    Conferences, on the other hand, serve as a hub for knowledge sharing and networking across diverse fields. I always leave conferences feeling motivated and inspired, not just by the information shared, but by the connections made with like-minded individuals. Have you ever thought about how these events create opportunities for growth through exchanging ideas? It’s fascinating to consider how each type of educational event serves a distinct purpose in fostering a richer learning experience.

    Strategies for enhancing participation

    Strategies for enhancing participation

    To enhance participation in educational events, I find that incorporating interactive elements can truly transform the experience. For instance, I once attended a seminar that utilized live polling to gather instant feedback from attendees. This not only engaged the audience but also shaped the direction of the discussion, making everyone feel like a vital part of the conversation. Have you ever realized how a simple poll can elevate the energy in the room?

    Another effective strategy I’ve experienced is the use of breakout sessions that encourage small group discussions. In one memorable conference, we were divided into smaller pods to explore specific topics in-depth. This intimacy allowed for more candid exchanges and fostered a sense of community among participants. I still think about how those discussions sparked new ideas that resonated long after the event.

    Lastly, leveraging technology such as social media to create a space for pre- and post-event engagement can significantly boost participation. I’ve seen events thrive when attendees share their thoughts and photos online, weaving their experiences into a larger narrative. It creates a buzzing atmosphere that doesn’t just end when the event does; it continues to grow and evolve as participants stay connected. Does it sound appealing to immerse yourself in a community like that? It certainly adds a layer of excitement and sustained involvement.

    Techniques for fostering interaction

    Techniques for fostering interaction

    When it comes to fostering interaction, I’ve found that gamifying the experience can be incredibly effective. During one particularly engaging workshop, we were divided into teams for a trivia challenge that related to the subject matter. The friendly competition heightened participation levels, and I noticed that even the more reserved attendees were eager to contribute. Doesn’t it feel great to be part of something fun and collaborative?

    Another technique that has resonated with me involves incorporating hands-on activities that relate directly to the learning objectives. I recall a session where we created models based on the lesson, which not only solidified our understanding but also sparked lively discussions among participants. This practical approach makes content memorable; how else can you engage the senses and encourage active participation?

    Incorporating feedback loops throughout the event is another powerful method. In one event, we were encouraged to share our thoughts via a digital board continuously, which was projected for everyone to see. Watching ideas and feedback flow in real-time created a sense of unity and purpose. I’ve seen firsthand how these loops keep the conversation dynamic. Do you see the value in maintaining an ongoing dialogue during an event? It transforms the experience from a monologue to a multi-voiced discussion.

    Personal experiences in engaging audiences

    Personal experiences in engaging audiences

    One of my most memorable experiences in engaging audiences came during a panel discussion I organized. I encouraged the attendees to submit questions anonymously through a mobile app, and it led to some unexpected and thought-provoking conversations. The thrill of seeing participants’ curiosity manifest in real-time made the atmosphere electric. Have you ever seen a crowd come alive with just a few strategic prompts? It shifts the energy entirely.

    In another event, I incorporated storytelling as a way to foster connection. I shared a personal failure related to the topic, which not only caught everyone’s attention but also allowed attendees to open up about their own struggles. The room felt more like a community sharing insights rather than just a collection of individual listeners. Isn’t it astonishing how vulnerability can create a bridge between speakers and their audience?

    I also remember a workshop where we used visual aids created by participants themselves. Each attendee contributed a piece of art that represented their understanding of the topic. It turned into a beautiful mosaic, but more importantly, it allowed everyone to engage in a way that felt personal and insightful. Seeing their impressions and perspectives come to life was truly fulfilling. How often do we get to witness our audience’s creativity in action?

    Measuring success of audience involvement

    Measuring success of audience involvement

    Measuring the success of audience involvement is often more intuitive than it appears. Reflecting on a workshop I led, I noticed not only how many participants actively contributed but also the quality of their engagement. When I asked for feedback afterward, the lively discussions highlighted how they felt more invested in the session. This qualitative data often reflects the depth of their involvement better than mere attendance numbers.

    In another instance, I employed real-time polls to gauge interest during a seminar. As I watched the results unfold, it became clear that engagement isn’t just about participation; it’s about resonating with the audience’s needs. The enthusiasm from participants, visible in their immediate reactions to polling results, created a dynamic dialogue that I could harness for future discussions. Isn’t it fascinating how tools like these can illuminate audience sentiment in real time?

    Lastly, I’ve found that follow-up interactions post-event serve as a vital indicator of involvement. After hosting a recent online discussion, I reached out via email, and the responses poured in. Attendees expressed how they implemented what they learned, reinforcing that audience involvement doesn’t end when the event does. It’s about building a lasting connection; how do you measure the value of that?

  • My strategies for addressing power imbalances

    Key takeaways:

    • Power imbalances in educational settings affect participation and can marginalize voices; creating inclusive environments fosters richer discussions.
    • Employing strategies like anonymous feedback and varied teaching methods helps recognize and address these imbalances, encouraging diverse contributions.
    • Facilitators play a crucial role in fostering inclusivity through training and creating spaces for open communication and sharing personal experiences.
    • Implementing changes such as small group discussions can empower quieter participants and enhance engagement, demonstrating the value of diverse perspectives.

    Understanding power imbalances

    Understanding power imbalances

    Power imbalances are an inherent aspect of human interaction and often manifest in educational settings, influencing both relationships and outcomes. I recall a workshop where certain voices dominated the discussion, making it challenging for quieter participants to contribute. Have you ever felt that imbalance yourself? It can be disheartening when important perspectives are overlooked.

    Understanding these dynamics is crucial, especially since power can stem from various sources—authority, confidence, or even expertise. I’ve seen this play out during an educational event where a few confident speakers shaped the narrative, leaving others feeling marginalized. It made me wonder, how can we create spaces that nurture all voices rather than just a select few?

    Recognizing the subtle ways power shifts can significantly impact group participation is a learning journey. In one of my experiences, I noticed that when facilitators actively encouraged everyone to share, the richness of ideas grew exponentially. How do we ensure that every participant feels empowered to speak up? Addressing this question is essential for fostering an inclusive environment that values diverse input.

    Importance of addressing power imbalances

    Importance of addressing power imbalances

    Addressing power imbalances in educational settings is essential for fostering a more inclusive atmosphere. I remember a time during a group activity when the loudest voices overshadowed those apprehensive to speak up. Watching this unfold made me think, what ideas are we missing when we let a few dominate the conversation? It’s vital to create space for all participants, as everyone brings unique perspectives that can enrich discussions.

    The significance of addressing these imbalances goes beyond simply ensuring everyone gets a turn. I’ve experienced moments where actively listening to less vocal participants revealed innovative solutions that more dominant voices had overlooked. It raised the question: how can we cultivate a culture that encourages sharing, even from those who are hesitant? By promoting open dialogue, we not only empower individuals but also enhance collective learning.

    Ultimately, when we confront power imbalances, we lay the groundwork for deeper connections and understanding among participants. In one of my workshops, I watched as shy contributors slowly gained confidence when encouraged by their peers. This transformation was not only inspiring but also essential for creating a vibrant learning community. Isn’t it remarkable how much richer our experience can be when we make room for every voice?

    Strategies for recognizing power dynamics

    Strategies for recognizing power dynamics

    Recognizing power dynamics starts with observing group interactions closely. I recall a discussion where certain individuals dominated the dialogue while others sat quietly, seemingly invisible. This situation sparked a realization in me: What stories and insights might we be losing by not actively engaging those who prefer listening? Awareness of who speaks often and who remains silent can serve as an important indicator of underlying power dynamics.

    Another strategy involves actively seeking feedback from all participants, particularly those who might feel marginalized. In one workshop, I implemented an anonymous feedback tool that allowed attendees to share their thoughts without fear of judgment. The responses highlighted concerns I had overlooked, forcing me to confront my biases and adjust the session accordingly. Isn’t it fascinating how a simple change in approach can illuminate hidden voices and perspectives?

    Lastly, reflecting on the composition of your group can reveal significant power imbalances. I once led a seminar where the demographic skew was heavy towards a single viewpoint, which influenced the discussions. Realizing this prompted us to invite speakers from diverse backgrounds for future events, enriching the conversation. How can we ensure our events mirror the diversity of experiences and opinions around us? Recognizing and addressing these dynamics is crucial for fostering true inclusivity.

    Techniques for creating inclusive environments

    Techniques for creating inclusive environments

    One effective technique for creating inclusive environments is to incorporate icebreakers that encourage participation from everyone. I remember organizing an event where we used a simple game to get people talking about their favorite books. The room filled with laughter and animated conversations, revealing insights that wouldn’t have emerged in a more traditional setup. Isn’t it amazing how light-hearted activities can break down barriers and foster a sense of camaraderie?

    Another vital approach is to use varied teaching methods that cater to different learning styles. In my experience, providing options like group discussions, visual presentations, and hands-on activities allows everyone to engage with the material in a way that suits them best. I once hosted a workshop that included a mix of these styles, and I could see participants who typically hesitated to speak come alive during hands-on exercises. How often have we overlooked the power of diverse learning experiences?

    Moreover, it’s crucial to train facilitators on inclusive practices. On one occasion, I attended a training focused on recognizing microaggressions in conversations. It opened my eyes to the subtle ways we might unintentionally marginalize voices. By equipping facilitators with this knowledge, we not only create more equitable environments but also empower them to foster inclusive discussions. Could this shift in training be the key to transformative educational experiences?

    Facilitating open communication channels

    Facilitating open communication channels

    Facilitating open communication channels is essential for addressing power imbalances in any educational event. I vividly recall a session where we implemented anonymous feedback tools, allowing participants to share their thoughts without fear of judgment. The insights we received were eye-opening and improved not just that event but future ones. Have you ever realized how much valuable feedback lies buried beneath silence?

    Creating spaces for open discussions, where everyone’s voice is valued, is another effective strategy. In one of my past workshops, I introduced a “talking circle” format, giving each participant a chance to speak without interruptions. It was incredible to witness quieter individuals articulate their thoughts and contribute meaningful perspectives. Isn’t it uplifting when everyone feels empowered to share their views?

    Lastly, sharing personal stories can bridge gaps and foster understanding among diverse participants. During a recent event, I took a moment to share a challenge I faced in my career, encouraging others to open up as well. The atmosphere shifted, and what started as a formal gathering blossomed into an intimate conversation where everyone connected through their struggles and triumphs. How powerful can vulnerability be in creating a community?

    Personal experiences with power imbalances

    Personal experiences with power imbalances

    I once participated in a panel discussion where it became painfully clear that one voice dominated the conversation. Despite having valuable insights, I noticed several audience members—some visibly frustrated—were holding back. As I took a deep breath and interjected with a different perspective, I realized how crucial it is to disrupt these power dynamics. How often do we let a single narrative overshadow other meaningful contributions?

    There was an instance during a training session where I witnessed a newcomer overwhelmed by a more seasoned participant. The latter’s confident demeanor unintentionally stifled the former’s thoughts. It struck me how easily confidence can overshadow competence, leaving some voices unheard. I stepped in, redirecting the conversation and making space for the newcomer to shine. Have you ever felt the weight of such imbalances in your own experiences?

    Reflecting on my role in addressing power imbalances, I recall a mentoring relationship I developed with a struggling student. At first, their lack of confidence was palpable, but as we worked together, I saw them flourish. It reminded me how essential it is to foster an environment where everyone feels safe to express themselves. Isn’t it incredible how empowering just one person can transform someone’s entire outlook?

    Implementing change in educational events

    Implementing change in educational events

    Implementing change within educational events requires a willingness to reevaluate traditional practices. During a workshop I organized, we decided to implement small group discussions instead of large lectures, aimed at leveling the playing field. Surprisingly, I observed a shift in energy; quieter participants began to contribute ideas that added immense value, highlighting the importance of actively creating spaces where diverse voices can emerge.

    I once attended a conference that utilized anonymous feedback tools to gauge audience sentiment. This approach allowed participants to express their thoughts without fear of judgment, leading to candid conversations about power dynamics. It made me realize how technology can play a pivotal role in fostering inclusivity, making me think: what other tools could help break down barriers in similar settings?

    As we strive for inclusive environments, it’s vital to reflect on our own biases. I remember facilitating a session where I consciously took a step back and encouraged others to lead discussions based on their expertise. That experience taught me that sometimes, the most significant change comes from simply stepping aside and allowing others to shine. Have you ever thought about the power of simply sharing the spotlight?

  • My reflections on the value of open-mindedness

    Key takeaways:

    • Open-mindedness fosters curiosity, enriching understanding and empathy by embracing diverse perspectives.
    • In education, open-mindedness leads to innovative thinking and deeper collaboration among students and educators.
    • Engaging in discussions, reflecting on biases, and asking open-ended questions are effective strategies for cultivating open-mindedness.
    • Overcoming discomfort with differing views can yield transformative insights and personal growth.

    Understanding open-mindedness

    Understanding open-mindedness

    Open-mindedness is the willingness to consider new ideas, perspectives, and experiences without letting biases or preconceptions cloud our judgment. I remember a time when I attended a workshop that discussed themes I initially found uninteresting. Yet, by maintaining an open mind, I discovered unexpected connections to my own life that enriched my understanding significantly.

    I often wonder: how many opportunities for growth have I missed due to a preconceived notion? It’s easy to find comfort in familiar beliefs, but stepping outside that bubble can be transformative. When I engaged in conversations with individuals from different backgrounds, I felt my preconceived ideas shift, revealing the richness of varied human experiences.

    In essence, open-mindedness invites curiosity and fosters deeper connections. Reflecting on my journey with open-mindedness, I recognize that embracing differing viewpoints has not only enhanced my knowledge but has also allowed me to empathize with others. This doesn’t just broaden our worldview; it also reminds us that there’s often more than one valid perspective on any issue.

    Importance of open-mindedness in education

    Importance of open-mindedness in education

    Open-mindedness in education is essential because it creates a space where students and educators can explore diverse perspectives. I remember collaborating with colleagues from various disciplines, and through those discussions, I uncovered innovative teaching strategies I would never have considered alone. It made me question—how often do we limit ourselves by sticking only to what we know?

    When we embrace differing opinions, learning becomes a richer experience. I once sat in on a classroom debate that challenged my views on a significant social issue. By allowing myself to engage with opposing viewpoints, I felt my understanding expand, as if I were piecing together a complex puzzle. It’s in these moments that I realized education isn’t just about absorbing facts; it’s about fostering an environment where critical thinking thrives.

    Moreover, open-mindedness cultivates a sense of community in educational settings. I recall a group project where differing opinions initially led to conflict, but as we practiced patience and respect, we learned to appreciate each other’s strengths. This growth not only improved our collaboration but also deepened our friendships. Ultimately, open-mindedness is not just valuable; it’s transformative, allowing us to learn from one another in ways we might never expect.

    Benefits of attending educational events

    Benefits of attending educational events

    Educational events offer a unique opportunity to step outside our comfort zones and immerse ourselves in new ideas. I vividly recall attending a workshop on digital learning tools that sparked my interest in integrating technology into my classroom. The excitement in the room was palpable as participants shared their experiences. How often do we find ourselves inspired by the collective energy of like-minded individuals?

    The diverse interactions at these events can lead to surprising breakthroughs. I once participated in a panel discussion where a participant’s unconventional approach to assessment challenged my long-held views. This unsettling yet enlightening experience made me wonder: What incredible shifts in perspective might we miss if we only engage with familiar voices?

    Furthermore, attending educational events fosters networking opportunities that are invaluable for personal and professional growth. At a recent conference, I met several educators who became not only collaborators but also lifelong friends. It’s astonishing how a single conversation can open doors to future partnerships. Have you ever noticed how one connection can change the entire trajectory of your career?

    Strategies for cultivating open-mindedness

    Strategies for cultivating open-mindedness

    One effective strategy for cultivating open-mindedness is actively seeking out diverse perspectives in discussions. I remember a time when I participated in a book club that focused on authors from different cultures. Each meeting felt like a journey through new experiences, and by stepping into the shoes of others, I discovered nuances of thought I had previously overlooked. How often do we challenge ourselves to embrace viewpoints that differ from our own?

    Another powerful technique involves reflecting on our biases. I once took a moment to write down my assumptions about certain educational practices before attending a seminar on innovative teaching methods. As I listened to others share their insights, I found myself acknowledging those biases and recognizing how they limited my understanding. This simple act of reflection sparked a desire to question my preconceived notions. Have you ever taken the time to think about the blind spots in your own beliefs?

    Engaging in open, honest dialogues where differing opinions are celebrated can also foster a culture of open-mindedness. I’ve hosted casual discussion forums among colleagues, encouraging a safe space for everyone to voice their thoughts without fear of judgment. The exchange of ideas felt refreshing and often led to profound insights for all of us. Isn’t it fascinating how a respectful conversation can expand our horizons and lead to collaborative growth?

    Personal experiences with open-mindedness

    Personal experiences with open-mindedness

    I can vividly recall an instance during a community workshop where I found myself surrounded by individuals from various backgrounds, each sharing their unique stories. Initially, I held some reservations about their perspectives, thinking their experiences might be too different from my own. However, as I listened intently, I realized that their narratives resonated with me in unexpected ways, challenging my assumptions and enriching my understanding of the world. How many times have we missed out on valuable lessons simply because we were hesitant to embrace someone else’s experience?

    Another memorable experience was when I took part in a cross-disciplinary project at my school. Our team comprised educators from science, art, and literature, which was a bit intimidating at first. Yet, as we collaborated, I found that the intersections of our fields sparked incredible creativity and innovation. I learned that being open-minded allows for the layering of ideas, which often leads to unexpected solutions. Have you ever thought about how your own biases could be hindering collective creativity?

    One of my favorite moments of open-mindedness unfolded during a discussion with a student who challenged my views on traditional teaching methods. Instead of dismissing their perspective, I decided to engage with it fully. Their enthusiasm and alternate approaches inspired me to rethink my strategies in the classroom, reminding me how invaluable it is to remain receptive to fresh ideas. It’s intriguing how one conversation can shift our entire approach, don’t you think?

    Overcoming challenges to open-mindedness

    Overcoming challenges to open-mindedness

    It’s not uncommon to feel discomfort when faced with ideas that diverge from our own. I remember attending a seminar where a speaker presented a radical approach to education that initially stirred resistance within me. I felt a bit like an outsider in that moment, grappling with skepticism. However, I decided to push through that unease, and by focusing on the essence of their argument rather than my initial judgments, I discovered profound insights that sparked my curiosity. How might we grow if we learn to see discomfort as a doorway rather than a barrier?

    Another challenge lies in the automatic biases we carry. I have often found myself unconsciously siding with opinions that mirror my own, especially in heated discussions. To counter this, I’ve made a conscious effort to actively seek out opposing views. This practice of engagement not only broadens my perspective but also fosters a deeper sense of empathy. It’s a practice worth considering: what if we intentionally stepped into the shoes of those we disagree with?

    One particularly striking moment occurred when I joined an online forum dedicated to discussing global issues. Initially, I thought I’d just read through the posts, but something compelled me to share my perspective. The ensuing dialogue was enlightening; participants from vastly different backgrounds offered viewpoints that challenged my thinking. It became clear to me that pushing past the urge to remain passive could yield rich, transformative experiences. Have you ever participated in discussions that unexpectedly shifted your worldview?

    Applying open-mindedness in daily life

    Applying open-mindedness in daily life

    Engaging with open-mindedness in daily life starts with the small interactions we have every day. I recall a time when I was at a coffee shop and overheard a conversation about a topic I was completely unfamiliar with. Instead of tuning it out, I found myself leaning closer, absorbing their discussion. That little act of listening not only enriched my understanding but also reshaped my perspective on the issue. When was the last time you let curiosity pull you into an unexpected discussion?

    Then there are moments when we can observe our reactions in everyday situations. I used to feel frustrated when my friends made decisions that contradicted my values. However, I began to ask myself why their choices bothered me so much. This self-reflection allowed me to appreciate their perspectives and the diverse backgrounds that shaped them. Have you taken the time to reflect on what might lie beneath your initial reactions?

    Lastly, I’ve realized the importance of asking open-ended questions during conversations. Once, while chatting with a colleague about a recent policy change at work, I decided to ask her how she felt about it instead of voicing my opinion immediately. To my surprise, her insights were refreshing and helped me reconsider my stance. It dawned on me that fostering open dialogue can lead to deeper connections and expansive thinking. How often do we prioritize listening over speaking?

  • My reflections on the value of patience in dialogue

    Key takeaways:

    • Patience in dialogue fosters deeper understanding and connection, allowing participants to share more meaningful insights.
    • Intentional pauses and active listening transform conversations, promoting a culture of respect and resilience in educational settings.
    • Personal experiences demonstrate how patience can shift potential arguments into respectful dialogues and enhance interpersonal relationships.
    • Applying patience through silence and reflection can lead to surprising revelations and stronger connections during challenging conversations.

    Understanding patience in dialogue

    Understanding patience in dialogue

    Patience in dialogue is more than just waiting for our turn to speak; it’s about truly engaging with the other person. I remember a discussion I had with a colleague where I felt an urge to interrupt, but instead, I listened. That moment transformed the conversation, allowing for deeper understanding and connection. Do we often pause to appreciate the silence that follows our questions?

    When we practice patience, we’re not only respecting our conversation partner’s thoughts but also creating an open space for shared ideas. I’ve found that in workshops I lead, giving participants time to reflect before responding often leads to richer, more meaningful discussions. It makes me wonder: how often do we rush through dialogues, missing the gems that lie in thoughtful pauses?

    Emotional insights reveal that patience can sometimes be challenging. During heated debates, I noticed my heart racing, tempted to jump in. However, choosing to breathe and allow the other person to express their thoughts led to more constructive outcomes. How many breakthroughs could we achieve if we committed to this practice of patience in our everyday dialogues?

    Importance of patience in education

    Importance of patience in education

    The importance of patience in education cannot be overstated. I think back to my time in the classroom when a student struggled with a complex concept. Instead of rushing to provide the answer, I paused, giving them space to think. That moment of silence felt heavy yet productive, allowing them to connect their own thoughts instead of relying solely on my guidance.

    In discussions among peers or within learning groups, patience fosters a culture of respect. Once, I was part of a group project where one member took longer to explain their idea. Initially, I felt impatient, but as I listened, I realized their perspective brought a fresh viewpoint to the project. Isn’t it fascinating how waiting can yield richer insights that we might otherwise overlook?

    Moreover, patience cultivates resilience in both educators and students. I remember a time when a teaching strategy I believed would work spectacularly fell flat during its first implementation. Instead of abandoning it, I took a step back, gave myself space to reevaluate, and eventually refined my approach. Have you ever noticed how a little patience can turn a setback into a learning opportunity?

    Impact of dialogue on learning

    Impact of dialogue on learning

    Engaging in dialogue can significantly enhance the learning process. I recall a workshop where we were encouraged to pair up and share our thoughts on a controversial topic. At first, I saw my partner struggling to articulate their ideas. Instead of rushing to fill the silence, I focused intently on their words. The patience I exercised allowed my partner to find their voice, ultimately leading to a conversation teeming with new insights. Isn’t it amazing how patience can reveal layers of understanding in dialogue?

    Dialogue also promotes a deeper understanding of diverse perspectives. During a recent team project, we were tasked with addressing a challenging problem. One teammate shared a viewpoint that initially baffled me. However, by allowing the discussion to unfold without interruption, I began to see the value in their approach. This experience reinforced my belief that taking the time to listen can expand our own thinking. Have you ever paused long enough to discover unexpected wisdom in someone else’s perspective?

    Furthermore, the impact of dialogue extends to building meaningful relationships among learners. In a recent educational event, I noticed how small group discussions transformed participants. Their confidence grew as they listened and responded to each other. I felt a sense of camaraderie develop, and it was clear that patience during those exchanges not only fostered connection but also solidified their understanding of the material. It’s truly eye-opening to see how dialogue can turn a learning experience into a collaborative journey.

    Strategies to practice patience

    Strategies to practice patience

    When it comes to practicing patience in dialogue, one effective strategy I often recommend is taking intentional pauses. I remember a discussion where emotions were running high, and tensions were palpable. Instead of diving headfirst into my points, I chose to pause and breathe. This not only helped me regain composure but also created space for my conversation partner to gather their thoughts. Have you ever noticed how a brief moment of silence can transform the energy of a conversation?

    Active listening is another powerful tool for cultivating patience. During a recent seminar, I sat beside someone who had a very different viewpoint from mine. Instead of interrupting or preparing my response while they spoke, I focused entirely on their words. I found that when I truly listened, I not only absorbed their information but also became genuinely curious about their perspective. Isn’t it fascinating how giving someone your undivided attention can open doors to deeper dialogue?

    Lastly, setting a clear intention before engaging in a conversation can anchor our patience. Before a panel discussion I attended, I reminded myself to prioritize understanding over winning the argument. As the conversation unfolded, I felt a sense of calm wash over me, allowing me to approach differing opinions with curiosity rather than defensiveness. How often do we rush into conversations but fail to connect meaningfully? By setting our intentions, we can transform dialogue into a patient exploration of ideas.

    Personal experiences of patience

    Personal experiences of patience

    Patience has played a crucial role in some of my most memorable conversations. I recall a heated exchange during a family gathering where differing opinions on a sensitive topic emerged. Instead of reacting immediately, I took a moment to step back mentally. This willingness to hold my tongue allowed not only the conversation to flow more smoothly but also transformed a potential argument into a respectful dialogue. Isn’t it remarkable how a bit of patience can shift the atmosphere?

    I remember a mentoring session with a struggling student. Their frustration was palpable, and I felt the urge to jump in with solutions. However, I chose to wait and let them express their frustrations fully. As they spoke, I noticed their body language shift from defensive to open, which deepened our connection and made them more receptive to guidance. Have you ever experienced the shift that comes when someone feels truly heard?

    In a professional workshop, I was paired with a colleague known for being quite direct. Initially, I felt challenged by their assertiveness, yet I reminded myself to embrace patience. I made a conscious effort to explore the underlying motivations behind their words, which helped me understand their perspective and even prompted growth in my own approach. Reflecting on that experience makes me wonder—how often do we dismiss the potential for understanding simply because we rush to respond?

    Applying patience in real conversations

    Applying patience in real conversations

    Being patient in real conversations can lead to surprising revelations. I remember a discussion I had with a close friend about our different life choices. When boundaries were tested, I found that taking a breath instead of arguing allowed me to see her point of view. It dawned on me—how often do we really listen when we’re busy forming our own responses?

    Another instance comes to mind from a community event where tensions ran high among participants. I observed how a facilitator used silence masterfully. Instead of interrupting when disagreements arose, they paused, giving everyone space to process their feelings. It was striking to see how this allowed participants to gather their thoughts, leading to more constructive exchanges. Have you ever noticed how silence can be a powerful tool in dialogue?

    During a family meeting, I had a heated discussion with my sibling over financial matters. The initial impulse was to react defensively, but I chose to echo their concerns instead. This simple act of patience created an atmosphere of trust, where we both felt comfortable sharing our vulnerabilities. Isn’t it fascinating how slowing down can create deeper connections in even the toughest conversations?

  • My reflections on vulnerability in dialogue

    Key takeaways:

    • Vulnerability in dialogue fosters authenticity and deeper connections among participants, enhancing engagement and learning.
    • Dialogue transforms traditional education by promoting critical thinking, community, and a sense of belonging among students.
    • Educational events that encourage sharing personal experiences lead to powerful connections and collective growth.
    • Incorporating storytelling and open discussions about setbacks can create a supportive learning environment where vulnerability is celebrated.

    Understanding vulnerability in dialogue

    Understanding vulnerability in dialogue

    Vulnerability in dialogue is about being open and honest, even when it feels uncomfortable. I remember a time in a workshop where I shared my struggle with public speaking. The moment I admitted my fear, the atmosphere shifted; others began to share their own insecurities, too. Isn’t it interesting how acknowledging our vulnerabilities can create a space for deeper connections?

    When we embrace vulnerability, we invite authenticity into our conversations. I often notice that when I allow myself to be imperfect in discussions, it encourages others to lower their shields. Think about a time when someone shared their pain or uncertainty with you; didn’t it make you feel closer to them? Those moments of exposure can lead to richer, more meaningful exchanges.

    Understanding vulnerability is crucial in dialogue, especially in educational settings. I’ve found that students are more engaged when discussions foster such openness. How often have you experienced a breakthrough in understanding after someone bravely spoke their truth? Transformative learning often springs from these honest encounters that encourage us to explore not just ideas, but each other’s experiences.

    Importance of dialogue in education

    Importance of dialogue in education

    Dialogue plays a pivotal role in education, transforming traditional learning methods into dynamic exchanges. I recall a classroom where we broke down complex theories through spirited discussions. The ideas each student presented illuminated different perspectives that textbooks simply couldn’t convey. Doesn’t it feel empowering to express your thoughts and have them shape the conversation?

    In my experience, dialogue enhances critical thinking skills. When students engage in discussions, they don’t just passively absorb information; they actively challenge each other’s viewpoints. I remember a debate in a sociology class that pushed me to reconsider long-held beliefs. Have you ever felt that shift when someone questions your perspective? That’s the beauty of dialogue—it cultivates an environment where ideas evolve.

    Moreover, dialogue fosters a sense of community and belonging among learners. I’ve witnessed students grow more comfortable with one another as they share their thoughts openly. It’s incredible how even a simple exchange can turn a group into a collaborative team. Have you noticed that, too? When students feel connected, their desire to participate and learn flourishes, leading to a richer educational experience for everyone involved.

    Educational events that foster vulnerability

    Educational events that foster vulnerability

    Educational events that foster vulnerability create spaces where participants can share their authentic selves. I remember attending a workshop where we were encouraged to talk about our fears surrounding public speaking. The moment I opened up about my anxiety, I felt an incredible sense of relief wash over me, knowing that others shared similar struggles. Isn’t it fascinating how vulnerability can form such powerful connections?

    These events often include activities that push boundaries, like storytelling sessions where participants recount personal experiences. I once took part in a story circle that left me deeply moved. Listening to others’ stories reminded me that we all carry unique burdens, and sharing them can be incredibly liberating. How often do we take the time to truly listen to each other’s journeys in educational settings?

    Moreover, incorporating transformative practices like mindfulness can enhance vulnerability within educational events. During a retreat I attended, we practiced open sharing after meditation. The atmosphere shifted; instead of awkward small talk, we engaged in meaningful conversations. Why do you think such moments of honesty resonate so much? I believe it’s because they remind us that learning is as much about understanding each other as it is about the content we study.

    Personal experiences with vulnerability education

    Personal experiences with vulnerability education

    There was a time when I hesitated to share my thoughts in group discussions, fearing judgment. I remember a particular seminar where we were asked to express our opinions on sensitive topics. As I spoke about my struggles with self-doubt, I noticed a few nodding in understanding. It struck me that my vulnerability not only freed me but also encouraged others to open up. Isn’t it incredible how one voice can spark a chain reaction of honesty?

    In another workshop, we were encouraged to partner up and share our most significant challenges. I paired with someone I had just met, and as I spoke, I felt an unexpected bond forming. My partner’s eyes reflected empathy, and I realized that vulnerability can create a bridge of trust, fostering deeper connections among participants. How often do we miss opportunities to build such connections in a learning environment?

    Reflecting on these experiences, I see how exposure to vulnerability education has transformed the way I approach interactions. It has taught me that being open about my struggles humanizes me in the eyes of others. When I now see classmates hesitant to share, I often wonder: What hidden stories are waiting to be told? By supporting one another in these moments, we can cultivate a richer educational experience for everyone involved.

    Reflecting on growth through vulnerability

    Reflecting on growth through vulnerability

    Sharing my fears during a recent workshop was a turning point for me. I remember confessing my anxieties about public speaking, which was surprisingly freeing. It allowed me to connect with others who felt the same way. Have you ever experienced that moment of relief when you realize you’re not alone in your struggles? It’s a powerful reminder that vulnerability can lead to growth while forging deeper community ties.

    During another experience, I decided to open up about my hesitations to take risks in my personal and professional life. As I shared, I noticed an atmosphere shift—a collective intake of breath around the room. This moment of shared vulnerability didn’t just help me gain clarity; I could sense it invited others to reflect on their own fears. Isn’t that remarkable? Vulnerability invites reflection, and through this dialogue, we grow not only individually but as a group.

    Looking back, I realize that each authentic moment of sharing has made me more resilient. I’ve learned that my willingness to be vulnerable acts as a catalyst for others to reflect on their own experiences. How often do we shy away from these heartfelt discussions, missing the chance for collective growth? Embracing vulnerability has reinforced my belief that openness can foster an enriching dialogue that enhances our learning journeys.

    Recommendations for future educational events

    Recommendations for future educational events

    Encouraging open dialogue in future educational events can truly transform the experience for everyone involved. I remember a workshop where the facilitator invited participants to share not just successes but also setbacks. It felt refreshing to hear stories of struggle, like when someone admitted to feeling overwhelmed by deadlines. This moment connected us and reminded me that it’s okay to be a work in progress. Why not create a space where failing forward is celebrated rather than scrutinized?

    Incorporating structured peer feedback into educational settings can also enhance vulnerability. I once participated in a session where we paired up to share our thoughts on each other’s presentations. The candid feedback helped me see my work from new angles and made me more aware of the fears I had about judgment. What if future events included more of these honest exchanges? They can spark deeper connections and inspire growth, reinforcing that we all have room to evolve.

    Finally, implementing activities that focus on personal storytelling can be incredibly powerful. During one event, sharing stories in small groups allowed participants to relate on a human level, revealing experiences we often keep hidden. Those moments of connection felt profound, and I learned that true learning springs from our shared vulnerability. How might we integrate storytelling into future events to nurture these bonds and deepen understanding among participants? It’s a step toward creating a rich and engaging learning environment.

  • My reflections on the transformative quality of open dialogue

    Key takeaways:

    • Open dialogue fosters understanding and empathy, transforming classrooms into thriving environments where diverse perspectives enhance learning.
    • Engaging in dialogue cultivates critical thinking, community, and deeper retention of information through active participation.
    • Key elements of effective dialogue include active listening, openness to differing viewpoints, and clarity of expression, all contributing to meaningful exchanges.
    • Planning a successful open dialogue event requires a comfortable setting, engaging topics, and structured questions to stimulate rich discussions.

    Understanding open dialogue in education

    Understanding open dialogue in education

    Open dialogue in education is more than just a method of communication; it’s about creating a learning environment where every voice truly matters. I remember attending a workshop where the facilitator encouraged us to share our thoughts openly. It felt liberating to express ideas without fear of judgment. Have you ever had a moment when your opinion sparked a powerful discussion? Those moments are what open dialogue seeks to cultivate.

    At its core, open dialogue fosters understanding and empathy among students and educators alike. I’ve witnessed a class transform when students felt safe enough to voice their perspectives. It was fascinating to see how differences in opinion led to richer learning experiences. It’s as if the classroom became a living organism, thriving on the diversity of thought. Isn’t it incredible how different viewpoints can lead to greater insights?

    Engaging in open dialogue encourages critical thinking and collaborative problem-solving. I recall a group project where students debated various solutions to a complex problem. The conversations that emerged not only deepened our knowledge but also built relationships. What if every educational setting embraced this kind of dialogue? The potential for learning and growth is limitless when we prioritize open communication.

    Importance of dialogue in learning

    Importance of dialogue in learning

    Engaging in dialogue within the learning environment is essential. I’ve often found that when students engage in conversation, they unlock layers of understanding that might otherwise remain hidden. For instance, during a discussion on a challenging text, I observed how one student’s interpretation sparked connections in others, igniting a collective curiosity. How often do we realize that our thoughts can be a catalyst for someone else’s understanding?

    Moreover, dialogue cultivates a sense of community among learners. In one course I participated in, we shared personal stories related to our topics. This practice not only humanized our discussions but also strengthened our bonds. Have you ever felt more connected to someone simply because you shared a moment of vulnerability? Dialogue can achieve that and transform a group into a supportive learning network.

    I have seen first-hand how dialogue enhances retention of information. When learners articulate their thoughts, they actively process the material, making it more memorable. In a seminar where we debated various viewpoints, I found that articulating my stance helped solidify my understanding. Has there been a time when discussion made a concept click for you in a way that reading alone never could? The interplay of ideas in dialogue enriches the educational experience and reinforces the lessons learned.

    Benefits of open dialogue events

    Benefits of open dialogue events

    Open dialogue events create a unique opportunity for participants to share diverse perspectives. I recall attending a recent workshop where individuals from varying backgrounds brought their experiences to the table. The discussions not only challenged my preconceived notions but also opened my eyes to viewpoints I had never considered before. Isn’t it amazing how a simple conversation can expand our horizons and deepen our understanding of complex issues?

    These events also foster critical thinking skills. I vividly remember a roundtable discussion where we were encouraged to question each other’s ideas. This practice was both refreshing and intimidating, but it ultimately led to richer exchanges and stronger arguments. Have you ever left a conversation feeling like you’ve really dug deep into a subject? That’s the power of open dialogue; it empowers individuals to think critically and engage thoughtfully.

    Finally, open dialogue enhances emotional intelligence among participants. In a group setting, I witnessed how empathy blossomed when we shared our personal experiences related to the topic at hand. It became clear that understanding others’ feelings and perspectives was not only beneficial for our discussions but also transformative for our relationships. Isn’t it rewarding to learn how to relate to others on a deeper level? That emotional connection is what truly enriches our educational journeys.

    Key elements of effective dialogue

    Key elements of effective dialogue

    Effective dialogue hinges on active listening, a fundamental element that nurtures genuine understanding. I’ve often found that when I truly focus on what others are saying, it transforms the conversation completely. It’s not just about waiting for my turn to speak; it’s about immersing myself in their words. Have you ever felt heard in a conversation? That sense of validation can pave the way for deeper connections and more meaningful exchanges.

    Another vital component is openness to differing viewpoints. I recall a debate within a small group where the tension was palpable. Instead of shutting down opposing ideas, we embraced them. This willingness to explore contrasting perspectives sharpened our discussions, making them more insightful. How often do we miss out on growth simply because we cling to our own beliefs? I’ve learned that staying open allows us to navigate complexities, sparking innovation and new ways of thinking.

    Lastly, clarity of expression is essential. I remember a time when I struggled to articulate my thoughts during a group discussion. The confusion that ensued reminded me how vital it is to communicate clearly. When we express ourselves with precision, it eliminates misunderstandings and fosters a more engaging dialogue. Have you ever left a conversation uncertain about what was discussed? Clarity not only enhances comprehension but also enriches collaboration, enabling us all to move forward together.

    Planning an open dialogue event

    Planning an open dialogue event

    One essential aspect of planning an open dialogue event is establishing a comfortable environment. I remember organizing a workshop in a cozy, informal setting that encouraged participants to relax and share openly. Have you ever noticed how the atmosphere influences conversation? The right ambiance can fundamentally shift how people engage, fostering an authentic exchange of ideas.

    Additionally, it’s crucial to select engaging topics that resonate with the participants’ interests. Once, I facilitated a dialogue on the impact of technology in education—something everyone was passionate about. The energy in the room was palpable. When people care about the subject matter, they invest more into the conversation. How can we tap into those passions to spark meaningful dialogue?

    I’ve found that incorporating structured questions can keep the flow of discussion productive and focused. At one event, I used guided prompts that encouraged participants to delve deeper into their thoughts. The result was a rich tapestry of insights that unfolded organically. Have you ever felt the difference when questions are thoughtfully crafted? It can elevate the dialogue from surface level exchanges to profound conversations.

    Personal experiences with open dialogue

    Personal experiences with open dialogue

    My experiences with open dialogue have often been eye-opening. During a recent discussion group, I witnessed how vulnerability plays a pivotal role. One participant shared a deeply personal story that resonated with many, creating an atmosphere where others felt safe to express their own struggles. Isn’t it amazing how one brave voice can inspire a cascade of openness?

    In another instance, I remember attending an open dialogue about mental health awareness. The environment fostered raw honesty, and I was struck by how sharing our stories brought us closer. It made me realize that while we might think we are alone in our feelings, open dialogue reveals our shared humanity. Have you ever felt the weight lifted when you discovered others relate to your experiences?

    Lastly, I’ve observed that the exchange of diverse perspectives often sparks creativity. I recall a session where participants shared innovative teaching strategies that stemmed from their unique backgrounds. Each idea, like a piece of a puzzle, contributed to a larger picture of collaborative growth. It’s in these moments that I truly understand the transformative power of open dialogue—connecting people in ways that mere discussion cannot achieve.

    Lessons learned from dialogue participation

    Lessons learned from dialogue participation

    Engaging in open dialogue has taught me that moments of discomfort can lead to profound understanding. I vividly recall a heated discussion about differing educational philosophies. Initially, the air felt thick with tension, but as I pushed through the awkwardness and shared my perspective, I noticed a subtle shift. Isn’t it fascinating how addressing uncomfortable truths can pave the way for greater empathy and connection?

    One particularly memorable lesson came from participating in a dialogue centered on racial equity. I was struck by the power of active listening; when I fully focused on another person’s story, it allowed me to grasp their lived experiences beyond my own assumptions. Have you ever felt that shift when you truly heard someone’s pain? It’s those moments that remind me how critical it is to silence our internal narratives and be present for others.

    Lastly, I’ve learned how essential it is to approach dialogue with an open heart and mind. In one instance, I entered a conversation about community resilience with preconceptions that I quickly realized were limiting my understanding. By the end, the insights shared by others transformed my perspective on collaboration and support. How often do we miss opportunities for growth simply because we cling to our initial thoughts? Embracing this open-mindedness in dialogue can be a true game changer in how we connect and learn from one another.