| @@ -24,11 +24,11 @@ | ||
| 24 | 24 | 'label' => __( 'Experimental blocks', 'gutenberg' ), |
| 25 | 25 | 'description' => __( 'Enables experimental blocks on a rolling basis as they are developed. (Warning: these blocks may have significant changes during development that cause validation errors and display issues.)', 'gutenberg' ), |
| 26 | 26 | ), |
| 27 | 27 | array( |
| 28 | - 'id' => 'gutenberg-form-blocks', | |
| 29 | - 'label' => __( 'Form and input blocks', 'gutenberg' ), | |
| 30 | - 'description' => __( 'Enables new blocks to allow building forms. You are likely to experience UX issues that are being addressed.', 'gutenberg' ), | |
| 28 | + 'id' => 'gutenberg-global-styles-inheritance-ui', | |
| 29 | + 'label' => __( 'Global Styles inheritance indicators in the block inspector', 'gutenberg' ), | |
| 30 | + 'description' => __( 'Marks which block inspector controls show a value inherited from Global Styles, and adds a shortcut to clear a value you set back to the inherited one. Inherited values show in the inspector whether or not this is on.', 'gutenberg' ), | |
| 31 | 31 | ), |
| 32 | 32 | array( |
| 33 | 33 | 'id' => 'gutenberg-grid-interactivity', |
| 34 | 34 | 'label' => __( 'Grid interactivity', 'gutenberg' ), |
| @@ -41,17 +41,12 @@ | ||
| 41 | 41 | 'label' => _x( 'Media', 'experiments group name', 'gutenberg' ), |
| 42 | 42 | 'items' => array( |
| 43 | 43 | array( |
| 44 | 44 | 'id' => 'gutenberg-media-editor', |
| 45 | - 'label' => __( 'Media Editor', 'gutenberg' ), | |
| 46 | - 'description' => __( 'Adds an "Edit media" action on image blocks for editing the attached media item (metadata and content) in the editor.', 'gutenberg' ), | |
| 45 | + 'label' => __( 'Media Editor (Route)', 'gutenberg' ), | |
| 46 | + 'description' => __( 'Replaces the core Edit Media screen with a dedicated route-based media editor for editing media items (metadata and content).', 'gutenberg' ), | |
| 47 | 47 | ), |
| 48 | 48 | array( |
| 49 | - 'id' => 'gutenberg-media-editor-modal', | |
| 50 | - 'label' => __( 'Media Editor Modal', 'gutenberg' ), | |
| 51 | - 'description' => __( 'Enables an in-place modal for image editing — cropping, adjustments, and metadata — opened from blocks like the image block without navigating away from the current post.', 'gutenberg' ), | |
| 52 | - ), | |
| 53 | - array( | |
| 54 | 49 | 'id' => 'gutenberg-dataviews-media-modal', |
| 55 | 50 | 'label' => __( 'Media Upload Modal', 'gutenberg' ), |
| 56 | 51 | 'description' => __( 'Replaces the existing WordPress media modal with a new modal powered by Data Views, supporting browsing, selecting, and uploading media.', 'gutenberg' ), |
| 57 | 52 | ), |
| @@ -61,13 +56,8 @@ | ||
| 61 | 56 | 'slug' => 'data-views', |
| 62 | 57 | 'label' => _x( 'Data Views', 'experiments group name', 'gutenberg' ), |
| 63 | 58 | 'items' => array( |
| 64 | 59 | array( |
| 65 | - 'id' => 'gutenberg-content-only-inspector-fields', | |
| 66 | - 'label' => __( 'Block fields: Show dataform driven inspector fields on blocks that support them', 'gutenberg' ), | |
| 67 | - 'description' => __( 'Enables editable block inspector fields that are generated using a dataform.', 'gutenberg' ), | |
| 68 | - ), | |
| 69 | - array( | |
| 70 | 60 | 'id' => 'gutenberg-dataform-inspector', |
| 71 | 61 | 'label' => __( 'Editor Inspector: Use DataForm', 'gutenberg' ), |
| 72 | 62 | 'description' => __( 'Replaces the bespoke editor inspector panels with a unified DataForm-based implementation for Pages and Posts, matching the QuickEdit experience.', 'gutenberg' ), |
| 73 | 63 | ), |
| @@ -84,16 +74,15 @@ | ||
| 84 | 74 | ), |
| 85 | 75 | ), |
| 86 | 76 | ), |
| 87 | 77 | array( |
| 88 | - 'slug' => 'templates', | |
| 89 | - 'label' => _x( 'Templates', 'experiments group name', 'gutenberg' ), | |
| 78 | + 'slug' => 'real-time-collaboration', | |
| 79 | + 'label' => _x( 'Real-Time Collaboration', 'experiments group name', 'gutenberg' ), | |
| 90 | 80 | 'items' => array( |
| 91 | 81 | array( |
| 92 | - 'id' => 'active_templates', | |
| 93 | - 'label' => __( 'Template Activation', 'gutenberg' ), | |
| 94 | - 'description' => __( 'Allows multiple templates of the same type to be created, of which one can be active at a time. (Warning: when you deactivate this experiment, it is best to delete all created templates except for the active ones.)', 'gutenberg' ), | |
| 95 | - 'separateOption' => true, | |
| 82 | + 'id' => 'gutenberg-real-time-collaboration', | |
| 83 | + 'label' => __( 'Enable real-time collaboration', 'gutenberg' ), | |
| 84 | + 'description' => __( 'Allows multiple people to edit the same post at the same time.', 'gutenberg' ), | |
| 96 | 85 | ), |
| 97 | 86 | ), |
| 98 | 87 | ), |
| 99 | 88 | array( |
| @@ -100,13 +89,8 @@ | ||
| 100 | 89 | 'slug' => 'other', |
| 101 | 90 | 'label' => _x( 'Other', 'experiments group name', 'gutenberg' ), |
| 102 | 91 | 'items' => array( |
| 103 | 92 | array( |
| 104 | - 'id' => 'gutenberg-color-randomizer', | |
| 105 | - 'label' => __( 'Color randomizer', 'gutenberg' ), | |
| 106 | - 'description' => __( 'Enables the Global Styles color randomizer in the Site Editor; a utility that lets you mix the current color palette pseudo-randomly.', 'gutenberg' ), | |
| 107 | - ), | |
| 108 | - array( | |
| 109 | 93 | 'id' => 'gutenberg-workflow-palette', |
| 110 | 94 | 'label' => __( 'Workflow Palette', 'gutenberg' ), |
| 111 | 95 | 'description' => __( 'Enables the Workflow Palette for running workflows composed of abilities, from a unified interface.', 'gutenberg' ), |
| 112 | 96 | ), |
| @@ -117,20 +101,20 @@ | ||
| 117 | 101 | ), |
| 118 | 102 | array( |
| 119 | 103 | 'id' => 'gutenberg-guidelines', |
| 120 | 104 | 'label' => __( 'Guidelines', 'gutenberg' ), |
| 121 | - 'description' => __( 'Enables guidelines feature for managing editorial voice and tone guidelines under Settings.', 'gutenberg' ), | |
| 105 | + 'description' => __( 'Enables the Guidelines page under Settings and the experimental knowledge storage (wp_knowledge).', 'gutenberg' ), | |
| 122 | 106 | ), |
| 123 | 107 | array( |
| 124 | - 'id' => 'gutenberg-content-types', | |
| 125 | - 'label' => __( 'Content types', 'gutenberg' ), | |
| 126 | - 'description' => __( 'Enables a UI for creating and managing custom taxonomies under Settings. Custom post types will be explored soon.', 'gutenberg' ), | |
| 127 | - ), | |
| 128 | - array( | |
| 129 | 108 | 'id' => 'gutenberg-dashboard-widgets', |
| 130 | 109 | 'label' => __( 'New Dashboard experience', 'gutenberg' ), |
| 131 | 110 | 'description' => __( 'Enables a new dashboard experience with resizable, reorderable widgets that plugins can register and users can personalize.', 'gutenberg' ), |
| 132 | 111 | ), |
| 112 | + array( | |
| 113 | + 'id' => 'gutenberg-react-19', | |
| 114 | + 'label' => __( 'React 19', 'gutenberg' ), | |
| 115 | + 'description' => __( 'Registers React 19 as the bundled React version, replacing the default React 18 scripts.', 'gutenberg' ), | |
| 116 | + ), | |
| 133 | 117 | ), |
| 134 | 118 | ), |
| 135 | 119 | ); |
| 136 | 120 | |
| @@ -145,16 +129,8 @@ | ||
| 145 | 129 | 'group' => $group['slug'], |
| 146 | 130 | 'group_label' => $group['label'], |
| 147 | 131 | ); |
| 148 | 132 | |
| 149 | - // Metadata-only entry: values for separateOption experiments live in | |
| 150 | - // their own option (e.g. `active_templates`). Surfaced here so the UI | |
| 151 | - // can render them from the settings schema. | |
| 152 | - if ( ! empty( $experiment['separateOption'] ) ) { | |
| 153 | - $property['separate_option'] = true; | |
| 154 | - $property['option_name'] = $experiment['id']; | |
| 155 | - } | |
| 156 | - | |
| 157 | 133 | $properties[ $experiment['id'] ] = $property; |
| 158 | 134 | } |
| 159 | 135 | } |
| 160 | 136 | |
| @@ -176,23 +152,8 @@ | ||
| 176 | 152 | |
| 177 | 153 | add_action( 'rest_api_init', 'gutenberg_initialize_experiments_settings' ); |
| 178 | 154 | |
| 179 | 155 | /** |
| 180 | - * Registers the Experiments submenu page under the Gutenberg menu. | |
| 181 | - */ | |
| 182 | -function gutenberg_experiments_menu() { | |
| 183 | - add_submenu_page( | |
| 184 | - 'gutenberg', | |
| 185 | - __( 'Experiments Settings', 'gutenberg' ), | |
| 186 | - __( 'Experiments', 'gutenberg' ), | |
| 187 | - 'manage_options', | |
| 188 | - 'experiments-wp-admin', | |
| 189 | - 'gutenberg_experiments_wp_admin_render_page' | |
| 190 | - ); | |
| 191 | -} | |
| 192 | -add_action( 'admin_menu', 'gutenberg_experiments_menu' ); | |
| 193 | - | |
| 194 | -/** | |
| 195 | 156 | * Allows the legacy `gutenberg-experiments` route. Without this, accessing |
| 196 | 157 | * `?page=gutenberg-experiments` results in an HTTP 403 error. |
| 197 | 158 | * |
| 198 | 159 | * Allowing the route is done by adding a wp-admin submenu page that won't be rendered. |
| @@ -206,10 +167,8 @@ | ||
| 206 | 167 | * Redirects the legacy `?page=gutenberg-experiments` URL to the new |
| 207 | 168 | * `?page=experiments-wp-admin` URL. |
| 208 | 169 | */ |
| 209 | 170 | function gutenberg_redirect_legacy_experiments_page() { |
| 210 | - wp_safe_redirect( admin_url( 'admin.php?page=experiments-wp-admin' ) ); | |
| 171 | + wp_safe_redirect( admin_url( 'options-general.php?page=experiments-wp-admin' ) ); | |
| 211 | 172 | exit; |
| 212 | 173 | } |
| 213 | 174 | add_action( 'load-admin_page_gutenberg-experiments', 'gutenberg_redirect_legacy_experiments_page' ); |
| 214 | -add_action( 'load-toplevel_page_gutenberg-experiments', 'gutenberg_redirect_legacy_experiments_page' ); | |
| 215 | -add_action( 'load-gutenberg_page_gutenberg-experiments', 'gutenberg_redirect_legacy_experiments_page' ); | |