Changeset 3210022 for performance-lab
- Timestamp:
- 12/18/2024 06:22:38 PM (15 months ago)
- Location:
- performance-lab
- Files:
-
- 2 added
- 8 edited
- 1 copied
-
tags/3.7.0 (copied) (copied from performance-lab/trunk)
-
tags/3.7.0/includes/admin/load.php (modified) (2 diffs)
-
tags/3.7.0/includes/admin/plugin-activate-ajax.min.js (added)
-
tags/3.7.0/includes/admin/plugins.php (modified) (7 diffs)
-
tags/3.7.0/load.php (modified) (2 diffs)
-
tags/3.7.0/readme.txt (modified) (2 diffs)
-
trunk/includes/admin/load.php (modified) (2 diffs)
-
trunk/includes/admin/plugin-activate-ajax.min.js (added)
-
trunk/includes/admin/plugins.php (modified) (7 diffs)
-
trunk/load.php (modified) (2 diffs)
-
trunk/readme.txt (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
performance-lab/tags/3.7.0/includes/admin/load.php
r3191547 r3210022 215 215 216 216 /** 217 * Gets the path to a script or stylesheet. 218 * 219 * @since 3.7.0 220 * 221 * @param string $src_path Source path. 222 * @param string|null $min_path Minified path. If not supplied, then '.min' is injected before the file extension in the source path. 223 * @return string URL to script or stylesheet. 224 */ 225 function perflab_get_asset_path( string $src_path, ?string $min_path = null ): string { 226 if ( null === $min_path ) { 227 // Note: wp_scripts_get_suffix() is not used here because we need access to both the source and minified paths. 228 $min_path = (string) preg_replace( '/(?=\.\w+$)/', '.min', $src_path ); 229 } 230 231 $force_src = false; 232 if ( WP_DEBUG && ! file_exists( trailingslashit( PERFLAB_PLUGIN_DIR_PATH ) . $min_path ) ) { 233 $force_src = true; 234 wp_trigger_error( 235 __FUNCTION__, 236 sprintf( 237 /* translators: %s is the minified asset path */ 238 __( 'Minified asset has not been built: %s', 'performance-lab' ), 239 $min_path 240 ), 241 E_USER_WARNING 242 ); 243 } 244 245 if ( SCRIPT_DEBUG || $force_src ) { 246 return $src_path; 247 } 248 249 return $min_path; 250 } 251 252 /** 217 253 * Callback function to handle admin scripts. 218 254 * … … 229 265 wp_enqueue_script( 230 266 'perflab-plugin-activate-ajax', 231 plugin_dir_url( PERFLAB_MAIN_FILE ) . 'includes/admin/plugin-activate-ajax.js',267 plugin_dir_url( PERFLAB_MAIN_FILE ) . perflab_get_asset_path( 'includes/admin/plugin-activate-ajax.js' ), 232 268 array( 'wp-i18n', 'wp-a11y', 'wp-api-fetch' ), 233 269 PERFLAB_VERSION, -
performance-lab/tags/3.7.0/includes/admin/plugins.php
r3191547 r3210022 17 17 * 18 18 * @param string $plugin_slug The string identifier for the plugin in questions slug. 19 * @return array{name: string, slug: string, short_description: string, requires: string|false, requires_php: string|false, requires_plugins: string[], download_link: string,version: string}|WP_Error Array of plugin data or WP_Error if failed.19 * @return array{name: string, slug: string, short_description: string, requires: string|false, requires_php: string|false, requires_plugins: string[], version: string}|WP_Error Array of plugin data or WP_Error if failed. 20 20 */ 21 21 function perflab_query_plugin_info( string $plugin_slug ) { … … 23 23 $plugins = get_transient( $transient_key ); 24 24 25 if ( is_array( $plugins ) ) {26 // If the specific plugin_slug is not in the cache, return an error.27 if ( ! isset( $plugins[ $plugin_slug ] ) ) {25 if ( is_array( $plugins ) && isset( $plugins[ $plugin_slug ] ) ) { 26 if ( isset( $plugins[ $plugin_slug ]['error'] ) ) { 27 // Plugin was requested before but an error occurred for it. 28 28 return new WP_Error( 29 'plugin_not_found',30 __( 'Plugin not found in cached API response.', 'performance-lab' )29 $plugins[ $plugin_slug ]['error']['code'], 30 $plugins[ $plugin_slug ]['error']['message'] 31 31 ); 32 32 } … … 41 41 'requires_php', 42 42 'requires_plugins', 43 'download_link',44 43 'version', // Needed by install_plugin_install_status(). 45 44 ); … … 56 55 ); 57 56 57 $has_errors = false; 58 $plugins = array(); 59 58 60 if ( is_wp_error( $response ) ) { 61 $plugins[ $plugin_slug ] = array( 62 'error' => array( 63 'code' => 'api_error', 64 'message' => sprintf( 65 /* translators: %s: API error message */ 66 __( 'Failed to retrieve plugins data from WordPress.org API: %s', 'performance-lab' ), 67 $response->get_error_message() 68 ), 69 ), 70 ); 71 72 foreach ( perflab_get_standalone_plugins() as $standalone_plugin ) { 73 $plugins[ $standalone_plugin ] = $plugins[ $plugin_slug ]; 74 } 75 76 $has_errors = true; 77 } elseif ( ! is_object( $response ) || ! property_exists( $response, 'plugins' ) ) { 78 $plugins[ $plugin_slug ] = array( 79 'error' => array( 80 'code' => 'no_plugins', 81 'message' => __( 'No plugins found in the API response.', 'performance-lab' ), 82 ), 83 ); 84 85 foreach ( perflab_get_standalone_plugins() as $standalone_plugin ) { 86 $plugins[ $standalone_plugin ] = $plugins[ $plugin_slug ]; 87 } 88 89 $has_errors = true; 90 } else { 91 $plugin_queue = perflab_get_standalone_plugins(); 92 93 // Index the plugins from the API response by their slug for efficient lookup. 94 $all_performance_plugins = array_column( $response->plugins, null, 'slug' ); 95 96 // Start processing the plugins using a queue-based approach. 97 while ( count( $plugin_queue ) > 0 ) { // phpcs:ignore Squiz.PHP.DisallowSizeFunctionsInLoops.Found 98 $current_plugin_slug = array_shift( $plugin_queue ); 99 100 // Skip already-processed plugins. 101 if ( isset( $plugins[ $current_plugin_slug ] ) ) { 102 continue; 103 } 104 105 if ( ! isset( $all_performance_plugins[ $current_plugin_slug ] ) ) { 106 // Cache the fact that the plugin was not found. 107 $plugins[ $current_plugin_slug ] = array( 108 'error' => array( 109 'code' => 'plugin_not_found', 110 'message' => __( 'Plugin not found in API response.', 'performance-lab' ), 111 ), 112 ); 113 114 $has_errors = true; 115 } else { 116 $plugin_data = $all_performance_plugins[ $current_plugin_slug ]; 117 $plugins[ $current_plugin_slug ] = wp_array_slice_assoc( $plugin_data, $fields ); 118 119 // Enqueue the required plugins slug by adding it to the queue. 120 if ( isset( $plugin_data['requires_plugins'] ) && is_array( $plugin_data['requires_plugins'] ) ) { 121 $plugin_queue = array_merge( $plugin_queue, $plugin_data['requires_plugins'] ); 122 } 123 } 124 } 125 126 if ( ! isset( $plugins[ $plugin_slug ] ) ) { 127 // Cache the fact that the plugin was not found. 128 $plugins[ $plugin_slug ] = array( 129 'error' => array( 130 'code' => 'plugin_not_found', 131 'message' => __( 'The requested plugin is not part of Performance Lab plugins.', 'performance-lab' ), 132 ), 133 ); 134 135 $has_errors = true; 136 } 137 } 138 139 set_transient( $transient_key, $plugins, $has_errors ? MINUTE_IN_SECONDS : HOUR_IN_SECONDS ); 140 141 if ( isset( $plugins[ $plugin_slug ]['error'] ) ) { 59 142 return new WP_Error( 60 'api_error', 61 sprintf( 62 /* translators: %s: API error message */ 63 __( 'Failed to retrieve plugins data from WordPress.org API: %s', 'performance-lab' ), 64 $response->get_error_message() 65 ) 66 ); 67 } 68 69 // Check if the response contains plugins. 70 if ( ! ( is_object( $response ) && property_exists( $response, 'plugins' ) ) ) { 71 return new WP_Error( 'no_plugins', __( 'No plugins found in the API response.', 'performance-lab' ) ); 72 } 73 74 $plugins = array(); 75 $standalone_plugins = array_merge( 76 array_flip( perflab_get_standalone_plugins() ), 77 array( 'optimization-detective' => array() ) // TODO: Programmatically discover the plugin dependencies and add them here. See <https://github.com/WordPress/performance/issues/1616>. 78 ); 79 foreach ( $response->plugins as $plugin_data ) { 80 if ( ! isset( $standalone_plugins[ $plugin_data['slug'] ] ) ) { 81 continue; 82 } 83 $plugins[ $plugin_data['slug'] ] = wp_array_slice_assoc( $plugin_data, $fields ); 84 } 85 86 set_transient( $transient_key, $plugins, HOUR_IN_SECONDS ); 87 88 if ( ! isset( $plugins[ $plugin_slug ] ) ) { 89 return new WP_Error( 90 'plugin_not_found', 91 __( 'Plugin not found in API response.', 'performance-lab' ) 143 $plugins[ $plugin_slug ]['error']['code'], 144 $plugins[ $plugin_slug ]['error']['message'] 92 145 ); 93 146 } … … 96 149 * Validated (mostly) plugin data. 97 150 * 98 * @var array<string, array{name: string, slug: string, short_description: string, requires: string|false, requires_php: string|false, requires_plugins: string[], download_link: string,version: string}> $plugins151 * @var array<string, array{name: string, slug: string, short_description: string, requires: string|false, requires_php: string|false, requires_plugins: string[], version: string}> $plugins 99 152 */ 100 153 return $plugins[ $plugin_slug ]; … … 240 293 </div> 241 294 <?php 295 if ( current_user_can( 'activate_plugins' ) ) { 296 ?> 297 <p> 298 <?php 299 $plugins_url = add_query_arg( 300 array( 301 's' => 'WordPress Performance Team', 302 'plugin_status' => 'all', 303 ), 304 admin_url( 'plugins.php' ) 305 ); 306 echo wp_kses( 307 sprintf( 308 /* translators: %s is the URL to the plugins screen */ 309 __( 'Performance features are installed as plugins. To update features or remove them, <a href="%s">manage them on the plugins screen</a>.', 'performance-lab' ), 310 esc_url( $plugins_url ) 311 ), 312 array( 313 'a' => array( 'href' => true ), 314 ) 315 ); 316 ?> 317 </p> 318 <?php 319 } 242 320 } 243 321 … … 326 404 $processed_plugins[] = $plugin_slug; 327 405 328 $plugin_data = perflab_query_plugin_info( $plugin_slug ); 406 // Get the freshest data (including the most recent download_link) as opposed what is cached by perflab_query_plugin_info(). 407 $plugin_data = plugins_api( 408 'plugin_information', 409 array( 410 'slug' => $plugin_slug, 411 'fields' => array( 412 'download_link' => true, 413 'requires_plugins' => true, 414 'sections' => false, // Omit the bulk of the response which we don't need. 415 ), 416 ) 417 ); 418 329 419 if ( $plugin_data instanceof WP_Error ) { 330 420 return $plugin_data; 421 } 422 423 if ( is_object( $plugin_data ) ) { 424 $plugin_data = (array) $plugin_data; 331 425 } 332 426 -
performance-lab/tags/3.7.0/load.php
r3193397 r3210022 4 4 * Plugin URI: https://github.com/WordPress/performance 5 5 * Description: Performance plugin from the WordPress Performance Team, which is a collection of standalone performance features. 6 * Requires at least: 6. 56 * Requires at least: 6.6 7 7 * Requires PHP: 7.2 8 * Version: 3. 6.18 * Version: 3.7.0 9 9 * Author: WordPress Performance Team 10 10 * Author URI: https://make.wordpress.org/performance/ … … 20 20 } 21 21 22 define( 'PERFLAB_VERSION', '3. 6.1' );22 define( 'PERFLAB_VERSION', '3.7.0' ); 23 23 define( 'PERFLAB_MAIN_FILE', __FILE__ ); 24 24 define( 'PERFLAB_PLUGIN_DIR_PATH', plugin_dir_path( PERFLAB_MAIN_FILE ) ); -
performance-lab/tags/3.7.0/readme.txt
r3193397 r3210022 3 3 Contributors: wordpressdotorg 4 4 Tested up to: 6.7 5 Stable tag: 3. 6.15 Stable tag: 3.7.0 6 6 License: GPLv2 or later 7 7 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 71 71 72 72 == Changelog == 73 74 = 3.7.0 = 75 76 **Enhancements** 77 78 * Add guidance for managing Performance feature plugins. ([1734](https://github.com/WordPress/performance/pull/1734)) 79 * Automatically discover plugin dependencies when obtaining Performance feature plugins from WordPress.org. ([1680](https://github.com/WordPress/performance/pull/1680)) 80 * Disregard transient cache in `perflab_query_plugin_info()` when a plugin is absent. ([1694](https://github.com/WordPress/performance/pull/1694)) 81 * Minify script used for ajax activation of features; warn if absent and serve original file when SCRIPT_DEBUG is enabled. ([1658](https://github.com/WordPress/performance/pull/1658)) 82 83 **Bug Fixes** 84 85 * Fix latest plugin version not being downloaded consistently. ([1693](https://github.com/WordPress/performance/pull/1693)) 73 86 74 87 = 3.6.1 = -
performance-lab/trunk/includes/admin/load.php
r3191547 r3210022 215 215 216 216 /** 217 * Gets the path to a script or stylesheet. 218 * 219 * @since 3.7.0 220 * 221 * @param string $src_path Source path. 222 * @param string|null $min_path Minified path. If not supplied, then '.min' is injected before the file extension in the source path. 223 * @return string URL to script or stylesheet. 224 */ 225 function perflab_get_asset_path( string $src_path, ?string $min_path = null ): string { 226 if ( null === $min_path ) { 227 // Note: wp_scripts_get_suffix() is not used here because we need access to both the source and minified paths. 228 $min_path = (string) preg_replace( '/(?=\.\w+$)/', '.min', $src_path ); 229 } 230 231 $force_src = false; 232 if ( WP_DEBUG && ! file_exists( trailingslashit( PERFLAB_PLUGIN_DIR_PATH ) . $min_path ) ) { 233 $force_src = true; 234 wp_trigger_error( 235 __FUNCTION__, 236 sprintf( 237 /* translators: %s is the minified asset path */ 238 __( 'Minified asset has not been built: %s', 'performance-lab' ), 239 $min_path 240 ), 241 E_USER_WARNING 242 ); 243 } 244 245 if ( SCRIPT_DEBUG || $force_src ) { 246 return $src_path; 247 } 248 249 return $min_path; 250 } 251 252 /** 217 253 * Callback function to handle admin scripts. 218 254 * … … 229 265 wp_enqueue_script( 230 266 'perflab-plugin-activate-ajax', 231 plugin_dir_url( PERFLAB_MAIN_FILE ) . 'includes/admin/plugin-activate-ajax.js',267 plugin_dir_url( PERFLAB_MAIN_FILE ) . perflab_get_asset_path( 'includes/admin/plugin-activate-ajax.js' ), 232 268 array( 'wp-i18n', 'wp-a11y', 'wp-api-fetch' ), 233 269 PERFLAB_VERSION, -
performance-lab/trunk/includes/admin/plugins.php
r3191547 r3210022 17 17 * 18 18 * @param string $plugin_slug The string identifier for the plugin in questions slug. 19 * @return array{name: string, slug: string, short_description: string, requires: string|false, requires_php: string|false, requires_plugins: string[], download_link: string,version: string}|WP_Error Array of plugin data or WP_Error if failed.19 * @return array{name: string, slug: string, short_description: string, requires: string|false, requires_php: string|false, requires_plugins: string[], version: string}|WP_Error Array of plugin data or WP_Error if failed. 20 20 */ 21 21 function perflab_query_plugin_info( string $plugin_slug ) { … … 23 23 $plugins = get_transient( $transient_key ); 24 24 25 if ( is_array( $plugins ) ) {26 // If the specific plugin_slug is not in the cache, return an error.27 if ( ! isset( $plugins[ $plugin_slug ] ) ) {25 if ( is_array( $plugins ) && isset( $plugins[ $plugin_slug ] ) ) { 26 if ( isset( $plugins[ $plugin_slug ]['error'] ) ) { 27 // Plugin was requested before but an error occurred for it. 28 28 return new WP_Error( 29 'plugin_not_found',30 __( 'Plugin not found in cached API response.', 'performance-lab' )29 $plugins[ $plugin_slug ]['error']['code'], 30 $plugins[ $plugin_slug ]['error']['message'] 31 31 ); 32 32 } … … 41 41 'requires_php', 42 42 'requires_plugins', 43 'download_link',44 43 'version', // Needed by install_plugin_install_status(). 45 44 ); … … 56 55 ); 57 56 57 $has_errors = false; 58 $plugins = array(); 59 58 60 if ( is_wp_error( $response ) ) { 61 $plugins[ $plugin_slug ] = array( 62 'error' => array( 63 'code' => 'api_error', 64 'message' => sprintf( 65 /* translators: %s: API error message */ 66 __( 'Failed to retrieve plugins data from WordPress.org API: %s', 'performance-lab' ), 67 $response->get_error_message() 68 ), 69 ), 70 ); 71 72 foreach ( perflab_get_standalone_plugins() as $standalone_plugin ) { 73 $plugins[ $standalone_plugin ] = $plugins[ $plugin_slug ]; 74 } 75 76 $has_errors = true; 77 } elseif ( ! is_object( $response ) || ! property_exists( $response, 'plugins' ) ) { 78 $plugins[ $plugin_slug ] = array( 79 'error' => array( 80 'code' => 'no_plugins', 81 'message' => __( 'No plugins found in the API response.', 'performance-lab' ), 82 ), 83 ); 84 85 foreach ( perflab_get_standalone_plugins() as $standalone_plugin ) { 86 $plugins[ $standalone_plugin ] = $plugins[ $plugin_slug ]; 87 } 88 89 $has_errors = true; 90 } else { 91 $plugin_queue = perflab_get_standalone_plugins(); 92 93 // Index the plugins from the API response by their slug for efficient lookup. 94 $all_performance_plugins = array_column( $response->plugins, null, 'slug' ); 95 96 // Start processing the plugins using a queue-based approach. 97 while ( count( $plugin_queue ) > 0 ) { // phpcs:ignore Squiz.PHP.DisallowSizeFunctionsInLoops.Found 98 $current_plugin_slug = array_shift( $plugin_queue ); 99 100 // Skip already-processed plugins. 101 if ( isset( $plugins[ $current_plugin_slug ] ) ) { 102 continue; 103 } 104 105 if ( ! isset( $all_performance_plugins[ $current_plugin_slug ] ) ) { 106 // Cache the fact that the plugin was not found. 107 $plugins[ $current_plugin_slug ] = array( 108 'error' => array( 109 'code' => 'plugin_not_found', 110 'message' => __( 'Plugin not found in API response.', 'performance-lab' ), 111 ), 112 ); 113 114 $has_errors = true; 115 } else { 116 $plugin_data = $all_performance_plugins[ $current_plugin_slug ]; 117 $plugins[ $current_plugin_slug ] = wp_array_slice_assoc( $plugin_data, $fields ); 118 119 // Enqueue the required plugins slug by adding it to the queue. 120 if ( isset( $plugin_data['requires_plugins'] ) && is_array( $plugin_data['requires_plugins'] ) ) { 121 $plugin_queue = array_merge( $plugin_queue, $plugin_data['requires_plugins'] ); 122 } 123 } 124 } 125 126 if ( ! isset( $plugins[ $plugin_slug ] ) ) { 127 // Cache the fact that the plugin was not found. 128 $plugins[ $plugin_slug ] = array( 129 'error' => array( 130 'code' => 'plugin_not_found', 131 'message' => __( 'The requested plugin is not part of Performance Lab plugins.', 'performance-lab' ), 132 ), 133 ); 134 135 $has_errors = true; 136 } 137 } 138 139 set_transient( $transient_key, $plugins, $has_errors ? MINUTE_IN_SECONDS : HOUR_IN_SECONDS ); 140 141 if ( isset( $plugins[ $plugin_slug ]['error'] ) ) { 59 142 return new WP_Error( 60 'api_error', 61 sprintf( 62 /* translators: %s: API error message */ 63 __( 'Failed to retrieve plugins data from WordPress.org API: %s', 'performance-lab' ), 64 $response->get_error_message() 65 ) 66 ); 67 } 68 69 // Check if the response contains plugins. 70 if ( ! ( is_object( $response ) && property_exists( $response, 'plugins' ) ) ) { 71 return new WP_Error( 'no_plugins', __( 'No plugins found in the API response.', 'performance-lab' ) ); 72 } 73 74 $plugins = array(); 75 $standalone_plugins = array_merge( 76 array_flip( perflab_get_standalone_plugins() ), 77 array( 'optimization-detective' => array() ) // TODO: Programmatically discover the plugin dependencies and add them here. See <https://github.com/WordPress/performance/issues/1616>. 78 ); 79 foreach ( $response->plugins as $plugin_data ) { 80 if ( ! isset( $standalone_plugins[ $plugin_data['slug'] ] ) ) { 81 continue; 82 } 83 $plugins[ $plugin_data['slug'] ] = wp_array_slice_assoc( $plugin_data, $fields ); 84 } 85 86 set_transient( $transient_key, $plugins, HOUR_IN_SECONDS ); 87 88 if ( ! isset( $plugins[ $plugin_slug ] ) ) { 89 return new WP_Error( 90 'plugin_not_found', 91 __( 'Plugin not found in API response.', 'performance-lab' ) 143 $plugins[ $plugin_slug ]['error']['code'], 144 $plugins[ $plugin_slug ]['error']['message'] 92 145 ); 93 146 } … … 96 149 * Validated (mostly) plugin data. 97 150 * 98 * @var array<string, array{name: string, slug: string, short_description: string, requires: string|false, requires_php: string|false, requires_plugins: string[], download_link: string,version: string}> $plugins151 * @var array<string, array{name: string, slug: string, short_description: string, requires: string|false, requires_php: string|false, requires_plugins: string[], version: string}> $plugins 99 152 */ 100 153 return $plugins[ $plugin_slug ]; … … 240 293 </div> 241 294 <?php 295 if ( current_user_can( 'activate_plugins' ) ) { 296 ?> 297 <p> 298 <?php 299 $plugins_url = add_query_arg( 300 array( 301 's' => 'WordPress Performance Team', 302 'plugin_status' => 'all', 303 ), 304 admin_url( 'plugins.php' ) 305 ); 306 echo wp_kses( 307 sprintf( 308 /* translators: %s is the URL to the plugins screen */ 309 __( 'Performance features are installed as plugins. To update features or remove them, <a href="%s">manage them on the plugins screen</a>.', 'performance-lab' ), 310 esc_url( $plugins_url ) 311 ), 312 array( 313 'a' => array( 'href' => true ), 314 ) 315 ); 316 ?> 317 </p> 318 <?php 319 } 242 320 } 243 321 … … 326 404 $processed_plugins[] = $plugin_slug; 327 405 328 $plugin_data = perflab_query_plugin_info( $plugin_slug ); 406 // Get the freshest data (including the most recent download_link) as opposed what is cached by perflab_query_plugin_info(). 407 $plugin_data = plugins_api( 408 'plugin_information', 409 array( 410 'slug' => $plugin_slug, 411 'fields' => array( 412 'download_link' => true, 413 'requires_plugins' => true, 414 'sections' => false, // Omit the bulk of the response which we don't need. 415 ), 416 ) 417 ); 418 329 419 if ( $plugin_data instanceof WP_Error ) { 330 420 return $plugin_data; 421 } 422 423 if ( is_object( $plugin_data ) ) { 424 $plugin_data = (array) $plugin_data; 331 425 } 332 426 -
performance-lab/trunk/load.php
r3193397 r3210022 4 4 * Plugin URI: https://github.com/WordPress/performance 5 5 * Description: Performance plugin from the WordPress Performance Team, which is a collection of standalone performance features. 6 * Requires at least: 6. 56 * Requires at least: 6.6 7 7 * Requires PHP: 7.2 8 * Version: 3. 6.18 * Version: 3.7.0 9 9 * Author: WordPress Performance Team 10 10 * Author URI: https://make.wordpress.org/performance/ … … 20 20 } 21 21 22 define( 'PERFLAB_VERSION', '3. 6.1' );22 define( 'PERFLAB_VERSION', '3.7.0' ); 23 23 define( 'PERFLAB_MAIN_FILE', __FILE__ ); 24 24 define( 'PERFLAB_PLUGIN_DIR_PATH', plugin_dir_path( PERFLAB_MAIN_FILE ) ); -
performance-lab/trunk/readme.txt
r3193397 r3210022 3 3 Contributors: wordpressdotorg 4 4 Tested up to: 6.7 5 Stable tag: 3. 6.15 Stable tag: 3.7.0 6 6 License: GPLv2 or later 7 7 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 71 71 72 72 == Changelog == 73 74 = 3.7.0 = 75 76 **Enhancements** 77 78 * Add guidance for managing Performance feature plugins. ([1734](https://github.com/WordPress/performance/pull/1734)) 79 * Automatically discover plugin dependencies when obtaining Performance feature plugins from WordPress.org. ([1680](https://github.com/WordPress/performance/pull/1680)) 80 * Disregard transient cache in `perflab_query_plugin_info()` when a plugin is absent. ([1694](https://github.com/WordPress/performance/pull/1694)) 81 * Minify script used for ajax activation of features; warn if absent and serve original file when SCRIPT_DEBUG is enabled. ([1658](https://github.com/WordPress/performance/pull/1658)) 82 83 **Bug Fixes** 84 85 * Fix latest plugin version not being downloaded consistently. ([1693](https://github.com/WordPress/performance/pull/1693)) 73 86 74 87 = 3.6.1 =
Note: See TracChangeset
for help on using the changeset viewer.