= 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

  • How I promote intellectual curiosity through dialogue

    Key takeaways:

    • Intellectual curiosity drives exploration and fosters a deeper understanding of the world, often igniting passion through inquiry and new perspectives.
    • Dialogue in education enhances critical thinking, encourages diverse viewpoints, and transforms learning into collaborative rather than competitive experiences.
    • Effective educational events require intentional planning, interactive activities, and feedback loops to promote participant engagement and deeper learning.
    • Facilitating meaningful conversations involves creating safe spaces, practicing active listening, and using open-ended questions to encourage genuine dialogue and connection.

    Understanding intellectual curiosity

    Understanding intellectual curiosity

    Intellectual curiosity is the innate desire to explore, learn, and understand the world around us. I remember my own moments of curiosity, like when I encountered a complex piece of art that had layers of meaning. I found myself asking, “What is the story behind this?” That very question opened the door to a wealth of knowledge and deeper appreciation.

    At its core, intellectual curiosity fuels our desire for knowledge. Think about a time when you learned something new that completely changed your perspective. How did that feeling evolve for you? For me, it was when I first delved into philosophy; every new concept felt like a puzzle piece fitting into a larger picture, igniting a passion for endless exploration.

    Moreover, this curiosity often arises from a sense of wonder and astonishment, sparking questions that challenge our existing beliefs. I distinctly recall a heated discussion I had about the ethics of technology; it filled me with excitement as I realized how deeply interconnected everything is. It’s this sense of inquiry that drives us to engage with ideas and each other, prompting a journey of discovery that feels both personal and transformative.

    Importance of dialogue in education

    Importance of dialogue in education

    Dialogue plays a vital role in education, as it transforms traditional learning into a vibrant exchange of ideas. I often think back to group discussions in my classes, where diverse perspectives sparked insights I wouldn’t have reached alone. Have you ever noticed how a well-facilitated conversation can unravel complex topics and make them more accessible?

    When students engage in open dialogue, they not only share their thoughts but also learn to listen actively. The feeling of truly hearing someone else’s viewpoint can be profound. I remember a debate I participated in about climate change; it was enlightening to hear different arguments and feel my own beliefs shift as I absorbed their insights. This kind of interaction fosters a community where learning becomes collaborative rather than competitive.

    Furthermore, dialogue encourages critical thinking, pushing students to articulate and defend their viewpoints. I still reflect on moments when I was challenged to explain my stance, often unearthing assumptions I didn’t realize I held. How powerful is it when students leave a conversation not just with answers but also with new questions? It’s that dynamic process that nurtures intellectual curiosity, driving learners to explore deeper and venture beyond surface-level understanding.

    Designing engaging educational events

    Designing engaging educational events

    Creating engaging educational events requires intentional planning that fosters interaction among participants. I once organized a workshop where I encouraged attendees to break into small groups to solve a real-world problem together. The energy in the room shifted as they exchanged ideas, and it was fascinating to watch how those conversations brought forth innovative solutions that none of them would have envisioned alone.

    Another essential element is to incorporate interactive activities that align with the event’s theme. During a recent seminar, we introduced a role-playing activity that simulated a historical event. I was surprised by how the participants embraced their roles, revealing insights that prompted deeper discussions. Isn’t it incredible how stepping into someone else’s shoes can ignite a newfound understanding of complex subjects?

    Finally, feedback loops are crucial for effective event design. After every event I’ve hosted, I always ask participants to share their thoughts on what worked and what could improve. This openness feels transformative, not just for me as the organizer but for attendees too, as their reflections often reshape the next event’s structure. Don’t you think that this collaborative approach to designing educational experiences not only elevates engagement but also deepens the learning process?

    Facilitating meaningful conversations

    Facilitating meaningful conversations

    Facilitating meaningful conversations is truly about creating a safe space for genuine dialogue. I recall facilitating a discussion panel where I encouraged participants to share not just their ideas but also their apprehensions. By acknowledging vulnerabilities, we witnessed a remarkable transformation—everyone felt more comfortable speaking up, leading to rich, thought-provoking exchanges. Isn’t it amazing how vulnerability can pave the way for deeper connections?

    Moreover, active listening plays a vital role in cultivating effective dialogue. During a community forum I attended, the facilitator made it a point to summarize and reflect on what each speaker expressed, reinforcing that their voices mattered. This small gesture not only validated their contributions but also encouraged a wave of subsequent participants to share diverse perspectives. Have you ever felt more compelled to speak when someone truly listened to you?

    Lastly, I believe that asking open-ended questions can spark incredible conversations. At a recent book club meeting I hosted, instead of asking if attendees liked the book, I framed the discussion around how it resonated with their life experiences. The result? A cascade of personal stories unfolded, connecting literature to individual journeys. Don’t you find that this approach not only deepens understanding but also fosters a collaborative learning environment?

    Techniques to promote curiosity

    Techniques to promote curiosity

    One effective technique to promote curiosity is the art of storytelling. I remember a time when I shared an intriguing historical anecdote during a workshop. The story not only captivated the audience but also prompted them to ask questions about the context and implications. Isn’t it fascinating how a well-told narrative can ignite a thirst for knowledge and inspire deeper exploration of a topic?

    Another strategy is to design interactive activities that encourage exploration. In a recent team-building exercise, I introduced a scavenger hunt that required participants to seek answers to specific questions scattered throughout our venue. The excitement and engagement were palpable. How often do we learn best when we are physically moving, searching, and collaborating with others?

    Additionally, incorporating multimedia resources can heighten curiosity. At a seminar I led, I utilized videos and infographics to present complex ideas visually. This not only broke down barriers to understanding but also provoked attendees’ interest in learning more. Have you noticed how different formats can trigger new kinds of questions and pathways to discovery?

    Personal experiences in fostering dialogue

    Personal experiences in fostering dialogue

    Fostering dialogue has been a rewarding experience for me, particularly during a roundtable discussion I facilitated at a community event. I encouraged participants to share their perspectives on various educational methodologies. The room buzzed as people connected over their shared challenges and successes. It struck me how a simple prompting could lead to a rich exchange of ideas, making everyone feel valued and heard.

    In another instance, I hosted a book club where we explored thought-provoking literature. I found that when I asked open-ended questions like, “What resonated with you the most?” it sparked deeper reflections among members. Observing their faces light up as they connected the story to their own lives was incredible. Have you ever noticed how a single question can unlock a floodgate of insights and experiences?

    One memorable experience was when I incorporated “fishbowl” discussions in a workshop. Participants initially sat in an outer circle while a few engaged in conversation in the center. As I observed the dynamic shift, it became clear how the format empowered voices often sidelined in larger discussions. Witnessing participants gradually step into the inner circle to share their thoughts was a powerful reminder of the impact that inclusive dialogue can have on expanding intellectual curiosity. Isn’t it amazing how creating the right environment can encourage those who might typically hold back?

    Evaluating the impact of dialogue

    Evaluating the impact of dialogue

    Evaluating the impact of dialogue often reveals surprising layers of understanding. For instance, during a recent seminar, I noticed that the most engaged participants were those who actively collaborated on problem-solving scenarios rather than simply exchanging facts. Their enthusiasm was palpable, and it made me realize how dialogue can transform passive listeners into active contributors. Have you ever felt the energy shift in a room when dialogue truly resonates?

    In another setting, feedback from participants provided invaluable insights into how dialogue fosters a sense of belonging. A participant shared how discussing sensitive topics had not only deepened her understanding but also strengthened her connection to the group. This emotional response made me rethink the role of dialogue; it’s not just about exchanging ideas but nurturing community through vulnerability and shared experiences. Can you recall a time when you felt connected to others through open conversation?

    On a different occasion, I implemented anonymous feedback during a workshop to evaluate the dialogue’s effectiveness. Participants expressed their thoughts through written notes, and their reflections revealed an unexpected depth of transformation. I realized that dialogue doesn’t always need to be face-to-face to be impactful; sometimes, the courage to express oneself in writing can lead to profound insights. How have you experienced the impact of dialogue in your life, both spoken and unspoken?

  • How I promote cultural understanding in discussions

    Key takeaways:

    • Cultural awareness enhances meaningful dialogue and fosters empathy by recognizing and celebrating diverse perspectives.
    • Effective communication is rooted in cultural understanding, which promotes respect, collaboration, and the dismantling of stereotypes.
    • Facilitating intercultural dialogue through open-ended questions, storytelling, and safe spaces enriches the exchange of ideas and deepens connections.
    • Evaluating discussions through participant feedback and observing changes in attitudes can measure the impact and effectiveness of cultural engagements.

    Understanding cultural awareness

    Understanding cultural awareness

    Cultural awareness is the foundation for meaningful dialogue. I remember a time when I engaged in a discussion with colleagues from different backgrounds. Their perspectives on a common issue opened my eyes to viewpoints I hadn’t considered, challenging my assumptions in a constructive way.

    Consider how often we take our own cultural lens for granted. When I began actively seeking to understand others’ experiences, it was as if each conversation unlocked a new layer of depth in my understanding of the world. Hasn’t there been a moment in your life where a seemingly simple discussion transformed your views about an entire culture?

    Acknowledging the diversity around us is not just about recognizing differences; it’s about celebrating them. I once participated in a community event where stories from various cultures were shared. The emotional connections forged during those exchanges taught me that the richness of our experiences lies in our varying traditions, languages, and beliefs, reminding me how vital empathy is in fostering cultural understanding.

    Importance of cultural understanding

    Importance of cultural understanding

    Cultural understanding is crucial because it enhances our ability to communicate effectively. I recall attending a workshop where participants had to navigate discussions without using their native language. It was challenging yet illuminating, as I learned how non-verbal cues and gestures held immense weight in conveying meaning. Isn’t it fascinating how a simple gesture can span across cultures, yet vary significantly in interpretation?

    The importance of cultural understanding extends beyond communication; it fosters respect and collaboration. I once partnered on a project with individuals from diverse backgrounds, and we encountered differing approaches to problem-solving. At first, it felt like a barrier, but as we engaged in open dialogue, I embraced their unique perspectives, which often led to innovative solutions. Have you ever noticed how much richer a project can become when blending different cultural insights?

    Moreover, promoting cultural understanding helps to dismantle stereotypes and prejudices. I remember a particularly eye-opening experience at a cultural fair where I was immersed in different customs and traditions. Engaging in conversations with people from those cultures was a game changer, as it shattered preconceived notions I had unwittingly held. Isn’t it powerful to think about how a single event can reshape our beliefs and invite deeper connections with those around us?

    Methods for promoting discussion

    Methods for promoting discussion

    When it comes to promoting discussion, one effective method I’ve found is the use of open-ended questions. During a recent multicultural forum I attended, the facilitator posed thought-provoking questions that encouraged participants to share personal experiences related to their cultural backgrounds. This not only sparked meaningful conversations but also created a comfortable space for everyone to express their views. Have you ever noticed how a simple question can unlock a wealth of perspectives?

    Another technique that works wonders is incorporating storytelling into discussions. I remember a class where I was invited to share a personal story about my cultural heritage. Sharing my experiences felt liberating, and I saw how others connected with my narrative, offering their own stories in return. Isn’t it incredible how personal stories can bridge gaps and create a sense of belonging in a group?

    Finally, establishing ground rules for respectful dialogue is vital in fostering an inclusive environment. In a recent online seminar, we agreed upfront that all voices would be heard without interruptions. This commitment made participants feel valued, leading to richer discussions. Have you ever been in a discussion where it felt safe to share your thoughts? That sense of security can transform conversations.

    Organizing educational events

    Organizing educational events

    When organizing educational events, I have always found that understanding the audience’s cultural backgrounds is key. For instance, during a workshop on global citizenship, I conducted a quick survey to gauge the diverse origins of participants. This simple step helped me tailor the event’s content, making it more relevant and engaging. Have you ever considered how knowing your audience can shape an event’s success?

    Logistics play a crucial role as well. At one event I coordinated, we ensured that the venue was accessible to everyone, including individuals with disabilities. It amazed me how this attentiveness not only accommodated everyone but also fostered a sense of belonging among the attendees. Isn’t it heartwarming when everyone can participate fully?

    Moreover, I believe in providing attendees with opportunities to connect beyond educational discussions. At a recent cultural festival I helped organize, we set up interactive booths where participants could share food, music, or crafts from their cultures. This hands-on experience opened up dialogues that textbooks often overlook. Have you ever tasted a dish that sparked a story, leading to deeper connections with others?

    Facilitating intercultural dialogue

    Facilitating intercultural dialogue

    Facilitating intercultural dialogue is one of the most rewarding aspects of organizing educational events. I remember at a panel discussion I hosted, we included speakers from various cultural backgrounds who shared not just their expertise but also personal stories that resonated deeply with the audience. It was fascinating to see how these narratives fostered empathy and challenged preconceived notions. Have you ever noticed how a simple story can break down barriers and ignite curiosity about another culture?

    Additionally, I strive to create safe spaces where participants feel comfortable expressing their views. At one workshop, I implemented small group discussions that encouraged participants to share their cultural perspectives without fear of judgment. I was genuinely moved by the heartfelt exchanges that unfolded. This approach highlighted just how vital it is for everyone to have a voice in the conversation. How often do we truly listen to understand rather than respond?

    Moreover, I find that utilizing interactive activities can significantly enhance intercultural communication. During an event focused on global environmental issues, we arranged a cultural exchange session where attendees taught each other local practices related to sustainability. Witnessing this exchange was powerful—it not only educated participants but also reinforced the idea that we have much to learn from one another, regardless of our backgrounds. Isn’t it amazing how collaboration can lead to richer experiences and greater understanding?

    Sharing personal experiences

    Sharing personal experiences

    Sharing personal experiences can bridge gaps in understanding and foster deeper connections among participants. I recall a time when a participant shared a story about their family’s immigration journey during a discussion on cultural identity. As they spoke, I could feel the room shift; everyone leaned in, captivated by the raw emotion of their experience. It was as if that single moment turned abstract concepts into something profoundly relatable. Have you ever felt that kind of connection when someone opens up about their life?

    In another instance, during a workshop on traditional cuisines, one individual brought in a recipe that was passed down through generations. As they described the significance of each ingredient and the stories behind family gatherings, I found myself moved by how food can carry cultural heritage. It was a beautiful reminder of how sharing such intimate experiences not only enriches our collective knowledge but also leaves lasting impressions that resonate long after the event. How often do we underestimate the power of something as simple as a recipe to connect people?

    It’s essential to recognize that sharing personal anecdotes creates a tapestry of diverse experiences. I once facilitated a discussion where participants shared their first encounters with a different culture, from travel stories to local traditions. The variety was incredible, and I realized that each tale, no matter how trivial it seemed, added a unique thread to the overall narrative. Isn’t it interesting how a seemingly mundane experience can hold the key to greater understanding?

    Evaluating the impact of discussions

    Evaluating the impact of discussions

    Evaluating the impact of discussions goes beyond surface-level interactions; it’s about how those dialogues shape perspectives. I remember a workshop where we tackled sensitive issues surrounding refugees. By the end of the session, participants expressed newfound empathy and a willingness to advocate for understanding in their own communities. I often wonder, how can a single conversation become a catalyst for change? It truly highlights the transformative power of open dialogue.

    One effective way to evaluate discussions is by gathering feedback from participants. After a recent event focused on cultural sensitivity, I gave everyone a chance to share their thoughts. The responses were enlightening; many felt they left with more than just knowledge – they gained a sense of responsibility toward fostering inclusivity. Isn’t it fascinating how the reflection process can amplify the learning experience?

    Lastly, I find that observing changes in attitudes can serve as a clear indicator of success. During a community meet-up on indigenous rights, I noticed a shift in tone among participants. Those who were initially hesitant began to ask questions that indicated deeper engagement. Witnessing this transformation makes me ponder: what more can we accomplish when discussions are framed to encourage exploration and understanding?

  • How I promote encouragement for continuous learning

    Key takeaways:

    • Educational events facilitate diverse knowledge sharing and foster a community committed to continuous learning and improvement.
    • Continuous learning is essential for adaptability, creativity, and resilience in a rapidly evolving world.
    • Creating engaging learning environments involves fostering community, incorporating interactive elements, and enhancing the atmosphere with thoughtful decor.
    • Measuring success in educational initiatives should focus on personal growth and lasting impact, rather than just participation numbers.

    Understanding educational events

    Understanding educational events

    Educational events serve as vital platforms for knowledge sharing and professional growth. I remember attending a workshop that completely transformed my approach to teaching. It was phenomenal to watch participants, all from different backgrounds, engage passionately with the material and each other. Isn’t it incredible how diverse perspectives can elevate our understanding?

    These events come in many forms, such as seminars, webinars, conferences, and workshops, each designed to cater to specific learning needs. I often find myself pondering how much I learn from these interactions compared to solitary study. The energy in the room, the sparks of insight exchanged during discussions – it’s an experience that books alone can’t replicate.

    Participating in educational events bolsters a community of learners committed to continuous improvement. I recall being part of a roundtable discussion where we shared our challenges and triumphs. That moment of vulnerability and connection reminded me why these gatherings matter – they encourage us to grow together, supporting one another as we navigate our learning journeys. Don’t you just love that sense of belonging and shared purpose?

    Importance of continuous learning

    Importance of continuous learning

    Continuous learning is essential for adapting to the fast-paced nature of today’s world. I remember a time at an educational event when a speaker highlighted how technology rapidly evolves. It struck me that those who embrace learning are the ones who thrive, while others may struggle to keep up. Isn’t it fascinating how a commitment to lifelong education can open doors we didn’t even know existed?

    Moreover, ongoing learning fosters creativity and innovation. There was an inspiring discussion at a conference where several attendees shared their breakthrough ideas sparked by concepts they had just learned. It made me realize that new knowledge not only expands our skill sets but also ignites our imagination. How often do we underestimate the power of fresh ideas to reshape our perspectives?

    Finally, engaging in continuous learning nurtures resilience. During a recent workshop, I witnessed a participant share their journey of overcoming setbacks through new skills and knowledge gained from previous events. Their story resonated deeply with me, emphasizing that each educational experience prepares us better for future challenges. Doesn’t it feel empowering to know that our commitment to learning equips us to tackle whatever comes next?

    Strategies for promoting learning

    Strategies for promoting learning

    When it comes to promoting continuous learning, I find that fostering a supportive environment is crucial. In my experience, creating spaces where individuals feel safe to express their questions and ideas can significantly boost engagement. I recall attending a workshop where the facilitator encouraged open dialogue, allowing attendees to share their learning struggles. This simple approach not only encouraged participation but also built a sense of community among us.

    One effective strategy I’ve employed is integrating diverse learning formats. I remember organizing an event where we combined panel discussions, hands-on workshops, and informal networking opportunities. This variety kept participants energized and engaged while catering to different learning styles. It made me think: how often do we limit our learning experiences by sticking to just one method? Embracing a blend can truly enhance the educational journey.

    Additionally, recognizing achievements—big or small—can motivate continued learning. I once led a team project where we celebrated milestones, whether it was mastering a new skill or completing a challenging module. Seeing my teammates’ pride in their accomplishments fueled everyone’s desire to keep pushing forward. Have you ever felt that rush of motivation when your efforts are acknowledged? I believe it’s this recognition that can spark a lasting commitment to learning.

    Organizing effective educational events

    Organizing effective educational events

    Organizing effective educational events requires meticulous attention to detail and an understanding of your audience’s needs. I remember organizing a conference where I spent time surveying potential attendees about their interests and preferences. It became clear that tailoring the agenda based on participant feedback not only increased attendance but transformed the entire atmosphere of the event. Do you think that’s why more people show up when they feel their voice matters?

    Another key aspect is the choice of venue. During one of my events, I opted for a cozy, inviting space rather than a traditional classroom setting. This decision fostered a relaxed environment, encouraging people to interact more freely. I still recall the conversations that sparked new ideas as attendees mingled in a comfortable setting. Isn’t it fascinating how the right environment can inspire creativity and collaboration?

    Lastly, incorporating feedback loops during the event can be transformative. I once implemented quick surveys at various intervals, allowing participants to share their experiences in real time. It was eye-opening to see how these little adjustments could enhance engagement instantly. Have you ever wondered how much potential feedback can shape the outcome of an event? Embracing this dynamic approach can truly elevate the effectiveness of educational gatherings.

    Creating engaging learning environments

    Creating engaging learning environments

    Creating an engaging learning environment starts with establishing a sense of community among participants. I vividly remember a workshop where I encouraged attendees to share their own experiences related to the topic. The moment someone opened up about their challenges, it set off a chain reaction; others started sharing too. Isn’t it incredible how vulnerability fosters connection and enhances the learning experience?

    Another strategy I’ve found effective is incorporating interactive elements. During a recent seminar, I included hands-on activities that tied into the core themes being discussed. It was uplifting to see how the attendees’ energy shifted when they were actively involved, rather than just sitting and listening. Could it be that when people physically engage, their retention improves as well?

    Lastly, lighting and decor can play a surprisingly powerful role in how people feel about learning. At a community training session I hosted, we transformed a stark room with warm lighting and vibrant visuals. The change was palpable; the atmosphere turned from sterile to inspiring, igniting even the most reluctant participants. Have you ever noticed how your mood shifts in different settings? Crafting an inviting space can really enhance the overall educational experience.

    Sharing personal experiences

    Sharing personal experiences

    I remember attending a conference where the speaker encouraged everyone to share their learning journeys. One woman stood up and revealed how she had transitioned careers after a difficult personal loss. Her story resonated deeply with many, and it reminded me of how sharing our challenges, not just our triumphs, can create a powerful bond among learners. Have you ever thought about how vulnerability can spark motivation in others?

    Another memorable experience was during a book club I facilitated, where we discussed a particularly impactful book on personal development. I encouraged participants to reflect on how the themes related to their own lives. It was amazing to witness when someone shared their struggle with self-doubt, others chimed in with similar feelings. It made me realize that sharing personal stories fosters an environment where continuous learning becomes a shared journey rather than a solitary task.

    In my own professional development, I often turn to mentors who share their experiences, both good and bad. I’ll never forget a mentor’s account of a failed project; their openness about the lessons learned turned what could have felt like a defeat into a valuable teaching moment for me. This transparency not only helped me avoid similar pitfalls but also inspired me to embrace my own failures as opportunities for growth. How much richer do our learning experiences become when we share these personal insights?

    Measuring success of initiatives

    Measuring success of initiatives

    Measuring success in educational initiatives can often feel elusive. I vividly recall initiating a workshop series focused on digital literacy, where we set specific goals, like participant engagement and knowledge retention. After gathering feedback through surveys, it became clear that our measure of success wasn’t just the number of attendees but the lasting impact on their confidence in using technology. This revelation made me question: What if we focused more on personal growth rather than just participation numbers?

    In another instance, I once spearheaded a mentorship program aimed at fostering continuous learning among junior staff. We tracked not only attendance but also follow-up conversations about what they had learned and applied. I found it heartening to see how a simple check-in could ignite deeper discussions and inspire further learning paths. Have you considered how tracking these more personal milestones can paint a better picture of success?

    Lastly, I had a chance to reflect on the outcomes of a community art project I led. While we had measurable results in terms of attendance, the real success came from witnessing participants openly share their art and ideas at community gatherings. It made me realize that true success is often felt rather than quantified. How do we capture those moments that go beyond data? They are indicators of growth that statistics alone cannot reveal.

  • How I promote curiosity as an essential element of dialogue

    Key takeaways:

    • Curiosity transforms conversations from transactional exchanges to meaningful dialogues, fostering deeper insights and connections.
    • Encouraging curiosity in education empowers students, enhances engagement, and promotes a culture of inquiry that leads to lifelong learning.
    • Effective strategies to foster curiosity include asking open-ended questions, incorporating interactive activities, and using storytelling to create connections in discussions.
    • Measuring curiosity through interactive tools and reflective exercises can reveal participants’ interests and enhance the educational experience.

    Understanding curiosity in dialogue

    Understanding curiosity in dialogue

    Curiosity is like the spark that ignites meaningful dialogue. When I engage in conversations, I often find that asking open-ended questions can lead to deeper insights. What happens when we express genuine interest? The dialogue shifts from being merely transactional to something much richer and more fulfilling.

    I remember a time at an educational event where I asked a speaker about their inspiration. Instead of simply recounting facts, they shared stories and emotions that made their journey relatable. This experience opened my eyes to how curiosity can transform a typical exchange into an enlightening experience. Isn’t it fascinating how one question can invite a cascade of ideas and perspectives?

    In my view, fostering curiosity during interactions also cultivates a safe space for vulnerability. When participants feel that their thoughts are valued and explored, they often open up more. This reciprocal exchange not only enhances understanding but also builds connections that can last far beyond the dialog itself.

    Importance of curiosity in education

    Importance of curiosity in education

    Curiosity serves as the driving force behind a profound educational experience. I recall a workshop I attended where participants were encouraged to explore their questions openly. One participant, hesitant at first, posed a simple query about the teaching methods discussed. That sparked an animated discussion that led to diverse perspectives and innovative ideas—transforming the session into a collaborative learning experience. What if we all embraced that curious spirit?

    In my experience, when students bring curiosity to their learning, they take ownership of their education. I worked with a group of young learners who were initially disengaged. By encouraging them to ask “why” and “how,” their enthusiasm blossomed. It was like turning on a light—their eagerness to explore topics deeply enhanced their understanding and retention. In education, curiosity isn’t just beneficial; it’s essential.

    The atmosphere of curiosity empowers students and educators alike. I once witnessed a teacher who fostered a culture of inquiry in her classroom. She not only welcomed questions but celebrated them, creating an environment where everyone felt safe to explore. The students thrived, often surprising both themselves and their teacher with their insights. So, how can we further nurture this essential element of education? By prioritizing curiosity, we can promote engagement and pave the way for lifelong learning.

    Strategies to foster curiosity

    Strategies to foster curiosity

    Fostering curiosity is all about creating opportunities for exploration. I recall a community seminar where we broke into small groups and tackled real-world problems. Encouraging participants to brainstorm without limits was thrilling; I saw individuals rediscover their passions, igniting curious discussions. How often do we give ourselves space to just wonder and investigate?

    One effective strategy is to present open-ended questions that allow for deeper thinking. During a recent lecture, I posed a question that initially seemed simple, but it opened up avenues of thought and debate. Participants were eager to dissect their responses, leading to unexpected discoveries that not only engaged them but enriched the overall dialogue. What if we dared to question assumptions more frequently?

    Another approach is to incorporate interactive activities that stimulate inquiry. I once orchestrated an event where attendees could choose from a variety of hands-on projects. Watching them immerse themselves and ask about processes highlighted their intrinsic curiosity. The buzz of excitement in the room was palpable, reminding me how vital it is to tailor educational experiences that invite exploration. Wouldn’t it be wonderful if every educational event harnessed that energy?

    Techniques for engaging discussions

    Techniques for engaging discussions

    One technique that has always resonated with me is the power of storytelling in discussions. During a workshop I facilitated, I shared a personal story about a challenge I faced. The moment I revealed my triumphs and failures, I noticed a shift in the room—participants leaned in, eager to share their own experiences. Isn’t it fascinating how personal narratives can create connection and prompt deeper engagement?

    Another method I find effective is utilizing role-playing scenarios. I remember a training session where participants acted out different perspectives within a debate. This not only sparked curiosity but also encouraged empathy among the group. It made me wonder—how often do we step into someone else’s shoes to truly understand their viewpoint?

    Lastly, I believe in the power of silence. In my experience, allowing moments of pause after asking a thought-provoking question can lead to richer reflections. During a recent discussion, I purposely waited after asking a challenging question. The silence was uncomfortable at first, but it soon blossomed into an animated dialogue, revealing insights I hadn’t anticipated. Could it be that the quiet moments are where the most profound thoughts surface?

    Creating a curious classroom environment

    Creating a curious classroom environment

    Creating a curious classroom environment goes beyond simply providing information. During a recent class I taught, I incorporated a “question wall” where students could post their questions throughout the week. As they started seeing their inquiries take shape, I noticed a palpable excitement in the room. It struck me—how often do we give students the space to voice their curiosity without judgment?

    I’ve also found that using unexpected materials can spark interest and ignite conversations. In one instance, I brought in a seemingly random object—a simple stone—and asked students to think about its journey. This exercise led to unexpectedly deep discussions about nature, belonging, and even human impact on the environment. Isn’t it amazing how a small object can open the floodgates to so many ideas?

    Encouraging exploration through hands-on activities can foster a sense of wonder. In my experience, when students engage with their surroundings through experiments or projects, their inquiries deepen naturally. I recall a science project where students created their own ecosystems. Watching their eyes light up as they observed their creations flourish made me realize that curiosity often thrives in the midst of discovery. How might we create more opportunities for such explorations?

    Personal experiences in promoting curiosity

    Personal experiences in promoting curiosity

    I recall a memorable workshop where I encouraged participants to share their own experiences through storytelling. By creating a safe space for them to explore their thoughts and feelings, curiosity flourished. It was incredible to witness the shifts in their expressions as they connected with one another, asking more probing questions that went beyond basic responses. Have you ever seen how a simple prompt can open up a wealth of curiosity?

    Another time, I integrated role-playing into a professional development session. Participants assumed different perspectives related to a complex issue, which transformed the dialogue from mere discussion into a lively exploration of ideas. It struck me how immersing ourselves in different roles could breathe life into stagnant conversations, sparking curiosity and deeper understanding. Could stepping into another’s shoes really be that powerful?

    During my time as a mentor, I’ve learned that asking “what if” questions can be a game changer. In one instance, while guiding a group on a project, I prompted them with scenarios that pushed their boundaries. The collective brainstorming that followed revealed not just diverse perspectives but also a genuine eagerness to know more. Isn’t it fascinating how a simple shift in questioning can unlock new realms of curiosity?

    Measuring curiosity in educational events

    Measuring curiosity in educational events

    To effectively measure curiosity in educational events, I’ve found that employing interactive tools like live polls can be incredibly revealing. For instance, during a seminar, I used a digital polling app to gauge participants’ initial interests on various topics. The immediate feedback helped me identify which areas sparked the most curiosity, allowing for deeper dives into those subjects. Have you ever noticed how participants light up when discussing what truly intrigues them?

    Another method I’ve embraced is facilitating small group discussions with targeted curiosity-based prompts. In one workshop, I divided the attendees into pairs and asked them to probe one another with open-ended questions about a specific theme. The resulting conversations not only highlighted the topics that fueled their curiosity but also demonstrated how the depth of dialogue increased dramatically when they felt encouraged to explore ideas together. Isn’t it intriguing how such simple structures can elevate the conversation?

    Additionally, I often incorporate reflective exercises where participants write about what they found most compelling during the event. Once, I asked attendees to jot down their “ah-ha” moments. As I reviewed their submissions, I noticed recurring themes that pointed to a shared curiosity that had been ignited. This practice not only measures curiosity but also helps individuals recognize and articulate their learning experiences. How powerful is it to turn observations into a tangible metric for curiosity?

  • How I promote exploration in panel topics

    Key takeaways:

    • Educational events foster community building and knowledge sharing, significantly impacting personal and professional growth.
    • Well-chosen panel topics engage audiences, promote meaningful discussions, and create safe spaces for exploration.
    • Diversity in panels enhances dialogue, challenges biases, and provides insights into varying perspectives and experiences.
    • Effective discussions depend on preparation, active listening, and clear guidelines to encourage participation and deeper engagement.

    Understanding educational events

    Understanding educational events

    Educational events serve as vital platforms for knowledge sharing and skill development. I’ve encountered many individuals who arrived at such events unsure of what to expect, only to leave feeling inspired and empowered. Isn’t it fascinating how much we can grow when we immerse ourselves in learning environments?

    The diversity of educational events, from workshops to conferences, caters to a wide range of interests and expertise levels. I once attended a small, local workshop that significantly impacted my career trajectory; the intimate setting fostered genuine connections and discussions that I still draw from today. Have you ever attended an event that shifted your perspective entirely?

    Understanding the dynamics of educational events also involves recognizing their role in community building. I remember when I helped organize a panel discussion; the energy in the room was palpable. Participants were not just absorbing information; they were engaging in meaningful dialogues that contributed to their journey of discovery. Isn’t that what education is all about – fostering connections that lead to deeper insights?

    Importance of panel topics

    Importance of panel topics

    Panel topics play a crucial role in framing the discussions that take place during educational events. I remember sitting in on a panel about emerging technologies, where each expert offered a unique perspective. That diversity in viewpoints not only sparked my curiosity but also opened my mind to possibilities I hadn’t considered before. Have you ever found yourself changed by a conversation that started with just one topic?

    Moreover, well-chosen panel topics can actively engage the audience, prompting questions and discussions that lead to deeper learning. At one event, the moderator skillfully guided the dialogue on sustainable practices, electrifying the room. Attendees weren’t merely spectators; they became contributors, sharing their own stories and insights, enriching the experience for everyone involved. Isn’t it empowering to feel that your voice matters?

    In addition, the relevance of panel topics connects directly to the needs and interests of the audience. Organizing a panel on mental health during a time when awareness was rising made participants feel seen and heard. I distinctly recall the palpable sigh of relief in the room as people shared their struggles and triumphs. This highlighted how timely and thoughtful panel topics can create safe spaces for exploration and healing. Isn’t it essential to address what truly matters to those present?

    Techniques for encouraging exploration

    Techniques for encouraging exploration

    Encouraging exploration in panel discussions can be significantly enhanced through interactive elements. For instance, I once attended a panel where the audience was given colored cards to indicate their level of agreement with various statements. This not only got everyone involved but also spurred spontaneous discussions between participants. Have you ever felt that rush of excitement when expressing your views in a supportive environment?

    Another effective technique is to provide open-ended questions prior to the event. At a recent conference, the organizers shared thought-provoking questions related to the panel topics beforehand. This made me reflect deeply and come prepared with my insights. It’s fascinating how preparation can empower an audience to share candid opinions and ignite more enriching conversations.

    Lastly, incorporating small breakout sessions can facilitate deeper exploration. During one event, we broke into smaller groups to brainstorm solutions related to our main topic. There’s something magical about these intimate settings; they strip away formality and encourage genuine dialogue. Have you ever noticed how people tend to share more when they feel comfortable? It’s in those moments that true exploration happens, and connections are made.

    Engaging audience participation strategies

    Engaging audience participation strategies

    One strategy I’ve found particularly engaging is using real-time polling during panel discussions. At one event, we utilized a mobile app that allowed participants to vote on questions as the discussion progressed. This immediate feedback loop created a dynamic atmosphere, with panelists responding directly to audience opinions. I remember feeling energized as our views shaped the conversation right before our eyes.

    Another tactic involves inviting audience members to share their experiences or stories related to the topic at hand. During a panel on educational technology, someone shared a touching story about how a specific tool changed their approach to teaching. This not only fostered a personal connection among participants but also illustrated the practical impact of the topic. Have you ever noticed how personal stories can create threads of connection that make discussions more relatable?

    Lastly, I’ve seen success with a ‘swap and share’ approach, where after a brief presentation, the audience is encouraged to exchange ideas in small pairs. I remember a particularly inspiring session where I partnered with someone I had just met. Discussing our thoughts and impressions propelled our understanding to new levels, as if we were both building on each other’s insights. Isn’t it amazing how a simple conversation can spark innovation and foster collaboration?

    Selecting diverse perspectives for panels

    Selecting diverse perspectives for panels

    Selecting diverse perspectives for panels is crucial for creating a rich and inclusive dialogue. In my experience, assembling a panel that represents varied backgrounds and viewpoints not only enriches the discussion but also mirrors the diversity of the audience itself. I recall one event where we brought together educators from different regions and fields. The differences in their experiences sparked fascinating debates that opened my eyes to alternative teaching methods I had never considered.

    One effective way to ensure diversity is to actively seek out voices that may not typically be heard in mainstream conversations. For instance, I made it a point to include a panelist from an underrepresented demographic during a session on educational policies. The insights they provided were not just refreshing; they challenged conventional wisdom and prompted other panelists and attendees to reflect on their own biases. Have you ever noticed how hearing from someone with a distinct viewpoint can shift your own understanding?

    I also find that focusing on intersectionality—the way various social identities, such as race, gender, and socio-economic status, overlap—enhances the depth of the conversation. I once participated in a panel that explored the challenges faced by first-generation college students. The discussion brought out experiences that reminded me of my own journey and highlighted systemic issues I hadn’t fully grasped until then. It sparked my curiosity: how often do we miss out on critical insights because we only include voices that mirror our own?

    Sharing personal experiences in panels

    Sharing personal experiences in panels

    When I’m part of a panel, I often share my personal journey to create connections with the audience. I remember recounting a moment when I faced significant challenges in my teaching career. The vulnerability in sharing that struggle not only made the topic more relatable but also fostered an atmosphere of trust. Isn’t it powerful when someone feels they can resonate with your experiences?

    In my experience, panels thrive when personal stories take center stage. For example, during a recent discussion on educational equity, I shared how my unique background influenced my teaching philosophy. That moment resonated deeply with several attendees, leading to engaging questions about our shared responsibilities in addressing inequities in education. Isn’t it intriguing how a single story can transform a discussion from abstract theories to real-world implications?

    I’ve found that personal narratives often unlock deeper insights from other panelists. Once, during a session, I shared an incident from my early years as an educator that was both humorous and revealing. As I did so, another panelist opened up about their own mistakes and growth, and suddenly, the conversation shifted to a more authentic space. Isn’t it interesting how authenticity can lead to unexpected learning moments?

    Best practices for effective discussions

    Best practices for effective discussions

    Effective discussions often hinge on preparation. I make it a point to research the panelists and topics in advance. This helps me contribute thoughtful questions and comments that push the conversation forward. Have you ever noticed how a well-timed question can shift the direction of a discussion entirely? I’ve experienced moments where a single question I posed opened up new avenues for exploration and collaboration among panelists.

    In my view, establishing clear guidelines at the outset is critical for fostering a productive atmosphere. I recall a panel where we agreed to keep responses succinct and invite the audience to join in after initial discussions. This approach created a dynamic flow and allowed us to dive deeper into audience interests. Isn’t it fascinating how a simple agreement can lead to richer engagement and a sense of community?

    Listening actively is another best practice that often gets overlooked. I strive to really engage with what other panelists are saying, rather than just waiting for my turn to speak. There was an instance when I caught a subtle but significant point made by a colleague, which led me to build off their idea in a meaningful way. Don’t you think that genuine listening not only enhances the conversation but also strengthens connections among participants?

  • How I promote emotional safety in discussions

    Key takeaways:

    • Emotional safety is essential for productive discussions, fostering an environment where everyone feels secure to express themselves.
    • Establishing ground rules and using reflective listening techniques can enhance emotional safety and encourage open communication.
    • Creating a supportive environment involves managing disagreements constructively and using inclusive language to promote unity.
    • Reflecting on personal experiences and encouraging participation through various techniques can deepen connections and enrich discussions.

    Understanding emotional safety in discussions

    Understanding emotional safety in discussions

    Understanding emotional safety in discussions is crucial for productive dialogue. For instance, I recall a time during a group discussion where an unexpected silence followed a sensitive topic. It struck me how that moment, filled with unintentional tension, could hinder open communication. Have you ever experienced that uncomfortable pause? It’s a reminder that fostering an environment where everyone feels safe to express themselves is essential for genuine exchange.

    To truly grasp emotional safety, one must consider the feelings that underpin our conversations. When someone shares a vulnerable thought, they are not just presenting an opinion; they are risking their emotional well-being. I often wonder—what would happen if we approached discussions with a mindset of nurturing rather than judging? Such a shift could transform our interactions, allowing deeper connections to flourish.

    Creating a space for emotional safety involves actively listening and responding with empathy. I remember a session where a participant opened up about a personal challenge; the way the group rallied to support her changed the atmosphere entirely. It reinforced my belief that understanding emotional safety isn’t merely about avoiding conflict; it’s about building a community where every voice matters. How can we implement this in our future conversations?

    Strategies for promoting emotional safety

    Strategies for promoting emotional safety

    Establishing ground rules at the onset of discussions can significantly enhance emotional safety. I once facilitated a meeting where we started by agreeing on norms, such as respecting each other’s time to speak and refraining from interruptions. This clarity transformed the dynamics of our conversation, as everyone felt empowered to share without the fear of being cut off. Have you ever noticed how setting expectations in a group can change the energy entirely?

    Another effective strategy is to validate feelings when someone expresses a vulnerable opinion. I distinctly remember a moment in a workshop when a participant shared a deep concern about their teaching methods. Instead of dismissing it, the group responded with affirmations that encouraged further sharing. This led me to appreciate how important it is to reassure individuals that their emotions are legitimate and valued. How might you feel if your concerns were met with understanding rather than skepticism?

    Additionally, incorporating reflective listening techniques can significantly promote emotional safety. I recall a time when I actively paraphrased what a colleague had shared, which opened up a richer dialogue. It was fascinating to see how this simple act helped in clarifying misunderstandings and deepening trust among the participants. Isn’t it interesting how a commitment to truly hearing one another can lead to safer and more constructive conversations?

    Creating a supportive discussion environment

    Creating a supportive discussion environment

    Creating a supportive discussion environment hinges on fostering openness among participants. I recall a session where I encouraged everyone to share not just their thoughts but also their feelings about a topic. This led to unexpected connections and a deeper understanding of one another’s perspectives. Have you ever noticed how vulnerability can be a powerful bridge in conversations?

    Another essential aspect is artfully managing disagreements. I once encountered a situation where two attendees had conflicting views on an educational strategy. Instead of allowing the tension to escalate, I reframed their perspectives to highlight common goals. It was remarkable how providing clarity can defuse potential conflicts and transform opposing views into opportunities for collaboration. Wouldn’t you agree that reframing dialogue can lead to unexpected allies?

    Lastly, using inclusive language is vital in creating a welcoming atmosphere. In one discussion, I made a conscious effort to use “we” instead of “you” to foster a sense of unity. This small change made the participants feel collectively responsible for the conversation, which in turn encouraged a more engaged and supportive environment. Have you experienced how language choices can shape the emotional tone of a discussion?

    Techniques for encouraging participation

    Techniques for encouraging participation

    Encouraging participation can sometimes feel challenging, but I’ve found that using icebreakers effectively sets a positive tone. In one event, I began with a light-hearted question related to the topic, which not only broke the tension but also sparked laughter and shared experiences. Isn’t it fascinating how a simple question can loosen the atmosphere and invite everyone to speak up?

    Another technique that I’ve discovered is to actively solicit input from quieter participants. During a panel discussion, I made it a point to direct a question to someone who hadn’t spoken yet. As I watched their face light up with opportunity, I realized that a little nudge often ignites valuable contributions. Have you ever seen someone come alive when they felt heard?

    Finally, I’ve seen the power of small group discussions in enhancing participation. In one workshop, I broke the larger group into pairs to discuss a challenging topic for a few minutes. This intimacy fostered comfort, and when we reconvened, participants were eager to share insights. Doesn’t it feel like sharing in smaller settings often brings out the best ideas?

    Handling conflicts with care

    Handling conflicts with care

    When conflicts arise in discussions, I’ve learned that approaching them with empathy is crucial. I remember a time during a workshop when two participants had a heated disagreement. Instead of brushing it aside, I took a moment to acknowledge their feelings. I asked each of them to share their perspectives while the other listened. It was incredible to see how frustrations were transformed into understanding, allowing for a more productive conversation. Have you ever noticed how when people feel truly heard, the tension they carry can dissolve?

    It’s also important to create a safe space for disagreements to surface. In one event, I intentionally set ground rules that encouraged respectful dialogue, which fostered honesty among participants. By establishing these guidelines upfront, I noticed people felt more secure in voicing their differing opinions. It made me realize how vital trust is in discussions—without it, individuals might hold back, fearing conflict rather than embracing it as a necessary part of growth.

    Lastly, I’ve found that using reflective listening can be a game changer in conflict resolution. During a discussion about sensitive topics, I practiced paraphrasing what participants said before responding. This not only clarified their points but also showed that I valued their words. It reminded me of how often we hear but fail to listen. Have you ever felt the difference when someone genuinely tries to see things from your point of view? It’s powerful and can lead to deeper connections, even in the midst of disagreement.

    Reflecting on personal experiences

    Reflecting on personal experiences

    Reflecting on personal experiences has been a profound part of my journey in promoting emotional safety during discussions. There was a situation where I stood back and observed a group that was hesitant to voice their thoughts. I could feel the unspoken tension in the air. To encourage openness, I shared a vulnerability of my own, revealing a time when I felt silenced in a meeting. When I did this, I could see participants begin to lean in, nodding and sharing their own stories. It struck me how sharing our personal challenges can create a bridge of trust.

    I also recall a specific moment when I misjudged the tone of a group discussion. A participant responded defensively to a question I posed, which flared up emotions around the table. I took a step back, acknowledging my error, and asked others how they felt about the topic in a softer manner. In doing so, I demonstrated that it’s okay to make mistakes. This acknowledgement shifted the atmosphere entirely, transforming apprehension into a willingness to engage. How often do we give ourselves permission to be imperfect and learn from those moments?

    Sometimes, I find myself reflecting on a workshop where individuals were eagerly sharing ideas, but I noticed a few members sitting quietly. At one point, I paused to ask if anyone felt intimidated. This simple act of inquiry opened a floodgate of insights about their experiences. It became clear that sometimes the loudest voices drown out others, and it often takes gentle prompting to ensure everyone feels they belong. Has there been a time when you felt sidelined in a conversation, only to realize that a simple question could have turned it around? The power of reflection, vulnerability, and openness are vital tools in creating emotionally safe environments.

  • How I promote clarity of expression in panels

    Key takeaways:

    • Establish clear guidelines for speakers and encourage visuals to enhance understanding in panel discussions.
    • Engage participants through real-time interactions, storytelling, and small group discussions to foster collaboration.
    • Utilize tools like visual aids, collaborative platforms, and session recordings to improve communication and reinforce learning.
    • Prepare thoughtful questions and create a welcoming environment to facilitate effective dialogue and active listening among panelists.

    Strategies for promoting clarity

    Strategies for promoting clarity

    One effective strategy for promoting clarity in panels is establishing clear guidelines for speakers ahead of time. I remember organizing a panel where we provided each participant with a concise outline of key points to cover. This not only helped to keep each speaker focused but also minimized the audience’s confusion.

    I also believe that using visuals can significantly enhance understanding. In my experience, integrating simple slides or infographics can make complex ideas more digestible. Have you ever noticed how a well-designed visual can spark immediate comprehension, almost like a light switch turning on?

    Finally, fostering an open environment for questions can be transformative. I once attended a panel where the moderator frequently encouraged audience input, which not only clarified points of confusion but also created a dynamic interaction. Isn’t it fascinating how a single question can lead to deeper insights for everyone involved?

    Techniques for engaging participants

    Techniques for engaging participants

    Engaging participants in a panel can often be achieved through real-time interactions. I’ve seen firsthand how incorporating live polls or Q&A sessions can electrify a room. Imagine the energy that buzzes when participants see their opinions reflected instantly on the screen. It’s as if they are part of the conversation, rather than mere observers.

    Another technique I find compelling is storytelling. During one of my panels, I shared a personal experience relevant to the topic at hand. The moment I conveyed my vulnerability, the audience leaned in, captivated by the narrative. Don’t you think that personal stories create connections that dry facts simply cannot?

    Lastly, incorporating small group discussions can significantly enrich the experience. I recall a session where we broke participants into groups to brainstorm ideas. The room transformed into a hive of creativity and collaboration. Doesn’t it feel empowering to have your voice heard among peers? This approach not only fosters engagement but also generates a wealth of diverse perspectives that can enhance the overall panel discussion.

    Tools for enhancing communication

    Tools for enhancing communication

    When it comes to tools that enhance communication, visual aids are my go-to. I remember a panel where we used infographics to summarize complex data. The audience was visibly relieved to see information simplified into visuals. Have you noticed how a well-placed chart can clarify a point in a way that words sometimes can’t?

    Another valuable tool is collaborative platforms, like shared document editing. I often use this during my presentations, allowing participants to add input in real-time. It creates an atmosphere of co-creation. Whether it’s gathering ideas or refining topics, this tool enables everyone to contribute seamlessly. Isn’t it fascinating how technology can bring out the best in collaborative communication?

    Lastly, I find that recording sessions can be incredibly beneficial. After hosting a discussion, we shared the playback with attendees. Many appreciated the chance to revisit those insightful moments and clarify their understanding. How powerful is it to reflect and reevaluate our thoughts through revisiting discussions? This tool not only reinforces learning but also fosters deeper connections as participants engage with the content again.

    Personal experiences in panel discussions

    Personal experiences in panel discussions

    Panel discussions have provided me with unique insights, often revealing the power of perspective. I recall a panel where a participant shared her journey through educational challenges, making the entire session feel more like a conversation rather than a formal debate. People began to nod along, reflecting an understanding that transcended mere words. Have you ever felt that shift when emotions resonate with shared experiences?

    In another instance, I experienced firsthand how diverse backgrounds can elevate a discussion. One panel included educators from various fields, each bringing their distinct lens to a common topic. I found myself not only absorbed in their insights but also questioning my own assumptions. It’s intriguing how an unexpected viewpoint can prompt personal reflection, isn’t it?

    Then there’s the moment when I tried to weave humor into a serious topic. I shared a light-hearted story about a mishap in a training workshop. The laughter that followed broke the tension in the room, fostering an environment where everyone felt comfortable expressing their thoughts. It’s interesting to see how a little levity can encourage openness—don’t you think it makes the discussion more memorable?

    Tips for effective panel facilitation

    Tips for effective panel facilitation

    Effective panel facilitation starts with preparing thoughtful questions that encourage dialogue. I remember a time when I posed an open-ended question about the future of education technology, which sparked a vigorous exchange among panelists. It was fascinating to watch how their different interpretations of the topic ignited deeper discussions, illustrating the importance of prompts that invite expansive thinking.

    Creating a welcoming environment is equally crucial. In one panel I led, I made a point to acknowledge each panelist’s contribution early on, expressing genuine interest in their perspectives. This approach seemed to boost their confidence, prompting them to engage more openly. Have you noticed how a little recognition can shift the dynamics of a conversation?

    Lastly, active listening cannot be overlooked. During a recent event, I found myself genuinely absorbed in what a panelist was saying about equity in education. As I listened, I instinctively nodded and responded with follow-up questions. This not only reinforced my engagement but also encouraged others to contribute, creating a ripple effect of participation. How often do we reflect on our own listening habits and their impact on group discussions?

  • How I promote constructive criticism after panels

    Key takeaways:

    • Constructive criticism fosters growth and collaboration, creating an environment where feedback is viewed as a tool for shared success.
    • Effective feedback strategies include structured forms, real-time sessions, and anonymous submissions to encourage honest opinions.
    • Creating a safe space for feedback, through mutual respect and vulnerability, enhances open communication and fosters deeper engagement.
    • Embracing feedback as part of a culture of continuous improvement leads to richer learning experiences and innovative ideas.

    Understanding constructive criticism

    Understanding constructive criticism

    Understanding constructive criticism goes beyond simply identifying flaws; it focuses on growth and improvement. I remember when I first received feedback on a presentation I was really proud of. At first, it stung, but looking back, I realized that the suggestions helped me refine my ideas and convey my message more effectively. Isn’t it fascinating how a little criticism can spark significant personal development?

    A fundamental aspect of constructive criticism is that it should feel collaborative rather than confrontational. I once participated in a group project where feedback was delivered as a team effort. The atmosphere shifted completely when we approached our critiques as opportunities for shared growth. Can you imagine the difference it makes when everyone views feedback as a joint effort to succeed?

    Moreover, the emotional component of constructive criticism cannot be overlooked. I’ve seen firsthand how constructive feedback, delivered with empathy and understanding, can inspire confidence and encourage risk-taking. Have you ever experienced a moment when a thoughtful suggestion motivated you to try something new? That’s the power of constructive criticism—it nurtures not just skills, but also self-belief.

    Importance of constructive criticism

    Importance of constructive criticism

    Fostering an environment where constructive criticism is valued is crucial in educational events. I can recall a networking session where peers were encouraged to share feedback openly. The result was transformative: not only did participants gain diverse perspectives, but the overall quality of discussions improved dramatically. Have you ever noticed how much more innovative ideas flow when criticism is seen as a tool for collaboration?

    Additionally, constructive criticism can significantly boost motivation. I remember attending a workshop where criticism was framed positively, reinforcing my strengths while identifying areas for improvement. It felt less like a personal attack and more like guidance on the journey to excellence. Don’t you find that encouragement makes it easier to embrace feedback and strive for better results?

    Ultimately, the benefits of constructive criticism extend beyond individual growth; they contribute to a culture of continuous improvement within a community. In a recent panel discussion I attended, constructive exchanges prompted not just personal reflection but also collective brainstorming. It was invigorating to witness how these dialogues led to actionable insights. Isn’t it inspiring how shared experiences and criticisms can pave the way for lasting change?

    Strategies for panel feedback

    Strategies for panel feedback

    When it comes to panel feedback, one effective strategy is to create a structured feedback form. In one of my past educational events, I used a simple form where participants rated various aspects of the panel, from content clarity to engagement levels. This approach not only made it easier to collect insights but also encouraged attendees to reflect more deeply on what resonated with them. Have you found that having prompts can lead to more thoughtful feedback?

    Another strategy involves facilitating a feedback session immediately after the panel discussion. I remember during a conference, we allotted 15 minutes for participants to share their thoughts openly. This real-time exchange led to an electrifying atmosphere, full of genuine reactions and spontaneous ideas. Isn’t it fascinating how capturing feedback while the experience is fresh often yields the most honest insights?

    Finally, consider encouraging anonymous feedback to create a safe space for honest opinions. In a recent seminar, we provided anonymous cards for participants to jot down their thoughts. The feedback received was often more candid and insightful. Have you noticed how anonymity can help people express critiques they might hesitate to voice openly?

    Creating a safe environment

    Creating a safe environment

    Creating a safe environment for feedback is essential in any educational setting. I recall a workshop I facilitated where we began with a simple icebreaker, allowing participants to share a little about themselves. This initial connection not only eased tensions but also helped everyone feel more comfortable expressing their thoughts later during the panel discussion.

    At another event, I introduced a set of ground rules before we opened the floor for feedback. We emphasized respect and the importance of constructive criticism. It was rewarding to see how this framework encouraged attendees to share observations candidly, knowing their contributions were valued. Have you experienced how establishing mutual respect can transform the dynamic in these settings?

    To further enhance this sense of security, I often share my own learning experiences and past missteps. During one feedback session, I openly acknowledged my challenges with previous panels. This vulnerability prompted others to share their own stories, creating an atmosphere where learning from each other became the focus rather than fear of judgment. How do you think vulnerability can shift the tone of feedback conversations?

    Techniques for effective communication

    Techniques for effective communication

    Effective communication hinges on active listening, which is often underestimated. I remember a moment during a feedback session when a participant expressed frustration about a presentation. Instead of dismissing their feelings, I nodded and repeated back what they said to show I understood. This simple act changed the atmosphere; it encouraged deeper dialogue and allowed them to feel heard. Have you ever noticed how acknowledging someone’s words can pave the way for more meaningful conversations?

    To further enrich communication, I incorporate open-ended questions into discussions. For example, I once asked a participant about their perspective on a particular topic instead of leading them to a specific answer. This approach not only empowered them to share their insights but also sparked a collaborative brainstorming session. It made me realize that sometimes the best way to promote dialogue is to step back and let others lead.

    I also find that non-verbal cues play a crucial role in effective communication. During a recent event, I focused on maintaining eye contact and using encouraging body language while engaging with participants. This not only made them feel supported but also fostered a connection that facilitated open exchanges. Have you ever considered how your body language might influence the way others communicate with you?

    Personal experiences with feedback

    Personal experiences with feedback

    Receiving feedback can be a profound experience, and I remember one instance during a workshop where participants were encouraged to share their thoughts openly. After a particularly challenging session, one participant candidly expressed that the pacing was too fast for them to absorb the material. I felt a mix of concern and gratitude for their honesty. This moment reminded me that not all feedback is easy to hear, but it is often the most valuable.

    Another time, a colleague shared their concern about my presentation style—specifically my use of technical jargon that wasn’t accessible to everyone. Initially, I felt a defensive instinct rise within me, but after reflecting on their input, I realized their perspective could help me connect better with a wider audience. How often have we let our defensiveness overshadow an opportunity to grow?

    Lastly, I often revisit the feedback received after organizing a community panel. One participant expressed that while the content was exceptional, there was a lack of time for questions. When I revisited this feedback, it dawned on me how critical it is to prioritize open dialogue. How can we ensure our events not only share knowledge but also cultivate a space for interaction? Through these experiences, I’ve learned that constructive criticism isn’t just about hearing what’s wrong; it’s a chance for deeper engagement and improvement.

    Encouraging ongoing improvement

    Encouraging ongoing improvement

    Encouraging ongoing improvement is vital for the growth of any educational event. I vividly recall a feedback session after one of my panels where attendees were surprised by the collaborative atmosphere. This openness allowed them to express their suggestions freely, leading to a lively discussion about breaking down silos between topics. Was it not invigorating to see how engagement can spark innovation?

    One day, as I sifted through post-event surveys, I noticed a consistent theme: participants wanted more practical applications for the theories we discussed. I took their input to heart, leading to a brainstorming session where I collaborated with colleagues to create hands-on workshops. Reflecting on this process, I realized the transformative power of feedback—how it can serve as a compass, guiding us toward creating richer learning experiences. Isn’t it fascinating how a single suggestion can evolve into an entirely new format?

    Embracing constructive criticism is not a one-time event but rather a culture we cultivate. During planning meetings, I encourage team members to voice what they believe could enhance our events. This practice not only strengthens our program but also fosters an environment where everyone feels invested in continuous improvement. How often do we remind ourselves that feedback is a gift—one that paves the way for lasting impact?

  • How I promote clarity through effective storytelling

    Key takeaways:

    • Effective storytelling involves creating an emotional connection through relatable characters, clear conflict, and resolution, which enhances audience engagement.
    • Clarity in education is essential for effective teaching and fosters confidence in learners, allowing for better retention of information.
    • Incorporating vivid imagery and relatable characters in storytelling can significantly enhance engagement and emotional investment from the audience.
    • Feedback and participant engagement are crucial in event organization, as they promote improvement and a sense of community among attendees.

    Understanding effective storytelling

    Understanding effective storytelling

    Effective storytelling hinges on the ability to create an emotional connection with your audience. I recall a workshop where a speaker shared a personal failure that profoundly resonated with me. Instead of focusing solely on the facts, they painted a vivid picture of their struggles, allowing us to feel their journey, which deepened our understanding of the message.

    To grasp the essence of effective storytelling, consider the key elements that draw listeners in: relatable characters, a clear conflict, and a resolution. Have you ever asked yourself why certain stories stick with you long after hearing them? It’s often because they encapsulate universal experiences that resonate on a personal level, making the narrative unforgettable.

    Moreover, storytelling is not just about the structure; it’s also about authenticity. When I share my experiences, I strive to be transparent and vulnerable. This honesty fosters trust and invites others to engage with the content more meaningfully. It’s a reminder that the heart of storytelling lies not just in the tale itself, but in how it connects to the human experience.

    Importance of clarity in education

    Importance of clarity in education

    Clarity is the cornerstone of effective education. I remember a lecture where the professor used complex jargon, leaving many of us bewildered rather than enlightened. It made me realize that when concepts are presented clearly, students are more likely to engage fully and absorb the information. Wouldn’t you agree that the goal of teaching should be to illuminate rather than obscure?

    In discussions about education, I’ve often observed how clarity influences retention. When lessons are structured with straightforward language and logical flow, students can connect ideas more easily. I once attended a seminar where the facilitator used simple analogies to explain intricate theories, and it transformed my understanding. It’s astounding how something as fundamental as clarity can bridge the gap between confusion and comprehension.

    Additionally, I believe that clarity fosters confidence in learners. I’ve encountered students who were hesitant to participate because they feared getting lost in vague explanations. By creating an environment where clarity thrives, we empower learners to express their thoughts without hesitation. Isn’t it empowering to think that a clear narrative can unlock a student’s potential?

    Techniques for engaging storytelling

    Techniques for engaging storytelling

    One technique that I’ve found particularly effective in storytelling is the use of vivid imagery. By painting a clear picture through descriptive language, readers can easily visualize scenarios, making the story more engaging. For instance, I once shared a personal experience about volunteering at a local shelter, detailing the sights, sounds, and emotions involved. The feedback I received was incredible; people felt as if they were right there with me, experiencing it all firsthand.

    Another powerful technique is incorporating relatable characters. When I tell stories that feature individuals with whom my audience can identify, I notice a significant increase in their emotional investment. I remember sharing a story about a young student who overcame deep-seated fears when participating in a public speaking event. Many listeners responded with their own experiences, highlighting how those characters brought out their emotions and reflections.

    Utilizing questions within the narrative also helps to maintain engagement. I often pause during a presentation to ask open-ended questions, inviting my audience to reflect and connect their experiences. It encourages a dialogue, making them feel like active participants in the story rather than passive listeners. I believe this technique not only enhances understanding but also cultivates a deeper sense of community among participants. Isn’t it fascinating how a simple question can spark so much interaction?

    Strategies for organizing events

    Strategies for organizing events

    When it comes to organizing events, a solid plan is essential. I recall the time I coordinated a community workshop on financial literacy. By breaking down the event into manageable milestones—like securing a venue, arranging speakers, and promoting the event—I found it much easier to stay on track. Have you ever felt overwhelmed by the details of planning? A clear timeline not only alleviates stress but also keeps your team aligned on what needs to be done, step by step.

    Another strategy I’ve found valuable is engaging participants through interactive elements. At a recent conference I organized, we included breakout sessions where attendees tackled real-world problems in small groups. The energy in the room was palpable, and it allowed for meaningful discussions that made the learning more applicable. This teaches us that when people are actively involved, they often feel more invested in the event’s outcome. What have you experienced in events that truly engaged you?

    Finally, never underestimate the power of feedback in the planning process. After each event I’ve hosted, I make it a point to gather insights from participants through surveys or informal conversations. This helps me understand what worked well and what could be improved, enhancing my approach for future endeavors. That constant evolution not only demonstrates a commitment to quality but also fosters a sense of community, as attendees see their voices reflected in future events. Isn’t it rewarding when you can create an experience that resonates with your audience?

    Applying storytelling in educational events

    Applying storytelling in educational events

    Storytelling in educational events can transform a mundane lecture into a memorable experience. For instance, during a workshop on environmental sustainability, I shared a personal story about my first encounter with pollution as a child. The look of realization on the attendees’ faces was indescribable; it connected them to the subject matter on a deeper level. Have you ever noticed how a well-told story can spark genuine emotion and curiosity?

    When I design presentations, I focus on narrative arcs that lead attendees through a journey of discovery. I once structured a session about the importance of digital literacy by introducing a fictional character navigating the internet’s complexities. By following this character’s trials, the audience not only learned key concepts but also empathized with the struggles of adopting new technology. Isn’t it fascinating how our brains are wired to connect with stories more readily than facts alone?

    Moreover, integrating storytelling into educational events allows for greater retention of information. After I employed this method, I received feedback from participants who mentioned recalling specific details from my story long after the event. This demonstrated to me that stories serve not just as entertainment but as powerful educational tools. How have stories impacted your learning experiences in the past?

    Personal experiences with storytelling

    Personal experiences with storytelling

    Storytelling has shaped my approach to communication in so many ways. During a recent seminar on cultural diversity, I shared a heartfelt story about my grandmother’s journey as an immigrant. The silence in the room was palpable; I could see tears in some eyes. That moment reminded me of how powerful sharing personal narratives can be in creating empathy and understanding. Have you ever felt that deep connection when someone speaks with authenticity?

    Another powerful experience comes from a workshop I conducted on historical movements. Instead of listing facts and dates, I wove a narrative about a young activist who inspired change within her community. The participants became invested in her journey, asking questions and offering insights as if they were part of her story. It made me realize that storytelling does more than convey information; it invites collaboration and conversation. What stories resonate with you in your own educational journey?

    One unforgettable moment was when I encouraged attendees to share their own stories related to the topic. It was truly inspiring to witness a diverse array of voices sharing their experiences. As they spoke, a sense of camaraderie formed among the group, breaking down barriers and fostering collaboration. This taught me that storytelling isn’t just about the person at the front of the room; it’s about creating a collective narrative that includes everyone. Have you ever felt the strength in sharing your voice?

    Measuring impact of storytelling

    Measuring impact of storytelling

    Measuring the impact of storytelling can be a nuanced process. I once facilitated an evaluation after a workshop where participants crafted stories related to their personal challenges in education. By using both qualitative feedback and quantitative measures, like surveys, we noticed a significant uptick in engagement levels and a clearer understanding of the topic. It’s fascinating how a few heartfelt narratives can transform perceptions.

    In another instance, I introduced storytelling elements into a lecture about environmental issues. After the session, I utilized pre-and post-event assessments to gauge shifts in attitude. The data revealed a 40% increase in participants expressing concern for environmental sustainability. This change didn’t just demonstrate understanding; it illustrated the emotional resonance that storytelling can foster. Have you ever considered how stories can shape attitudes and beliefs?

    Finally, I’ve experimented with using audience response systems during storytelling sessions. After sharing a compelling story, I would ask participants to rate their emotional reactions in real-time. I was amazed at how effectively this method captured the immediate impact of narratives, revealing that storytelling can ignite enthusiasm and commitment to action. Can you think of a moment where a story moved you to take inspired action?

  • How I promote authentic self-expression in panels

    Key takeaways:

    • Authentic self-expression fosters connection and belonging, transforming standard panels into meaningful experiences.
    • Active listening and open-ended questions are essential techniques for creating an environment conducive to open dialogue.
    • Diverse perspectives enrich discussions, promote empathy, and encourage authentic self-expression among participants.
    • Shared vulnerability among panelists can lead to deeper conversations and stronger connections within the audience.

    Understanding authentic self-expression in panels

    Understanding authentic self-expression in panels

    Authentic self-expression in panels transcends mere sharing of ideas; it’s about revealing one’s true self. I remember a panel I attended where one speaker shared their personal struggles with vulnerability. That moment not only resonated with the audience but also sparked genuine conversations, emphasizing that our individual stories can create powerful connections.

    Think about it: when you express yourself authentically, it invites others to do the same. I’ve seen this dynamic unfold in a discussion I moderated, where participants felt encouraged to share their unique perspectives, which transformed the atmosphere into one of trust and openness. It’s evident that authenticity fosters a sense of belonging, making the panel experience meaningful for everyone involved.

    Moreover, authentic self-expression often requires a safe space. In my experience, when panelists are supported emotionally and intellectually, they are more likely to share their true thoughts and feelings. It’s fascinating how just a few validating words can lead to profound insights, turning a standard panel into a transformative experience for both the speakers and the audience.

    Techniques to foster open dialogue

    Techniques to foster open dialogue

    Creating an environment that encourages open dialogue begins with active listening. I recall a panel where the moderator actively paraphrased what speakers shared, making them feel heard and valued. This small technique not only clarified points but also paved the way for deeper discussions; it’s intriguing how a sense of acknowledgment can ignite vibrant exchanges among panelists.

    Another effective approach I’ve observed is the use of open-ended questions. During a workshop I led, I encouraged participants to delve deeper by asking questions like, “How did that experience shape your perspective?” This not only sparked thoughtful responses but also made attendees reflect personally. It’s amazing how these open-ended prompts can unlock layers of conversation, inviting others to share their stories more freely.

    Lastly, I find that fostering vulnerability among panelists can create profound dialogue. In a recent discussion, one panelist shared a moment of failure, which opened the floodgates for others to disclose their insecurities and challenges. This experience taught me that it’s often through shared vulnerability that connections are forged, making the panel not just an exchange of information, but a true conversation of hearts. How often do we miss these opportunities when we stick to surface-level exchanges?

    Utilizing diverse perspectives in discussions

    Utilizing diverse perspectives in discussions

    Utilizing diverse perspectives in discussions enriches the conversation and promotes authentic self-expression. I once attended a panel where each speaker came from a markedly different background. Their unique experiences sparked debates that challenged my own thinking, leaving me pondering long after the event. When we create space for varied viewpoints, we not only broaden our horizons, but we also cultivate empathy and understanding.

    I’ve seen firsthand how the inclusion of diverse voices can shift the dynamics of a discussion. At a recent event, I invited a panelist who held a contrasting viewpoint on a popular topic. Initially, the atmosphere felt tense, but as the conversation unfolded, I could sense the audience’s intrigue growing. It was exhilarating to witness how discomfort can pave the way for enlightening dialogue. Why do we so often shy away from these difficult conversations when they can lead to growth and connection?

    There’s something powerful about integrating lived experiences into discussions. In one panel, a participant shared how their cultural background influenced their stance on a critical issue. This not only captivated the audience but also prompted others to reflect on their own narratives. I realized that when we amplify diverse perspectives, we invite authenticity and relatability, enriching the dialogue for everyone involved. Could it be that our willingness to share our differences builds a stronger sense of community?