-
-
- { __( 'Cancel' ) }
-
-
- saveDirtyEntities( {
- onSave,
- dirtyEntityRecords,
- entitiesToSkip: unselectedEntities,
- close,
- } )
- }
- className="editor-entities-saved-states__save-button"
- >
- { saveLabel }
-
-
+ { ! isInline && (
+
+ { actionButtons }
+
+ ) }
-
-
+
+
{ __( 'Are you ready to save?' ) }
- { additionalPrompt }
-
- { isDirty
- ? createInterpolateElement(
- sprintf(
- /* translators: %d: number of site changes waiting to be saved. */
- _n(
- 'There is %d site change waiting to be saved.',
- 'There are %d site changes waiting to be saved.',
+
+ { additionalPrompt }
+
+ { isDirty
+ ? createInterpolateElement(
+ sprintf(
+ /* translators: %d: number of site changes waiting to be saved. */
+ _n(
+ 'There is %d site change waiting to be saved.',
+ 'There are %d site changes waiting to be saved.',
+ dirtyEntityRecords.length
+ ),
dirtyEntityRecords.length
),
- dirtyEntityRecords.length
- ),
- { strong: }
- )
- : selectItemsToSaveDescription }
-
+ { strong:
}
+ )
+ : selectItemsToSaveDescription }
+
+
{ sortedPartitionedSavables.map( ( list ) => {
@@ -198,6 +228,16 @@ export function EntitiesSavedStatesExtensible( {
/>
);
} ) }
+
+ { isInline && (
+
+ { actionButtons }
+
+ ) }
);
}
diff --git a/packages/editor/src/components/entities-saved-states/style.scss b/packages/editor/src/components/entities-saved-states/style.scss
index e2c320678c322..d35feffa69308 100644
--- a/packages/editor/src/components/entities-saved-states/style.scss
+++ b/packages/editor/src/components/entities-saved-states/style.scss
@@ -16,14 +16,49 @@
}
}
-.entities-saved-states__description-heading {
- font-size: $default-font-size;
+.entities-saved-states__panel.is-inline {
+ .entities-saved-states__text-prompt {
+ padding: 0;
+ }
+
+ .entities-saved-states__panel-body {
+ padding-left: 0;
+ padding-right: 0;
+ border: 0;
+
+ > h2 {
+ margin-left: -1 * $grid-unit-20;
+ margin-right: -1 * $grid-unit-20;
+ margin-bottom: 0;
+
+ button {
+ font-size: $font-size-x-small;
+ text-transform: uppercase;
+ }
+ }
+ }
+
+ .entities-saved-states__text-prompt--header-wrapper {
+ display: none;
+ }
+
+ .entities-saved-states__text-prompt--changes-count {
+ margin-top: 0;
+ margin-bottom: $grid-unit-10;
+ }
+
+ .entities-saved-states__panel-footer {
+ margin-top: $grid-unit-20;
+ }
+}
+
+.entities-saved-states__change-control {
+ flex: 1;
}
.entities-saved-states__changes {
- color: $gray-700;
- font-size: $helptext-font-size;
- margin: $grid-unit-10 $grid-unit-20 0 $grid-unit-20;
+ font-size: $default-font-size;
+ margin: $grid-unit-05 $grid-unit-20 0 $grid-unit-30;
list-style: disc;
li {
diff --git a/packages/editor/src/components/page-attributes/parent.js b/packages/editor/src/components/page-attributes/parent.js
index bd2861766c334..56381f448abc4 100644
--- a/packages/editor/src/components/page-attributes/parent.js
+++ b/packages/editor/src/components/page-attributes/parent.js
@@ -61,47 +61,63 @@ export const getItemPriority = ( name, searchValue ) => {
export function PageAttributesParent() {
const { editPost } = useDispatch( editorStore );
const [ fieldValue, setFieldValue ] = useState( false );
- const { isHierarchical, parentPostId, parentPostTitle, pageItems } =
- useSelect(
- ( select ) => {
- const { getPostType, getEntityRecords, getEntityRecord } =
- select( coreStore );
- const { getCurrentPostId, getEditedPostAttribute } =
- select( editorStore );
- const postTypeSlug = getEditedPostAttribute( 'type' );
- const pageId = getEditedPostAttribute( 'parent' );
- const pType = getPostType( postTypeSlug );
- const postId = getCurrentPostId();
- const postIsHierarchical = pType?.hierarchical ?? false;
- const query = {
- per_page: 100,
- exclude: postId,
- parent_exclude: postId,
- orderby: 'menu_order',
- order: 'asc',
- _fields: 'id,title,parent',
- };
+ const {
+ isHierarchical,
+ parentPostId,
+ parentPostTitle,
+ pageItems,
+ isLoading,
+ } = useSelect(
+ ( select ) => {
+ const {
+ getPostType,
+ getEntityRecords,
+ getEntityRecord,
+ isResolving,
+ } = select( coreStore );
+ const { getCurrentPostId, getEditedPostAttribute } =
+ select( editorStore );
+ const postTypeSlug = getEditedPostAttribute( 'type' );
+ const pageId = getEditedPostAttribute( 'parent' );
+ const pType = getPostType( postTypeSlug );
+ const postId = getCurrentPostId();
+ const postIsHierarchical = pType?.hierarchical ?? false;
+ const query = {
+ per_page: 100,
+ exclude: postId,
+ parent_exclude: postId,
+ orderby: 'menu_order',
+ order: 'asc',
+ _fields: 'id,title,parent',
+ };
- // Perform a search when the field is changed.
- if ( !! fieldValue ) {
- query.search = fieldValue;
- }
+ // Perform a search when the field is changed.
+ if ( !! fieldValue ) {
+ query.search = fieldValue;
+ }
- const parentPost = pageId
- ? getEntityRecord( 'postType', postTypeSlug, pageId )
- : null;
+ const parentPost = pageId
+ ? getEntityRecord( 'postType', postTypeSlug, pageId )
+ : null;
- return {
- isHierarchical: postIsHierarchical,
- parentPostId: pageId,
- parentPostTitle: parentPost ? getTitle( parentPost ) : '',
- pageItems: postIsHierarchical
- ? getEntityRecords( 'postType', postTypeSlug, query )
- : null,
- };
- },
- [ fieldValue ]
- );
+ return {
+ isHierarchical: postIsHierarchical,
+ parentPostId: pageId,
+ parentPostTitle: parentPost ? getTitle( parentPost ) : '',
+ pageItems: postIsHierarchical
+ ? getEntityRecords( 'postType', postTypeSlug, query )
+ : null,
+ isLoading: postIsHierarchical
+ ? isResolving( 'getEntityRecords', [
+ 'postType',
+ postTypeSlug,
+ query,
+ ] )
+ : false,
+ };
+ },
+ [ fieldValue ]
+ );
const parentOptions = useMemo( () => {
const getOptionsFromTree = ( tree, level = 0 ) => {
@@ -187,6 +203,7 @@ export function PageAttributesParent() {
onFilterValueChange={ debounce( handleKeydown, 300 ) }
onChange={ handleChange }
hideLabelFromVision
+ isLoading={ isLoading }
/>
);
}
diff --git a/packages/editor/src/components/post-author/check.js b/packages/editor/src/components/post-author/check.js
index 0ae7a3963e243..de781038d2dfd 100644
--- a/packages/editor/src/components/post-author/check.js
+++ b/packages/editor/src/components/post-author/check.js
@@ -23,11 +23,14 @@ import { AUTHORS_QUERY } from './constants';
export default function PostAuthorCheck( { children } ) {
const { hasAssignAuthorAction, hasAuthors } = useSelect( ( select ) => {
const post = select( editorStore ).getCurrentPost();
- const authors = select( coreStore ).getUsers( AUTHORS_QUERY );
+ const canAssignAuthor = post?._links?.[ 'wp:action-assign-author' ]
+ ? true
+ : false;
return {
- hasAssignAuthorAction:
- post._links?.[ 'wp:action-assign-author' ] ?? false,
- hasAuthors: authors?.length >= 1,
+ hasAssignAuthorAction: canAssignAuthor,
+ hasAuthors: canAssignAuthor
+ ? select( coreStore ).getUsers( AUTHORS_QUERY )?.length >= 1
+ : false,
};
}, [] );
diff --git a/packages/editor/src/components/post-publish-panel/maybe-category-panel.js b/packages/editor/src/components/post-publish-panel/maybe-category-panel.js
index 66fdf985cc0d5..d3bca4417dbbf 100644
--- a/packages/editor/src/components/post-publish-panel/maybe-category-panel.js
+++ b/packages/editor/src/components/post-publish-panel/maybe-category-panel.js
@@ -16,8 +16,12 @@ import { store as editorStore } from '../../store';
function MaybeCategoryPanel() {
const hasNoCategory = useSelect( ( select ) => {
const postType = select( editorStore ).getCurrentPostType();
- const { canUser, getEntityRecord, getTaxonomy } = select( coreStore );
- const categoriesTaxonomy = getTaxonomy( 'category' );
+ const { canUser, getEntityRecord } = select( coreStore );
+ const categoriesTaxonomy = getEntityRecord(
+ 'root',
+ 'taxonomy',
+ 'category'
+ );
const defaultCategoryId = canUser( 'read', {
kind: 'root',
name: 'site',
diff --git a/packages/editor/src/components/post-publish-panel/maybe-tags-panel.js b/packages/editor/src/components/post-publish-panel/maybe-tags-panel.js
index 537d62f382805..4fa761ffbf71f 100644
--- a/packages/editor/src/components/post-publish-panel/maybe-tags-panel.js
+++ b/packages/editor/src/components/post-publish-panel/maybe-tags-panel.js
@@ -36,7 +36,11 @@ const TagsPanel = () => {
const MaybeTagsPanel = () => {
const { hasTags, isPostTypeSupported } = useSelect( ( select ) => {
const postType = select( editorStore ).getCurrentPostType();
- const tagsTaxonomy = select( coreStore ).getTaxonomy( 'post_tag' );
+ const tagsTaxonomy = select( coreStore ).getEntityRecord(
+ 'root',
+ 'taxonomy',
+ 'post_tag'
+ );
const _isPostTypeSupported = tagsTaxonomy?.types?.includes( postType );
const areTagsFetched = tagsTaxonomy !== undefined;
const tags =
diff --git a/packages/editor/src/components/post-taxonomies/check.js b/packages/editor/src/components/post-taxonomies/check.js
index b6b4d4f58e4e6..b89a89a54335d 100644
--- a/packages/editor/src/components/post-taxonomies/check.js
+++ b/packages/editor/src/components/post-taxonomies/check.js
@@ -20,9 +20,11 @@ import { store as editorStore } from '../../store';
export default function PostTaxonomiesCheck( { children } ) {
const hasTaxonomies = useSelect( ( select ) => {
const postType = select( editorStore ).getCurrentPostType();
- const taxonomies = select( coreStore ).getTaxonomies( {
- per_page: -1,
- } );
+ const taxonomies = select( coreStore ).getEntityRecords(
+ 'root',
+ 'taxonomy',
+ { per_page: -1 }
+ );
return taxonomies?.some( ( taxonomy ) =>
taxonomy.types.includes( postType )
);
diff --git a/packages/editor/src/components/post-taxonomies/flat-term-selector.js b/packages/editor/src/components/post-taxonomies/flat-term-selector.js
index 890175534c8b4..eb424e53c58de 100644
--- a/packages/editor/src/components/post-taxonomies/flat-term-selector.js
+++ b/packages/editor/src/components/post-taxonomies/flat-term-selector.js
@@ -100,10 +100,10 @@ export function FlatTermSelector( { slug, __nextHasNoMarginBottom } ) {
( select ) => {
const { getCurrentPost, getEditedPostAttribute } =
select( editorStore );
- const { getEntityRecords, getTaxonomy, hasFinishedResolution } =
+ const { getEntityRecords, getEntityRecord, hasFinishedResolution } =
select( coreStore );
const post = getCurrentPost();
- const _taxonomy = getTaxonomy( slug );
+ const _taxonomy = getEntityRecord( 'root', 'taxonomy', slug );
const _termIds = _taxonomy
? getEditedPostAttribute( _taxonomy.rest_base )
: EMPTY_ARRAY;
diff --git a/packages/editor/src/components/post-taxonomies/hierarchical-term-selector.js b/packages/editor/src/components/post-taxonomies/hierarchical-term-selector.js
index ef2019ac3f0f4..0bc4b17ba1aa4 100644
--- a/packages/editor/src/components/post-taxonomies/hierarchical-term-selector.js
+++ b/packages/editor/src/components/post-taxonomies/hierarchical-term-selector.js
@@ -175,9 +175,9 @@ export function HierarchicalTermSelector( { slug } ) {
( select ) => {
const { getCurrentPost, getEditedPostAttribute } =
select( editorStore );
- const { getTaxonomy, getEntityRecords, isResolving } =
+ const { getEntityRecord, getEntityRecords, isResolving } =
select( coreStore );
- const _taxonomy = getTaxonomy( slug );
+ const _taxonomy = getEntityRecord( 'root', 'taxonomy', slug );
const post = getCurrentPost();
return {
diff --git a/packages/editor/src/components/post-taxonomies/index.js b/packages/editor/src/components/post-taxonomies/index.js
index dc2345fd6197f..26ef06ee68ab3 100644
--- a/packages/editor/src/components/post-taxonomies/index.js
+++ b/packages/editor/src/components/post-taxonomies/index.js
@@ -18,7 +18,11 @@ export function PostTaxonomies( { taxonomyWrapper = identity } ) {
const { postType, taxonomies } = useSelect( ( select ) => {
return {
postType: select( editorStore ).getCurrentPostType(),
- taxonomies: select( coreStore ).getTaxonomies( { per_page: -1 } ),
+ taxonomies: select( coreStore ).getEntityRecords(
+ 'root',
+ 'taxonomy',
+ { per_page: -1 }
+ ),
};
}, [] );
const visibleTaxonomies = ( taxonomies ?? [] ).filter(
diff --git a/packages/editor/src/components/post-taxonomies/test/index.js b/packages/editor/src/components/post-taxonomies/test/index.js
index 1f386f4c2fab1..60f07c5aa417a 100644
--- a/packages/editor/src/components/post-taxonomies/test/index.js
+++ b/packages/editor/src/components/post-taxonomies/test/index.js
@@ -44,6 +44,19 @@ describe( 'PostTaxonomies', () => {
},
};
+ const allTaxonomies = [ genresTaxonomy, categoriesTaxonomy ];
+
+ const hidesUI = [
+ genresTaxonomy,
+ {
+ ...categoriesTaxonomy,
+ types: [ 'post', 'page', 'book' ],
+ visibility: {
+ show_ui: false,
+ },
+ },
+ ];
+
beforeEach( () => {
jest.spyOn( select( editorStore ), 'getCurrentPost' ).mockReturnValue( {
_links: {
@@ -70,8 +83,8 @@ describe( 'PostTaxonomies', () => {
},
} );
- jest.spyOn( select( coreStore ), 'getTaxonomy' ).mockImplementation(
- ( slug ) => {
+ jest.spyOn( select( coreStore ), 'getEntityRecord' ).mockImplementation(
+ ( kind, name, slug ) => {
switch ( slug ) {
case 'category': {
return categoriesTaxonomy;
@@ -91,8 +104,11 @@ describe( 'PostTaxonomies', () => {
select( editorStore ),
'getCurrentPostType'
).mockReturnValue( 'page' );
- jest.spyOn( select( coreStore ), 'getTaxonomies' ).mockReturnValue(
- taxonomies
+ jest.spyOn(
+ select( coreStore ),
+ 'getEntityRecords'
+ ).mockImplementation( ( kind, name ) =>
+ kind === 'root' && name === 'taxonomy' ? taxonomies : null
);
const { container } = render(
);
@@ -105,10 +121,12 @@ describe( 'PostTaxonomies', () => {
select( editorStore ),
'getCurrentPostType'
).mockReturnValue( 'book' );
- jest.spyOn( select( coreStore ), 'getTaxonomies' ).mockReturnValue( [
- genresTaxonomy,
- categoriesTaxonomy,
- ] );
+ jest.spyOn(
+ select( coreStore ),
+ 'getEntityRecords'
+ ).mockImplementation( ( kind, name ) =>
+ kind === 'root' && name === 'taxonomy' ? allTaxonomies : null
+ );
render(
);
@@ -129,16 +147,12 @@ describe( 'PostTaxonomies', () => {
select( editorStore ),
'getCurrentPostType'
).mockReturnValue( 'book' );
- jest.spyOn( select( coreStore ), 'getTaxonomies' ).mockReturnValue( [
- genresTaxonomy,
- {
- ...categoriesTaxonomy,
- types: [ 'post', 'page', 'book' ],
- visibility: {
- show_ui: false,
- },
- },
- ] );
+ jest.spyOn(
+ select( coreStore ),
+ 'getEntityRecords'
+ ).mockImplementation( ( kind, name ) =>
+ kind === 'root' && name === 'taxonomy' ? hidesUI : null
+ );
render(
);
diff --git a/packages/editor/src/components/post-template/create-new-template-modal.js b/packages/editor/src/components/post-template/create-new-template-modal.js
index 69d31b7f8f714..9a89cf385ebab 100644
--- a/packages/editor/src/components/post-template/create-new-template-modal.js
+++ b/packages/editor/src/components/post-template/create-new-template-modal.js
@@ -126,6 +126,7 @@ export default function CreateNewTemplateModal( { onClose } ) {
placeholder={ DEFAULT_TITLE }
disabled={ isBusy }
help={ __(
+ // eslint-disable-next-line no-restricted-syntax -- 'sidebar' is a common web design term for layouts
'Describe the template, e.g. "Post with sidebar". A custom template can be manually applied to any post or page.'
) }
/>
diff --git a/packages/editor/src/components/preferences-modal/index.js b/packages/editor/src/components/preferences-modal/index.js
index fcca1b00e9bb2..b848288598698 100644
--- a/packages/editor/src/components/preferences-modal/index.js
+++ b/packages/editor/src/components/preferences-modal/index.js
@@ -88,7 +88,7 @@ function PreferencesModalContents( { extraSections = {} } ) {
scope="core"
featureName="showListViewByDefault"
help={ __(
- 'Opens the List View sidebar by default.'
+ 'Opens the List View panel by default.'
) }
label={ __( 'Always open List View' ) }
/>
diff --git a/packages/editor/src/components/sidebar/header.js b/packages/editor/src/components/sidebar/header.js
index ed2f7f89fe6e7..b5d9aaa26707c 100644
--- a/packages/editor/src/components/sidebar/header.js
+++ b/packages/editor/src/components/sidebar/header.js
@@ -22,7 +22,7 @@ const SidebarHeader = ( _, ref ) => {
return {
documentLabel:
// translators: Default label for the Document sidebar tab, not selected.
- getPostTypeLabel() || _x( 'Document', 'noun, sidebar' ),
+ getPostTypeLabel() || _x( 'Document', 'noun, panel' ),
};
}, [] );
diff --git a/packages/editor/src/components/sidebar/index.js b/packages/editor/src/components/sidebar/index.js
index 601bcd8f311bb..6784aafeb57ff 100644
--- a/packages/editor/src/components/sidebar/index.js
+++ b/packages/editor/src/components/sidebar/index.js
@@ -103,7 +103,7 @@ const SidebarContent = ( {
headerClassName="editor-sidebar__panel-tabs"
title={
/* translators: button label text should, if possible, be under 16 characters. */
- _x( 'Settings', 'sidebar button label' )
+ _x( 'Settings', 'panel button label' )
}
toggleShortcut={ keyboardShortcut }
icon={ isRTL() ? drawerLeft : drawerRight }
diff --git a/packages/element/CHANGELOG.md b/packages/element/CHANGELOG.md
index 5300441670dbf..62591286563ca 100644
--- a/packages/element/CHANGELOG.md
+++ b/packages/element/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 6.18.0 (2025-02-12)
+
## 6.17.0 (2025-01-29)
## 6.16.0 (2025-01-15)
diff --git a/packages/element/package.json b/packages/element/package.json
index d7f3e32155c67..de87f14a255e4 100644
--- a/packages/element/package.json
+++ b/packages/element/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/element",
- "version": "6.17.0",
+ "version": "6.18.0",
"description": "Element React module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/env/CHANGELOG.md b/packages/env/CHANGELOG.md
index 03be7a7bbc56c..a5015f745f3a0 100644
--- a/packages/env/CHANGELOG.md
+++ b/packages/env/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 10.18.0 (2025-02-12)
+
## 10.17.0 (2025-01-29)
### Enhancements
diff --git a/packages/env/package.json b/packages/env/package.json
index bdf8766aa5869..c55d652d16ded 100644
--- a/packages/env/package.json
+++ b/packages/env/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/env",
- "version": "10.17.0",
+ "version": "10.18.0",
"description": "A zero-config, self contained local WordPress environment for development and testing.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/escape-html/CHANGELOG.md b/packages/escape-html/CHANGELOG.md
index 3ec127fd9d5da..686bdc161900a 100644
--- a/packages/escape-html/CHANGELOG.md
+++ b/packages/escape-html/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 3.18.0 (2025-02-12)
+
## 3.17.0 (2025-01-29)
## 3.16.0 (2025-01-15)
diff --git a/packages/escape-html/package.json b/packages/escape-html/package.json
index 9a7555c3b32d3..74f87b4b6d434 100644
--- a/packages/escape-html/package.json
+++ b/packages/escape-html/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/escape-html",
- "version": "3.17.0",
+ "version": "3.18.0",
"description": "Escape HTML utils.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/eslint-plugin/CHANGELOG.md b/packages/eslint-plugin/CHANGELOG.md
index 60630bae0e01f..21139f7840cb8 100644
--- a/packages/eslint-plugin/CHANGELOG.md
+++ b/packages/eslint-plugin/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 22.4.0 (2025-02-12)
+
## 22.3.0 (2025-01-29)
## 22.2.0 (2025-01-15)
diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json
index c315891896fcc..e5a94005723ae 100644
--- a/packages/eslint-plugin/package.json
+++ b/packages/eslint-plugin/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/eslint-plugin",
- "version": "22.3.0",
+ "version": "22.4.0",
"description": "ESLint plugin for WordPress development.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/fields/CHANGELOG.md b/packages/fields/CHANGELOG.md
index 8123d0f3caf11..a210c1064f65c 100644
--- a/packages/fields/CHANGELOG.md
+++ b/packages/fields/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 0.10.0 (2025-02-12)
+
## 0.9.0 (2025-01-29)
## 0.8.0 (2025-01-15)
diff --git a/packages/fields/package.json b/packages/fields/package.json
index adc59764b331a..3fc981c70d1a2 100644
--- a/packages/fields/package.json
+++ b/packages/fields/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/fields",
- "version": "0.9.0",
+ "version": "0.10.0",
"description": "DataViews is a component that provides an API to render datasets using different types of layouts (table, grid, list, etc.).",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/format-library/CHANGELOG.md b/packages/format-library/CHANGELOG.md
index 222be010c4f1d..f075414e1a8c3 100644
--- a/packages/format-library/CHANGELOG.md
+++ b/packages/format-library/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.18.0 (2025-02-12)
+
## 5.17.0 (2025-01-29)
## 5.16.0 (2025-01-15)
diff --git a/packages/format-library/package.json b/packages/format-library/package.json
index 33ea404cf1476..242789018725b 100644
--- a/packages/format-library/package.json
+++ b/packages/format-library/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/format-library",
- "version": "5.17.0",
+ "version": "5.18.0",
"description": "Format library for the WordPress editor.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/hooks/CHANGELOG.md b/packages/hooks/CHANGELOG.md
index 38183ebd88b8b..4702fc18f98f1 100644
--- a/packages/hooks/CHANGELOG.md
+++ b/packages/hooks/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.18.0 (2025-02-12)
+
## 4.17.0 (2025-01-29)
## 4.16.0 (2025-01-15)
diff --git a/packages/hooks/package.json b/packages/hooks/package.json
index 4fe1add4725bc..ea5ba2ec15cb2 100644
--- a/packages/hooks/package.json
+++ b/packages/hooks/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/hooks",
- "version": "4.17.0",
+ "version": "4.18.0",
"description": "WordPress hooks library.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/html-entities/CHANGELOG.md b/packages/html-entities/CHANGELOG.md
index fd9f1e9f0f7be..845e384b22f3c 100644
--- a/packages/html-entities/CHANGELOG.md
+++ b/packages/html-entities/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.18.0 (2025-02-12)
+
## 4.17.0 (2025-01-29)
## 4.16.0 (2025-01-15)
diff --git a/packages/html-entities/package.json b/packages/html-entities/package.json
index b00d18fbf70b5..4758c77647640 100644
--- a/packages/html-entities/package.json
+++ b/packages/html-entities/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/html-entities",
- "version": "4.17.0",
+ "version": "4.18.0",
"description": "HTML entity utilities for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/i18n/CHANGELOG.md b/packages/i18n/CHANGELOG.md
index cdc5a75c6f640..90bc438dcdb48 100644
--- a/packages/i18n/CHANGELOG.md
+++ b/packages/i18n/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.18.0 (2025-02-12)
+
## 5.17.0 (2025-01-29)
## 5.16.0 (2025-01-15)
diff --git a/packages/i18n/package.json b/packages/i18n/package.json
index 883b75b06bd1f..bb444a8f881f7 100644
--- a/packages/i18n/package.json
+++ b/packages/i18n/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/i18n",
- "version": "5.17.0",
+ "version": "5.18.0",
"description": "WordPress internationalization (i18n) library.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/icons/CHANGELOG.md b/packages/icons/CHANGELOG.md
index c07908788420e..2b0e895051920 100644
--- a/packages/icons/CHANGELOG.md
+++ b/packages/icons/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 10.18.0 (2025-02-12)
+
## 10.17.0 (2025-01-29)
## 10.16.0 (2025-01-15)
diff --git a/packages/icons/package.json b/packages/icons/package.json
index 128dfe44490a0..a40eee4a9a512 100644
--- a/packages/icons/package.json
+++ b/packages/icons/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/icons",
- "version": "10.17.0",
+ "version": "10.18.0",
"description": "WordPress Icons package, based on dashicon.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/interactivity-router/CHANGELOG.md b/packages/interactivity-router/CHANGELOG.md
index 5213eff2c29f4..bbedead66bc2a 100644
--- a/packages/interactivity-router/CHANGELOG.md
+++ b/packages/interactivity-router/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 2.18.0 (2025-02-12)
+
### Bug Fixes
- Fix CSS rule order in some constructed style sheets. ([#68923](https://github.com/WordPress/gutenberg/pull/68923))
diff --git a/packages/interactivity-router/README.md b/packages/interactivity-router/README.md
index efb52e59be2b5..b79e6b310e239 100644
--- a/packages/interactivity-router/README.md
+++ b/packages/interactivity-router/README.md
@@ -80,7 +80,7 @@ Example:
Post 2
Post 3
-
+ Page 2
```
diff --git a/packages/interactivity-router/package.json b/packages/interactivity-router/package.json
index 9962d60bd2e1d..1dfc1ac9464c4 100644
--- a/packages/interactivity-router/package.json
+++ b/packages/interactivity-router/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/interactivity-router",
- "version": "2.17.0",
+ "version": "2.18.0",
"description": "Package that exposes state and actions from the `core/router` store, part of the Interactivity API.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/interactivity/CHANGELOG.md b/packages/interactivity/CHANGELOG.md
index ef99d6974d6eb..cbc34cbc18231 100644
--- a/packages/interactivity/CHANGELOG.md
+++ b/packages/interactivity/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 6.18.0 (2025-02-12)
+
## 6.17.0 (2025-01-29)
## 6.16.0 (2025-01-15)
diff --git a/packages/interactivity/package.json b/packages/interactivity/package.json
index f109c40f43305..53cf888b1a60b 100644
--- a/packages/interactivity/package.json
+++ b/packages/interactivity/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/interactivity",
- "version": "6.17.0",
+ "version": "6.18.0",
"description": "Package that provides a standard and simple way to handle the frontend interactivity of Gutenberg blocks.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/interface/CHANGELOG.md b/packages/interface/CHANGELOG.md
index 98c616216900b..ca51ac2a1b4c5 100644
--- a/packages/interface/CHANGELOG.md
+++ b/packages/interface/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 9.3.0 (2025-02-12)
+
## 9.2.0 (2025-01-29)
## 9.1.0 (2025-01-15)
diff --git a/packages/interface/package.json b/packages/interface/package.json
index 0cadb6070b9fc..9d6c80bbaa85e 100644
--- a/packages/interface/package.json
+++ b/packages/interface/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/interface",
- "version": "9.2.0",
+ "version": "9.3.0",
"description": "Interface module for WordPress. The package contains shared functionality across the modern JavaScript-based WordPress screens.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/is-shallow-equal/CHANGELOG.md b/packages/is-shallow-equal/CHANGELOG.md
index d36971b392045..deb2aaae6deac 100644
--- a/packages/is-shallow-equal/CHANGELOG.md
+++ b/packages/is-shallow-equal/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.18.0 (2025-02-12)
+
## 5.17.0 (2025-01-29)
## 5.16.0 (2025-01-15)
diff --git a/packages/is-shallow-equal/package.json b/packages/is-shallow-equal/package.json
index d8be6a2c005c2..dde3b465f0abb 100644
--- a/packages/is-shallow-equal/package.json
+++ b/packages/is-shallow-equal/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/is-shallow-equal",
- "version": "5.17.0",
+ "version": "5.18.0",
"description": "Test for shallow equality between two objects or arrays.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/jest-console/CHANGELOG.md b/packages/jest-console/CHANGELOG.md
index cb017e3a3bc67..fa6b98dfb46ee 100644
--- a/packages/jest-console/CHANGELOG.md
+++ b/packages/jest-console/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 8.18.0 (2025-02-12)
+
## 8.17.0 (2025-01-29)
## 8.16.0 (2025-01-15)
diff --git a/packages/jest-console/package.json b/packages/jest-console/package.json
index 78492c7f74ee1..5fe48359d639d 100644
--- a/packages/jest-console/package.json
+++ b/packages/jest-console/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/jest-console",
- "version": "8.17.0",
+ "version": "8.18.0",
"description": "Custom Jest matchers for the Console object.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/jest-preset-default/CHANGELOG.md b/packages/jest-preset-default/CHANGELOG.md
index dd03a156c395a..7678d8a49aac3 100644
--- a/packages/jest-preset-default/CHANGELOG.md
+++ b/packages/jest-preset-default/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 12.18.0 (2025-02-12)
+
## 12.17.0 (2025-01-29)
## 12.16.0 (2025-01-15)
diff --git a/packages/jest-preset-default/package.json b/packages/jest-preset-default/package.json
index b9bc50436ebc7..4e5d5b8b55769 100644
--- a/packages/jest-preset-default/package.json
+++ b/packages/jest-preset-default/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/jest-preset-default",
- "version": "12.17.0",
+ "version": "12.18.0",
"description": "Default Jest preset for WordPress development.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/jest-puppeteer-axe/CHANGELOG.md b/packages/jest-puppeteer-axe/CHANGELOG.md
index 31c317a204058..2609ffa6cdac4 100644
--- a/packages/jest-puppeteer-axe/CHANGELOG.md
+++ b/packages/jest-puppeteer-axe/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 7.18.0 (2025-02-12)
+
## 7.17.0 (2025-01-29)
## 7.16.0 (2025-01-15)
diff --git a/packages/jest-puppeteer-axe/package.json b/packages/jest-puppeteer-axe/package.json
index dd6ebdf841cba..ae6a5379f6182 100644
--- a/packages/jest-puppeteer-axe/package.json
+++ b/packages/jest-puppeteer-axe/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/jest-puppeteer-axe",
- "version": "7.17.0",
+ "version": "7.18.0",
"description": "Axe API integration with Jest and Puppeteer.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/keyboard-shortcuts/CHANGELOG.md b/packages/keyboard-shortcuts/CHANGELOG.md
index 2833f565d36aa..970c6e865eefb 100644
--- a/packages/keyboard-shortcuts/CHANGELOG.md
+++ b/packages/keyboard-shortcuts/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.18.0 (2025-02-12)
+
## 5.17.0 (2025-01-29)
## 5.16.0 (2025-01-15)
diff --git a/packages/keyboard-shortcuts/package.json b/packages/keyboard-shortcuts/package.json
index 5aefa31c6c08b..7f6592ec87f74 100644
--- a/packages/keyboard-shortcuts/package.json
+++ b/packages/keyboard-shortcuts/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/keyboard-shortcuts",
- "version": "5.17.0",
+ "version": "5.18.0",
"description": "Handling keyboard shortcuts.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/keycodes/CHANGELOG.md b/packages/keycodes/CHANGELOG.md
index dd21373711334..6a902d911f0ec 100644
--- a/packages/keycodes/CHANGELOG.md
+++ b/packages/keycodes/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.18.0 (2025-02-12)
+
## 4.17.0 (2025-01-29)
## 4.16.0 (2025-01-15)
diff --git a/packages/keycodes/package.json b/packages/keycodes/package.json
index a1bef731fef7f..bea73ad185cb9 100644
--- a/packages/keycodes/package.json
+++ b/packages/keycodes/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/keycodes",
- "version": "4.17.0",
+ "version": "4.18.0",
"description": "Keycodes utilities for WordPress. Used to check for keyboard events across browsers/operating systems.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/lazy-import/CHANGELOG.md b/packages/lazy-import/CHANGELOG.md
index 2411e89c9cfcf..3e3511261c566 100644
--- a/packages/lazy-import/CHANGELOG.md
+++ b/packages/lazy-import/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 2.18.0 (2025-02-12)
+
## 2.17.0 (2025-01-29)
## 2.16.0 (2025-01-15)
diff --git a/packages/lazy-import/package.json b/packages/lazy-import/package.json
index 0f18de9cc0cb6..8ece16ebad621 100644
--- a/packages/lazy-import/package.json
+++ b/packages/lazy-import/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/lazy-import",
- "version": "2.17.0",
+ "version": "2.18.0",
"description": "Lazily import a module, installing it automatically if missing.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/list-reusable-blocks/CHANGELOG.md b/packages/list-reusable-blocks/CHANGELOG.md
index 5a4bd4f9f29e4..7ffc1fcd9bb4b 100644
--- a/packages/list-reusable-blocks/CHANGELOG.md
+++ b/packages/list-reusable-blocks/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.18.0 (2025-02-12)
+
## 5.17.0 (2025-01-29)
## 5.16.0 (2025-01-15)
diff --git a/packages/list-reusable-blocks/package.json b/packages/list-reusable-blocks/package.json
index 92db7b36d0760..dc8332889546b 100644
--- a/packages/list-reusable-blocks/package.json
+++ b/packages/list-reusable-blocks/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/list-reusable-blocks",
- "version": "5.17.0",
+ "version": "5.18.0",
"description": "Adding Export/Import support to the reusable blocks listing.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/media-utils/CHANGELOG.md b/packages/media-utils/CHANGELOG.md
index b7d27a0681c4b..9720f3f9ac81f 100644
--- a/packages/media-utils/CHANGELOG.md
+++ b/packages/media-utils/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.18.0 (2025-02-12)
+
## 5.17.0 (2025-01-29)
## 5.16.0 (2025-01-15)
diff --git a/packages/media-utils/package.json b/packages/media-utils/package.json
index 984dcea29c9f4..90c3023e4ef1d 100644
--- a/packages/media-utils/package.json
+++ b/packages/media-utils/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/media-utils",
- "version": "5.17.0",
+ "version": "5.18.0",
"description": "WordPress Media Upload Utils.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/notices/CHANGELOG.md b/packages/notices/CHANGELOG.md
index d38828c40a4ff..678edeaf97341 100644
--- a/packages/notices/CHANGELOG.md
+++ b/packages/notices/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.18.0 (2025-02-12)
+
## 5.17.0 (2025-01-29)
## 5.16.0 (2025-01-15)
diff --git a/packages/notices/package.json b/packages/notices/package.json
index c3ca8915eb2e3..444601e732598 100644
--- a/packages/notices/package.json
+++ b/packages/notices/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/notices",
- "version": "5.17.0",
+ "version": "5.18.0",
"description": "State management for notices.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/npm-package-json-lint-config/CHANGELOG.md b/packages/npm-package-json-lint-config/CHANGELOG.md
index 620f409b37b5f..6240050bc156d 100644
--- a/packages/npm-package-json-lint-config/CHANGELOG.md
+++ b/packages/npm-package-json-lint-config/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.18.0 (2025-02-12)
+
## 5.17.0 (2025-01-29)
## 5.16.0 (2025-01-15)
diff --git a/packages/npm-package-json-lint-config/package.json b/packages/npm-package-json-lint-config/package.json
index a99d198f9f081..ffe288165b767 100644
--- a/packages/npm-package-json-lint-config/package.json
+++ b/packages/npm-package-json-lint-config/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/npm-package-json-lint-config",
- "version": "5.17.0",
+ "version": "5.18.0",
"description": "WordPress npm-package-json-lint shareable configuration.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/nux/CHANGELOG.md b/packages/nux/CHANGELOG.md
index f4e5e988fef88..0e77064fb80d7 100644
--- a/packages/nux/CHANGELOG.md
+++ b/packages/nux/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 9.18.0 (2025-02-12)
+
## 9.17.0 (2025-01-29)
## 9.16.0 (2025-01-15)
diff --git a/packages/nux/package.json b/packages/nux/package.json
index 70d3fb5cd95fd..e39643d45021d 100644
--- a/packages/nux/package.json
+++ b/packages/nux/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/nux",
- "version": "9.17.0",
+ "version": "9.18.0",
"description": "NUX (New User eXperience) module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/patterns/CHANGELOG.md b/packages/patterns/CHANGELOG.md
index 8f586f1b3ae6b..96b7af1c85bb6 100644
--- a/packages/patterns/CHANGELOG.md
+++ b/packages/patterns/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 2.18.0 (2025-02-12)
+
## 2.17.0 (2025-01-29)
## 2.16.0 (2025-01-15)
diff --git a/packages/patterns/package.json b/packages/patterns/package.json
index 5300e9c0e907d..bbe86c12d2d37 100644
--- a/packages/patterns/package.json
+++ b/packages/patterns/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/patterns",
- "version": "2.17.0",
+ "version": "2.18.0",
"description": "Management of user pattern editing.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/plugins/CHANGELOG.md b/packages/plugins/CHANGELOG.md
index de23659ea2d06..19203ad557526 100644
--- a/packages/plugins/CHANGELOG.md
+++ b/packages/plugins/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 7.18.0 (2025-02-12)
+
## 7.17.0 (2025-01-29)
## 7.16.0 (2025-01-15)
diff --git a/packages/plugins/package.json b/packages/plugins/package.json
index 1ca540e79f96f..77bc059699026 100644
--- a/packages/plugins/package.json
+++ b/packages/plugins/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/plugins",
- "version": "7.17.0",
+ "version": "7.18.0",
"description": "Plugins module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/postcss-plugins-preset/CHANGELOG.md b/packages/postcss-plugins-preset/CHANGELOG.md
index 904557314f5f2..f4843dcef722b 100644
--- a/packages/postcss-plugins-preset/CHANGELOG.md
+++ b/packages/postcss-plugins-preset/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.18.0 (2025-02-12)
+
## 5.17.0 (2025-01-29)
## 5.16.0 (2025-01-15)
diff --git a/packages/postcss-plugins-preset/package.json b/packages/postcss-plugins-preset/package.json
index 9fd2ac28deebc..5d53c1018acaa 100644
--- a/packages/postcss-plugins-preset/package.json
+++ b/packages/postcss-plugins-preset/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/postcss-plugins-preset",
- "version": "5.17.0",
+ "version": "5.18.0",
"description": "PostCSS sharable plugins preset for WordPress development.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/postcss-themes/CHANGELOG.md b/packages/postcss-themes/CHANGELOG.md
index a7212372d4aa3..12f435ac16cce 100644
--- a/packages/postcss-themes/CHANGELOG.md
+++ b/packages/postcss-themes/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 6.18.0 (2025-02-12)
+
## 6.17.0 (2025-01-29)
## 6.16.0 (2025-01-15)
diff --git a/packages/postcss-themes/package.json b/packages/postcss-themes/package.json
index 2756c600a4067..73959bef12ab5 100644
--- a/packages/postcss-themes/package.json
+++ b/packages/postcss-themes/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/postcss-themes",
- "version": "6.17.0",
+ "version": "6.18.0",
"description": "PostCSS plugin to generate theme colors.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/preferences-persistence/CHANGELOG.md b/packages/preferences-persistence/CHANGELOG.md
index b2606dac7e0b8..891fae3f0ea9e 100644
--- a/packages/preferences-persistence/CHANGELOG.md
+++ b/packages/preferences-persistence/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 2.18.0 (2025-02-12)
+
## 2.17.0 (2025-01-29)
## 2.16.0 (2025-01-15)
diff --git a/packages/preferences-persistence/package.json b/packages/preferences-persistence/package.json
index 8813cad82f6d4..b06673bf17be7 100644
--- a/packages/preferences-persistence/package.json
+++ b/packages/preferences-persistence/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/preferences-persistence",
- "version": "2.17.0",
+ "version": "2.18.0",
"description": "Persistence utilities for `wordpress/preferences`.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/preferences/CHANGELOG.md b/packages/preferences/CHANGELOG.md
index 7136304f71f4d..7b3031cf84a03 100644
--- a/packages/preferences/CHANGELOG.md
+++ b/packages/preferences/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.18.0 (2025-02-12)
+
## 4.17.0 (2025-01-29)
## 4.16.0 (2025-01-15)
diff --git a/packages/preferences/package.json b/packages/preferences/package.json
index 56778fc4f5f45..2ae1a363f8023 100644
--- a/packages/preferences/package.json
+++ b/packages/preferences/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/preferences",
- "version": "4.17.0",
+ "version": "4.18.0",
"description": "Utilities for managing WordPress preferences.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/prettier-config/CHANGELOG.md b/packages/prettier-config/CHANGELOG.md
index 5bbed9a6ec253..8dc0f13d35a61 100644
--- a/packages/prettier-config/CHANGELOG.md
+++ b/packages/prettier-config/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.18.0 (2025-02-12)
+
## 4.17.0 (2025-01-29)
## 4.16.0 (2025-01-15)
diff --git a/packages/prettier-config/package.json b/packages/prettier-config/package.json
index 80a617a8f2bd5..ed2b142a9d905 100644
--- a/packages/prettier-config/package.json
+++ b/packages/prettier-config/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/prettier-config",
- "version": "4.17.0",
+ "version": "4.18.0",
"description": "WordPress Prettier shared configuration.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/primitives/CHANGELOG.md b/packages/primitives/CHANGELOG.md
index ca06f8f317ab4..897fd9bc003d0 100644
--- a/packages/primitives/CHANGELOG.md
+++ b/packages/primitives/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.18.0 (2025-02-12)
+
## 4.17.0 (2025-01-29)
## 4.16.0 (2025-01-15)
diff --git a/packages/primitives/package.json b/packages/primitives/package.json
index 24ba82c2957af..b1dfdf1a07141 100644
--- a/packages/primitives/package.json
+++ b/packages/primitives/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/primitives",
- "version": "4.17.0",
+ "version": "4.18.0",
"description": "WordPress cross-platform primitives.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/priority-queue/CHANGELOG.md b/packages/priority-queue/CHANGELOG.md
index 54c266542c2a5..9ee8272cebff8 100644
--- a/packages/priority-queue/CHANGELOG.md
+++ b/packages/priority-queue/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 3.18.0 (2025-02-12)
+
## 3.17.0 (2025-01-29)
## 3.16.0 (2025-01-15)
diff --git a/packages/priority-queue/package.json b/packages/priority-queue/package.json
index a7c446c7ccf7f..24e72b2e6ca60 100644
--- a/packages/priority-queue/package.json
+++ b/packages/priority-queue/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/priority-queue",
- "version": "3.17.0",
+ "version": "3.18.0",
"description": "Generic browser priority queue.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/private-apis/CHANGELOG.md b/packages/private-apis/CHANGELOG.md
index d64c9e3f07a13..136a5bc225061 100644
--- a/packages/private-apis/CHANGELOG.md
+++ b/packages/private-apis/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 1.18.0 (2025-02-12)
+
## 1.17.0 (2025-01-29)
## 1.16.0 (2025-01-15)
diff --git a/packages/private-apis/package.json b/packages/private-apis/package.json
index 46d8e742b9183..e9afd612c85b1 100644
--- a/packages/private-apis/package.json
+++ b/packages/private-apis/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/private-apis",
- "version": "1.17.0",
+ "version": "1.18.0",
"description": "Internal experimental APIs for WordPress core.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/project-management-automation/CHANGELOG.md b/packages/project-management-automation/CHANGELOG.md
index 48ffdc4d03138..65339afded4a4 100644
--- a/packages/project-management-automation/CHANGELOG.md
+++ b/packages/project-management-automation/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 2.18.0 (2025-02-12)
+
## 2.17.0 (2025-01-29)
## 2.16.0 (2025-01-15)
diff --git a/packages/project-management-automation/package.json b/packages/project-management-automation/package.json
index 327df2a6036e1..4d54d5d8dc2f0 100644
--- a/packages/project-management-automation/package.json
+++ b/packages/project-management-automation/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/project-management-automation",
- "version": "2.17.0",
+ "version": "2.18.0",
"description": "GitHub Action that implements various automation to assist with managing the Gutenberg GitHub repository.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/react-i18n/CHANGELOG.md b/packages/react-i18n/CHANGELOG.md
index d5bfec54bd5f4..dd21b385ad82e 100644
--- a/packages/react-i18n/CHANGELOG.md
+++ b/packages/react-i18n/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.18.0 (2025-02-12)
+
## 4.17.0 (2025-01-29)
## 4.16.0 (2025-01-15)
diff --git a/packages/react-i18n/package.json b/packages/react-i18n/package.json
index 54a42f88855a7..179ff73c6703b 100644
--- a/packages/react-i18n/package.json
+++ b/packages/react-i18n/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/react-i18n",
- "version": "4.17.0",
+ "version": "4.18.0",
"description": "React bindings for @wordpress/i18n.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/readable-js-assets-webpack-plugin/CHANGELOG.md b/packages/readable-js-assets-webpack-plugin/CHANGELOG.md
index cd2b86202aad2..cab0024f1b29c 100644
--- a/packages/readable-js-assets-webpack-plugin/CHANGELOG.md
+++ b/packages/readable-js-assets-webpack-plugin/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 3.18.0 (2025-02-12)
+
## 3.17.0 (2025-01-29)
## 3.16.0 (2025-01-15)
diff --git a/packages/readable-js-assets-webpack-plugin/package.json b/packages/readable-js-assets-webpack-plugin/package.json
index bfd3fb573ca2f..fc4841d2a87b8 100644
--- a/packages/readable-js-assets-webpack-plugin/package.json
+++ b/packages/readable-js-assets-webpack-plugin/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/readable-js-assets-webpack-plugin",
- "version": "3.17.0",
+ "version": "3.18.0",
"description": "Generate a readable JS file for each JS asset.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/redux-routine/CHANGELOG.md b/packages/redux-routine/CHANGELOG.md
index a0cb80b0c0e4c..d9dd064173024 100644
--- a/packages/redux-routine/CHANGELOG.md
+++ b/packages/redux-routine/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.18.0 (2025-02-12)
+
## 5.17.0 (2025-01-29)
## 5.16.0 (2025-01-15)
diff --git a/packages/redux-routine/package.json b/packages/redux-routine/package.json
index 5a75aef5c5a19..43b6e155df5bd 100644
--- a/packages/redux-routine/package.json
+++ b/packages/redux-routine/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/redux-routine",
- "version": "5.17.0",
+ "version": "5.18.0",
"description": "Redux middleware for generator coroutines.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/reusable-blocks/CHANGELOG.md b/packages/reusable-blocks/CHANGELOG.md
index 7c61ee2f0256f..8ab2f36ff5b54 100644
--- a/packages/reusable-blocks/CHANGELOG.md
+++ b/packages/reusable-blocks/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.18.0 (2025-02-12)
+
## 5.17.0 (2025-01-29)
## 5.16.0 (2025-01-15)
diff --git a/packages/reusable-blocks/package.json b/packages/reusable-blocks/package.json
index e34d36dd4c8b8..ba0e48edfc828 100644
--- a/packages/reusable-blocks/package.json
+++ b/packages/reusable-blocks/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/reusable-blocks",
- "version": "5.17.0",
+ "version": "5.18.0",
"description": "Reusable blocks utilities.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/rich-text/CHANGELOG.md b/packages/rich-text/CHANGELOG.md
index 137a982adce9e..99dab2b6d7d54 100644
--- a/packages/rich-text/CHANGELOG.md
+++ b/packages/rich-text/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 7.18.0 (2025-02-12)
+
## 7.17.0 (2025-01-29)
## 7.16.0 (2025-01-15)
diff --git a/packages/rich-text/package.json b/packages/rich-text/package.json
index 9f7a576813456..ffdb4d3afc99b 100644
--- a/packages/rich-text/package.json
+++ b/packages/rich-text/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/rich-text",
- "version": "7.17.0",
+ "version": "7.18.0",
"description": "Rich text value and manipulation API.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/router/CHANGELOG.md b/packages/router/CHANGELOG.md
index 36ed9891d807e..856f3659685b0 100644
--- a/packages/router/CHANGELOG.md
+++ b/packages/router/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 1.18.0 (2025-02-12)
+
## 1.17.0 (2025-01-29)
## 1.16.0 (2025-01-15)
diff --git a/packages/router/package.json b/packages/router/package.json
index 9ddd8ef1ab9f2..019f00bb33e4e 100644
--- a/packages/router/package.json
+++ b/packages/router/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/router",
- "version": "1.17.0",
+ "version": "1.18.0",
"description": "Router API for WordPress pages.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/scripts/CHANGELOG.md b/packages/scripts/CHANGELOG.md
index f5ad9b8eb3436..5924f9a938095 100644
--- a/packages/scripts/CHANGELOG.md
+++ b/packages/scripts/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 30.11.0 (2025-02-12)
+
## 30.10.0 (2025-01-29)
## 30.9.0 (2025-01-15)
diff --git a/packages/scripts/package.json b/packages/scripts/package.json
index 675c25c0b5480..31cb6f70a10c2 100644
--- a/packages/scripts/package.json
+++ b/packages/scripts/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/scripts",
- "version": "30.10.0",
+ "version": "30.11.0",
"description": "Collection of reusable scripts for WordPress development.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/server-side-render/CHANGELOG.md b/packages/server-side-render/CHANGELOG.md
index ffb662d503db5..65e86fe2f2539 100644
--- a/packages/server-side-render/CHANGELOG.md
+++ b/packages/server-side-render/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 5.18.0 (2025-02-12)
+
## 5.17.0 (2025-01-29)
## 5.16.0 (2025-01-15)
diff --git a/packages/server-side-render/package.json b/packages/server-side-render/package.json
index 70fcfa4997807..ad4511d3b4c63 100644
--- a/packages/server-side-render/package.json
+++ b/packages/server-side-render/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/server-side-render",
- "version": "5.17.0",
+ "version": "5.18.0",
"description": "The component used with WordPress to server-side render a preview of dynamic blocks to display in the editor.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/shortcode/CHANGELOG.md b/packages/shortcode/CHANGELOG.md
index bd36355f27790..5eb36c1395979 100644
--- a/packages/shortcode/CHANGELOG.md
+++ b/packages/shortcode/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.18.0 (2025-02-12)
+
## 4.17.0 (2025-01-29)
## 4.16.0 (2025-01-15)
diff --git a/packages/shortcode/package.json b/packages/shortcode/package.json
index b96126f5c344b..9da8902e6309c 100644
--- a/packages/shortcode/package.json
+++ b/packages/shortcode/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/shortcode",
- "version": "4.17.0",
+ "version": "4.18.0",
"description": "Shortcode module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/style-engine/CHANGELOG.md b/packages/style-engine/CHANGELOG.md
index d1d0fc4c95090..5bdb3fa37adfa 100644
--- a/packages/style-engine/CHANGELOG.md
+++ b/packages/style-engine/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 2.18.0 (2025-02-12)
+
## 2.17.0 (2025-01-29)
## 2.16.0 (2025-01-15)
diff --git a/packages/style-engine/package.json b/packages/style-engine/package.json
index 5ce48d4e7da0f..9aa95d240eb9e 100644
--- a/packages/style-engine/package.json
+++ b/packages/style-engine/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/style-engine",
- "version": "2.17.0",
+ "version": "2.18.0",
"description": "A suite of parsers and compilers for WordPress styles.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/stylelint-config/CHANGELOG.md b/packages/stylelint-config/CHANGELOG.md
index dc326ef3b07f7..3d8e93519d175 100644
--- a/packages/stylelint-config/CHANGELOG.md
+++ b/packages/stylelint-config/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 23.10.0 (2025-02-12)
+
## 23.9.0 (2025-01-29)
## 23.8.0 (2025-01-15)
diff --git a/packages/stylelint-config/package.json b/packages/stylelint-config/package.json
index 4c6ccffcc0c53..dbaba3adc7da0 100644
--- a/packages/stylelint-config/package.json
+++ b/packages/stylelint-config/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/stylelint-config",
- "version": "23.9.0",
+ "version": "23.10.0",
"description": "stylelint config for WordPress development.",
"author": "The WordPress Contributors",
"license": "MIT",
diff --git a/packages/sync/CHANGELOG.md b/packages/sync/CHANGELOG.md
index bbd1aaf688db4..eccfc5a851cd7 100644
--- a/packages/sync/CHANGELOG.md
+++ b/packages/sync/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 1.18.0 (2025-02-12)
+
## 1.17.0 (2025-01-29)
## 1.16.0 (2025-01-15)
diff --git a/packages/sync/package.json b/packages/sync/package.json
index 45200f2068e3c..871dff74c13a8 100644
--- a/packages/sync/package.json
+++ b/packages/sync/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/sync",
- "version": "1.17.0",
+ "version": "1.18.0",
"description": "Sync Data.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/token-list/CHANGELOG.md b/packages/token-list/CHANGELOG.md
index 0878eb5989bc5..6aba8cca74cc0 100644
--- a/packages/token-list/CHANGELOG.md
+++ b/packages/token-list/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 3.18.0 (2025-02-12)
+
## 3.17.0 (2025-01-29)
## 3.16.0 (2025-01-15)
diff --git a/packages/token-list/package.json b/packages/token-list/package.json
index cb067e63ca787..440c99d53f21c 100644
--- a/packages/token-list/package.json
+++ b/packages/token-list/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/token-list",
- "version": "3.17.0",
+ "version": "3.18.0",
"description": "Constructable, plain JavaScript DOMTokenList implementation, supporting non-browser runtimes.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/undo-manager/CHANGELOG.md b/packages/undo-manager/CHANGELOG.md
index da4c45158d651..550a82025d72d 100644
--- a/packages/undo-manager/CHANGELOG.md
+++ b/packages/undo-manager/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 1.18.0 (2025-02-12)
+
## 1.17.0 (2025-01-29)
## 1.16.0 (2025-01-15)
diff --git a/packages/undo-manager/package.json b/packages/undo-manager/package.json
index 1cd7f11fdafe2..4024255022d14 100644
--- a/packages/undo-manager/package.json
+++ b/packages/undo-manager/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/undo-manager",
- "version": "1.17.0",
+ "version": "1.18.0",
"description": "A small package to manage undo/redo.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/upload-media/CHANGELOG.md b/packages/upload-media/CHANGELOG.md
index c877455493a7b..17600b46bce9b 100644
--- a/packages/upload-media/CHANGELOG.md
+++ b/packages/upload-media/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 0.3.0 (2025-02-12)
+
## 0.2.0 (2025-01-29)
## 0.1.0 (2025-01-15)
diff --git a/packages/upload-media/package.json b/packages/upload-media/package.json
index 3d4e0171df1f7..e2b44173b7624 100644
--- a/packages/upload-media/package.json
+++ b/packages/upload-media/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/upload-media",
- "version": "0.2.0",
+ "version": "0.3.0",
"description": "Core media upload logic.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/url/CHANGELOG.md b/packages/url/CHANGELOG.md
index eb97783d31cd3..2a24cd002b502 100644
--- a/packages/url/CHANGELOG.md
+++ b/packages/url/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.18.0 (2025-02-12)
+
## 4.17.0 (2025-01-29)
## 4.16.0 (2025-01-15)
diff --git a/packages/url/package.json b/packages/url/package.json
index 9ff808bbe1ef2..eff6262667a15 100644
--- a/packages/url/package.json
+++ b/packages/url/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/url",
- "version": "4.17.0",
+ "version": "4.18.0",
"description": "WordPress URL utilities.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/viewport/CHANGELOG.md b/packages/viewport/CHANGELOG.md
index d5426d9cac711..376a76ae3e882 100644
--- a/packages/viewport/CHANGELOG.md
+++ b/packages/viewport/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 6.18.0 (2025-02-12)
+
## 6.17.0 (2025-01-29)
## 6.16.0 (2025-01-15)
diff --git a/packages/viewport/package.json b/packages/viewport/package.json
index 8a4ae23e02a3c..00c4ea5c073a3 100644
--- a/packages/viewport/package.json
+++ b/packages/viewport/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/viewport",
- "version": "6.17.0",
+ "version": "6.18.0",
"description": "Viewport module for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/warning/CHANGELOG.md b/packages/warning/CHANGELOG.md
index 4d39133ca0e5a..b16e6934e2b3b 100644
--- a/packages/warning/CHANGELOG.md
+++ b/packages/warning/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 3.18.0 (2025-02-12)
+
## 3.17.0 (2025-01-29)
## 3.16.0 (2025-01-15)
diff --git a/packages/warning/package.json b/packages/warning/package.json
index 098986e2c6c03..760a6360f1716 100644
--- a/packages/warning/package.json
+++ b/packages/warning/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/warning",
- "version": "3.17.0",
+ "version": "3.18.0",
"description": "Warning utility for WordPress.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/widgets/CHANGELOG.md b/packages/widgets/CHANGELOG.md
index cac2955edb6b1..85239f3c535b3 100644
--- a/packages/widgets/CHANGELOG.md
+++ b/packages/widgets/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.18.0 (2025-02-12)
+
## 4.17.0 (2025-01-29)
## 4.16.0 (2025-01-15)
diff --git a/packages/widgets/package.json b/packages/widgets/package.json
index 782857be40898..7ac9729e0c541 100644
--- a/packages/widgets/package.json
+++ b/packages/widgets/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/widgets",
- "version": "4.17.0",
+ "version": "4.18.0",
"description": "Functionality used by the widgets block editor in the Widgets screen and the Customizer.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/packages/wordcount/CHANGELOG.md b/packages/wordcount/CHANGELOG.md
index 03b7132ba4b39..42c87b282a0a5 100644
--- a/packages/wordcount/CHANGELOG.md
+++ b/packages/wordcount/CHANGELOG.md
@@ -2,6 +2,8 @@
## Unreleased
+## 4.18.0 (2025-02-12)
+
## 4.17.0 (2025-01-29)
## 4.16.0 (2025-01-15)
diff --git a/packages/wordcount/package.json b/packages/wordcount/package.json
index 5fbe5c9d20b82..34690e0d72dc5 100644
--- a/packages/wordcount/package.json
+++ b/packages/wordcount/package.json
@@ -1,6 +1,6 @@
{
"name": "@wordpress/wordcount",
- "version": "4.17.0",
+ "version": "4.18.0",
"description": "WordPress word count utility.",
"author": "The WordPress Contributors",
"license": "GPL-2.0-or-later",
diff --git a/schemas/json/wp-env.json b/schemas/json/wp-env.json
index 2a98cb3d0d263..bc54c6ee9ea2e 100644
--- a/schemas/json/wp-env.json
+++ b/schemas/json/wp-env.json
@@ -149,7 +149,12 @@
"$ref": "#/definitions/wpEnvPropertyNames"
},
{
- "enum": [ "$schema", "env", "testsPort", "lifecycleScripts" ]
+ "enum": [
+ "$schema",
+ "env",
+ "testsPort",
+ "lifecycleScripts"
+ ]
}
]
}
diff --git a/test/e2e/specs/editor/blocks/navigation.spec.js b/test/e2e/specs/editor/blocks/navigation.spec.js
index 769e30c99dab3..c04ef78811e06 100644
--- a/test/e2e/specs/editor/blocks/navigation.spec.js
+++ b/test/e2e/specs/editor/blocks/navigation.spec.js
@@ -276,7 +276,7 @@ test.describe( 'Navigation block', () => {
await pageUtils.pressKeys( 'ArrowDown' );
// remove the child link
- await pageUtils.pressKeys( 'shift+Backspace' );
+ await pageUtils.pressKeys( 'primaryShift+Backspace' );
const submenuBlock2 = editor.canvas.getByRole( 'document', {
name: 'Block: Submenu',
@@ -494,7 +494,7 @@ test.describe( 'Navigation block', () => {
await pageUtils.pressKeys( 'ArrowDown', { times: 4 } );
await navigation.checkLabelFocus( 'wordpress.org' );
// Delete the nav link
- await pageUtils.pressKeys( 'shift+Backspace' );
+ await pageUtils.pressKeys( 'primaryShift+Backspace' );
// Focus moved to sibling
await navigation.checkLabelFocus( 'Dog' );
// Add a link back so we can delete the first submenu link and see if focus returns to the parent submenu item
@@ -507,15 +507,15 @@ test.describe( 'Navigation block', () => {
await pageUtils.pressKeys( 'ArrowUp', { times: 2 } );
await navigation.checkLabelFocus( 'Dog' );
// Delete the nav link
- await pageUtils.pressKeys( 'shift+Backspace' );
+ await pageUtils.pressKeys( 'primaryShift+Backspace' );
await pageUtils.pressKeys( 'ArrowDown' );
// Focus moved to parent submenu item
await navigation.checkLabelFocus( 'example.com' );
// Deleting this should move focus to the sibling item
- await pageUtils.pressKeys( 'shift+Backspace' );
+ await pageUtils.pressKeys( 'primaryShift+Backspace' );
await navigation.checkLabelFocus( 'Cat' );
// Deleting with no more siblings should focus the navigation block again
- await pageUtils.pressKeys( 'shift+Backspace' );
+ await pageUtils.pressKeys( 'primaryShift+Backspace' );
await expect( navBlock ).toBeFocused();
// Wait until the nav block inserter is visible before we continue.
await expect( navBlockInserter ).toBeVisible();
diff --git a/test/e2e/specs/editor/various/block-deletion.spec.js b/test/e2e/specs/editor/various/block-deletion.spec.js
index 5e4ead97c986f..f90923c6dc382 100644
--- a/test/e2e/specs/editor/various/block-deletion.spec.js
+++ b/test/e2e/specs/editor/various/block-deletion.spec.js
@@ -134,7 +134,7 @@ test.describe( 'Block deletion', () => {
).toBeFocused();
// Remove the current paragraph via dedicated keyboard shortcut.
- await pageUtils.pressKeys( 'shift+Backspace' );
+ await pageUtils.pressKeys( 'primaryShift+Backspace' );
// Ensure the last block was removed.
await expect.poll( editor.getBlocks ).toMatchObject( [
diff --git a/test/e2e/specs/editor/various/block-editor-keyboard-shortcuts.spec.js b/test/e2e/specs/editor/various/block-editor-keyboard-shortcuts.spec.js
index 967baccfcbe4e..a368d4b7f0251 100644
--- a/test/e2e/specs/editor/various/block-editor-keyboard-shortcuts.spec.js
+++ b/test/e2e/specs/editor/various/block-editor-keyboard-shortcuts.spec.js
@@ -192,7 +192,7 @@ test.describe( 'Block editor keyboard shortcuts', () => {
.getByRole( 'menuitem', { name: 'Create pattern' } )
.click();
await page
- .getByRole( 'dialog', { name: 'add new pattern' } )
+ .getByRole( 'dialog', { name: 'add pattern' } )
.getByRole( 'textbox', { name: 'Name' } )
.fill( 'hi' );
diff --git a/test/e2e/specs/editor/various/block-locking.spec.js b/test/e2e/specs/editor/various/block-locking.spec.js
index b31fc9e2cd140..cf81fede4c31d 100644
--- a/test/e2e/specs/editor/various/block-locking.spec.js
+++ b/test/e2e/specs/editor/various/block-locking.spec.js
@@ -133,7 +133,7 @@ test.describe( 'Block Locking', () => {
).toBeVisible();
await paragraph.click();
- await pageUtils.pressKeys( 'shift+Backspace' );
+ await pageUtils.pressKeys( 'primaryShift+Backspace' );
await expect.poll( editor.getBlocks ).toMatchObject( [
{
diff --git a/test/e2e/specs/editor/various/inserting-blocks.spec.js b/test/e2e/specs/editor/various/inserting-blocks.spec.js
index 3cc369f75f223..4de9f736ceafa 100644
--- a/test/e2e/specs/editor/various/inserting-blocks.spec.js
+++ b/test/e2e/specs/editor/various/inserting-blocks.spec.js
@@ -269,7 +269,7 @@ test.describe( 'Inserting blocks (@firefox, @webkit)', () => {
.click();
await page.getByRole( 'menuitem', { name: 'Create pattern' } ).click();
const createPatternDialog = page.getByRole( 'dialog', {
- name: 'add new pattern',
+ name: 'add pattern',
} );
await createPatternDialog
.getByRole( 'textbox', { name: 'Name' } )
diff --git a/test/e2e/specs/editor/various/list-view.spec.js b/test/e2e/specs/editor/various/list-view.spec.js
index 17f82ce1b76e3..988683c8d11aa 100644
--- a/test/e2e/specs/editor/various/list-view.spec.js
+++ b/test/e2e/specs/editor/various/list-view.spec.js
@@ -812,8 +812,8 @@ test.describe( 'List View', () => {
// Delete remaining blocks.
// Keyboard shortcut should also work.
- await pageUtils.pressKeys( 'shift+Backspace' );
- await pageUtils.pressKeys( 'shift+Backspace' );
+ await pageUtils.pressKeys( 'primaryShift+Backspace' );
+ await pageUtils.pressKeys( 'primaryShift+Backspace' );
await expect
.poll(
listViewUtils.getBlocksWithA11yAttributes,
@@ -845,7 +845,7 @@ test.describe( 'List View', () => {
{ name: 'core/heading', selected: false },
] );
- await pageUtils.pressKeys( 'shift+Backspace' );
+ await pageUtils.pressKeys( 'primaryShift+Backspace' );
await expect
.poll(
listViewUtils.getBlocksWithA11yAttributes,
@@ -868,7 +868,11 @@ test.describe( 'List View', () => {
.getByRole( 'gridcell', { name: 'File' } )
.getByRole( 'link' )
.focus();
- for ( const keys of [ 'Delete', 'Backspace', 'shift+Backspace' ] ) {
+ for ( const keys of [
+ 'Delete',
+ 'Backspace',
+ 'primaryShift+Backspace',
+ ] ) {
await pageUtils.pressKeys( keys );
await expect
.poll(
@@ -1136,7 +1140,7 @@ test.describe( 'List View', () => {
optionsForFileMenu,
'Pressing Space should also open the menu dropdown'
).toBeVisible();
- await pageUtils.pressKeys( 'shift+Backspace' ); // Keyboard shortcut for Delete.
+ await pageUtils.pressKeys( 'primaryShift+Backspace' ); // Keyboard shortcut for Delete.
await expect
.poll(
listViewUtils.getBlocksWithA11yAttributes,
@@ -1156,7 +1160,7 @@ test.describe( 'List View', () => {
optionsForFileMenu.getByRole( 'menuitem', { name: 'Delete' } ),
'The delete menu item should be hidden for locked blocks'
).toBeHidden();
- await pageUtils.pressKeys( 'shift+Backspace' );
+ await pageUtils.pressKeys( 'primaryShift+Backspace' );
await expect
.poll(
listViewUtils.getBlocksWithA11yAttributes,
diff --git a/test/e2e/specs/editor/various/pattern-overrides.spec.js b/test/e2e/specs/editor/various/pattern-overrides.spec.js
index 145fa9a93bab1..d3ebf35761595 100644
--- a/test/e2e/specs/editor/various/pattern-overrides.spec.js
+++ b/test/e2e/specs/editor/various/pattern-overrides.spec.js
@@ -40,16 +40,16 @@ test.describe( 'Pattern Overrides', () => {
await page
.getByRole( 'region', { name: 'Patterns content' } )
- .getByRole( 'button', { name: 'add new pattern' } )
+ .getByRole( 'button', { name: 'add pattern' } )
.click();
await page
- .getByRole( 'menu', { name: 'add new pattern' } )
- .getByRole( 'menuitem', { name: 'add new pattern' } )
+ .getByRole( 'menu', { name: 'add pattern' } )
+ .getByRole( 'menuitem', { name: 'add pattern' } )
.click();
const createPatternDialog = page.getByRole( 'dialog', {
- name: 'add new pattern',
+ name: 'add pattern',
} );
await createPatternDialog
.getByRole( 'textbox', { name: 'Name' } )
diff --git a/test/e2e/specs/editor/various/patterns.spec.js b/test/e2e/specs/editor/various/patterns.spec.js
index a3af79289f270..f5f73169a0f7f 100644
--- a/test/e2e/specs/editor/various/patterns.spec.js
+++ b/test/e2e/specs/editor/various/patterns.spec.js
@@ -37,7 +37,7 @@ test.describe( 'Unsynced pattern', () => {
await page.getByRole( 'menuitem', { name: 'Create pattern' } ).click();
const createPatternDialog = page.getByRole( 'dialog', {
- name: 'add new pattern',
+ name: 'add pattern',
} );
await createPatternDialog
.getByRole( 'textbox', { name: 'Name' } )
@@ -136,7 +136,7 @@ test.describe( 'Synced pattern', () => {
await page.getByRole( 'menuitem', { name: 'Create pattern' } ).click();
const createPatternDialog = page.getByRole( 'dialog', {
- name: 'add new pattern',
+ name: 'add pattern',
} );
await createPatternDialog
.getByRole( 'textbox', { name: 'Name' } )
@@ -376,7 +376,7 @@ test.describe( 'Synced pattern', () => {
await editor.clickBlockOptionsMenuItem( 'Create pattern' );
const createPatternDialog = page.getByRole( 'dialog', {
- name: 'add new pattern',
+ name: 'add pattern',
} );
await createPatternDialog
.getByRole( 'textbox', { name: 'Name' } )
@@ -426,7 +426,7 @@ test.describe( 'Synced pattern', () => {
await editor.clickBlockOptionsMenuItem( 'Create pattern' );
const createPatternDialog = editor.page.getByRole( 'dialog', {
- name: 'add new pattern',
+ name: 'add pattern',
} );
await createPatternDialog
.getByRole( 'textbox', { name: 'Name' } )
@@ -610,7 +610,7 @@ test.describe( 'Synced pattern', () => {
await editor.clickBlockOptionsMenuItem( 'Create pattern' );
const createPatternDialog = editor.page.getByRole( 'dialog', {
- name: 'add new pattern',
+ name: 'add pattern',
} );
await createPatternDialog
.getByRole( 'textbox', { name: 'Name' } )
diff --git a/test/e2e/specs/editor/various/taxonomies.spec.js b/test/e2e/specs/editor/various/taxonomies.spec.js
index efd8c9c6ee7fe..3c8231facd3b7 100644
--- a/test/e2e/specs/editor/various/taxonomies.spec.js
+++ b/test/e2e/specs/editor/various/taxonomies.spec.js
@@ -79,9 +79,7 @@ test.describe( 'Taxonomies', () => {
const tagName = 'tag-' + generateRandomNumber();
const tags = page.locator( '.components-form-token-field__token-text' );
- await page
- .getByRole( 'combobox', { name: 'Add New Tag' } )
- .fill( tagName );
+ await page.getByRole( 'combobox', { name: 'Add tag' } ).fill( tagName );
await page.keyboard.press( 'Enter' );
await expect( tags ).toHaveCount( 1 );
@@ -116,9 +114,7 @@ test.describe( 'Taxonomies', () => {
const tagName = "tag'-" + generateRandomNumber();
const tags = page.locator( '.components-form-token-field__token-text' );
- await page
- .getByRole( 'combobox', { name: 'Add New Tag' } )
- .fill( tagName );
+ await page.getByRole( 'combobox', { name: 'Add tag' } ).fill( tagName );
await page.keyboard.press( 'Enter' );
await expect( tags ).toHaveCount( 1 );
diff --git a/test/e2e/specs/editor/various/writing-flow.spec.js b/test/e2e/specs/editor/various/writing-flow.spec.js
index 4077d6dcc5820..da3e62e35df53 100644
--- a/test/e2e/specs/editor/various/writing-flow.spec.js
+++ b/test/e2e/specs/editor/various/writing-flow.spec.js
@@ -1088,7 +1088,7 @@ test.describe( 'Writing Flow (@firefox, @webkit)', () => {
await editor.clickBlockOptionsMenuItem( 'Create pattern' );
const createPatternDialog = editor.page.getByRole( 'dialog', {
- name: 'add new pattern',
+ name: 'add pattern',
} );
await createPatternDialog
.getByRole( 'textbox', { name: 'Name' } )
diff --git a/test/e2e/specs/site-editor/block-style-variations.spec.js b/test/e2e/specs/site-editor/block-style-variations.spec.js
index 1fa8972d34d6c..1aa3c576b72c0 100644
--- a/test/e2e/specs/site-editor/block-style-variations.spec.js
+++ b/test/e2e/specs/site-editor/block-style-variations.spec.js
@@ -302,7 +302,7 @@ class SiteEditorBlockStyleVariations {
async function draftNewPage( page ) {
await page.getByRole( 'button', { name: 'Pages' } ).click();
- await page.getByRole( 'button', { name: 'Add new page' } ).click();
+ await page.getByRole( 'button', { name: 'Add page' } ).click();
await page
.locator( 'role=dialog[name="Draft new: page"i]' )
.locator( 'role=textbox[name="title"i]' )
diff --git a/test/e2e/specs/site-editor/pages.spec.js b/test/e2e/specs/site-editor/pages.spec.js
index 54f8a64e067cb..1a8ab33b9e884 100644
--- a/test/e2e/specs/site-editor/pages.spec.js
+++ b/test/e2e/specs/site-editor/pages.spec.js
@@ -5,7 +5,7 @@ const { test, expect } = require( '@wordpress/e2e-test-utils-playwright' );
async function draftNewPage( page ) {
await page.getByRole( 'button', { name: 'Pages' } ).click();
- await page.getByRole( 'button', { name: 'Add new page' } ).click();
+ await page.getByRole( 'button', { name: 'Add page' } ).click();
await page
.locator( 'role=dialog[name="Draft new: page"i]' )
.locator( 'role=textbox[name="title"i]' )
@@ -247,7 +247,7 @@ test.describe( 'Pages', () => {
// Create a custom template first.
const templateName = 'demo';
await page.getByRole( 'button', { name: 'Templates' } ).click();
- await page.getByRole( 'button', { name: 'Add New Template' } ).click();
+ await page.getByRole( 'button', { name: 'Add template' } ).click();
await page
.getByRole( 'button', {
name: 'A custom template can be manually applied to any post or page.',
diff --git a/test/e2e/specs/site-editor/patterns.spec.js b/test/e2e/specs/site-editor/patterns.spec.js
index 162ec15146c67..dcb5d8c413877 100644
--- a/test/e2e/specs/site-editor/patterns.spec.js
+++ b/test/e2e/specs/site-editor/patterns.spec.js
@@ -43,21 +43,21 @@ test.describe( 'Patterns', () => {
await expect( patterns.content ).toContainText( 'No results' );
await patterns.content
- .getByRole( 'button', { name: 'add new pattern' } )
+ .getByRole( 'button', { name: 'add pattern' } )
.click();
const addNewMenuItem = page
.getByRole( 'menu', {
- name: 'add new pattern',
+ name: 'add pattern',
} )
.getByRole( 'menuitem', {
- name: 'add new pattern',
+ name: 'add pattern',
} );
await expect( addNewMenuItem ).toBeFocused();
await addNewMenuItem.click();
const createPatternDialog = page.getByRole( 'dialog', {
- name: 'add new pattern',
+ name: 'add pattern',
} );
await createPatternDialog
.getByRole( 'textbox', { name: 'Name' } )
diff --git a/test/e2e/specs/site-editor/site-editor-url-navigation.spec.js b/test/e2e/specs/site-editor/site-editor-url-navigation.spec.js
index a0cc0af5463ae..580b106022715 100644
--- a/test/e2e/specs/site-editor/site-editor-url-navigation.spec.js
+++ b/test/e2e/specs/site-editor/site-editor-url-navigation.spec.js
@@ -33,7 +33,7 @@ test.describe( 'Site editor url navigation', () => {
await admin.visitSiteEditor();
await page.click( 'role=button[name="Templates"]' );
- await page.click( 'role=button[name="Add New Template"i]' );
+ await page.click( 'role=button[name="Add Template"i]' );
await page
.getByRole( 'button', {
name: 'Single item: Post',
@@ -54,10 +54,10 @@ test.describe( 'Site editor url navigation', () => {
} ) => {
await admin.visitSiteEditor();
await page.click( 'role=button[name="Patterns"i]' );
- await page.click( 'role=button[name="add new pattern"i]' );
+ await page.click( 'role=button[name="add pattern"i]' );
await page
- .getByRole( 'menu', { name: 'add new pattern' } )
- .getByRole( 'menuitem', { name: 'add new template part' } )
+ .getByRole( 'menu', { name: 'add pattern' } )
+ .getByRole( 'menuitem', { name: 'add template part' } )
.click();
// Fill in a name in the dialog that pops up.
await page.type( 'role=dialog >> role=textbox[name="Name"i]', 'Demo' );
diff --git a/test/e2e/specs/site-editor/template-part.spec.js b/test/e2e/specs/site-editor/template-part.spec.js
index 9d5c0ca05b0d9..d3feeb866619a 100644
--- a/test/e2e/specs/site-editor/template-part.spec.js
+++ b/test/e2e/specs/site-editor/template-part.spec.js
@@ -375,7 +375,7 @@ test.describe( 'Template Part', () => {
await editor.selectBlocks( siteTitle );
// Remove the default site title block.
- await pageUtils.pressKeys( 'shift+Backspace' );
+ await pageUtils.pressKeys( 'primaryShift+Backspace' );
// Insert a group block with a Site Title block inside.
await editor.insertBlock( {
diff --git a/test/e2e/specs/site-editor/template-registration.spec.js b/test/e2e/specs/site-editor/template-registration.spec.js
index 9856db9713038..4f35d81737ae2 100644
--- a/test/e2e/specs/site-editor/template-registration.spec.js
+++ b/test/e2e/specs/site-editor/template-registration.spec.js
@@ -275,7 +275,7 @@ test.describe( 'Block template registration', () => {
await admin.visitSiteEditor( {
postType: 'wp_template',
} );
- await page.getByLabel( 'Add New Template' ).click();
+ await page.getByLabel( 'Add template' ).click();
await page.getByRole( 'button', { name: 'Author Archives' } ).click();
await page
.getByRole( 'button', { name: 'Author For a specific item' } )
diff --git a/test/e2e/specs/site-editor/templates.spec.js b/test/e2e/specs/site-editor/templates.spec.js
index 0c43fa02fc73b..7eeb61ec05746 100644
--- a/test/e2e/specs/site-editor/templates.spec.js
+++ b/test/e2e/specs/site-editor/templates.spec.js
@@ -14,7 +14,7 @@ test.describe( 'Templates', () => {
const templateName = 'demo';
await admin.visitSiteEditor();
await page.getByRole( 'button', { name: 'Templates' } ).click();
- await page.getByRole( 'button', { name: 'Add New Template' } ).click();
+ await page.getByRole( 'button', { name: 'Add template' } ).click();
await page
.getByRole( 'button', {
name: 'A custom template can be manually applied to any post or page.',
diff --git a/test/e2e/specs/widgets/editing-widgets.spec.js b/test/e2e/specs/widgets/editing-widgets.spec.js
index f4d160f8a36db..648b04d3e202b 100644
--- a/test/e2e/specs/widgets/editing-widgets.spec.js
+++ b/test/e2e/specs/widgets/editing-widgets.spec.js
@@ -573,7 +573,7 @@ test.describe( 'Widgets screen', () => {
.getByRole( 'document', { name: 'Block: Paragraph' } )
.filter( { hasText: 'Second Paragraph' } )
.focus();
- await pageUtils.pressKeys( 'shift+Backspace' );
+ await pageUtils.pressKeys( 'primaryShift+Backspace' );
await widgetsScreen.saveWidgets();
await expect.poll( widgetsScreen.getWidgetAreaBlocks ).toMatchObject( {