Commit d182c8efc4 for wordpress.org

commit d182c8efc488e321b4e30f3c9304d72b6a2b7444
Author: desrosj <desrosj@git.wordpress.org>
Date:   Mon Nov 9 20:08:04 2026 +0000

    Twenty Twenty: Replace the abandoned `stylelint-a11y` dependency.

    The `stylelint-a11y` package has not been updated in over 7 years and is incompatible with newer versions of Stylelint and Node.js. This replaces it with `@double-great/stylelint-a11y`, an actively maintained fork, and replaces the deprecated `stylelint-config-wordpress` configuration with `@wordpress/stylelint-config`.

    The `a11y/selector-pseudo-class-focus` rule is disabled for the block editor's Button and File block hover styles. These elements are editable text fields in the editor, so a `:focus` underline would be displayed the entire time the text is being edited.

    Props sabernhardt, desrosj.
    Fixes #66004.

    Built from https://develop.svn.wordpress.org/trunk@65355


    git-svn-id: http://core.svn.wordpress.org/trunk@64495 1a063a9b-81f0-0310-95a4-ce76da25c4cd

diff --git a/wp-content/themes/twentytwenty/.stylelintrc.json b/wp-content/themes/twentytwenty/.stylelintrc.json
index f88810795c..ec8790beab 100644
--- a/wp-content/themes/twentytwenty/.stylelintrc.json
+++ b/wp-content/themes/twentytwenty/.stylelintrc.json
@@ -1,8 +1,8 @@
 {
 	"extends": [
-		"stylelint-config-wordpress"
+		"@wordpress/stylelint-config"
 	],
-	"plugins": ["stylelint-a11y"],
+	"plugins": ["@double-great/stylelint-a11y"],
 	"rules": {
 		"font-family-no-missing-generic-family-keyword": null,
 		"no-descending-specificity": null,
diff --git a/wp-content/themes/twentytwenty/assets/css/editor-style-block-rtl.css b/wp-content/themes/twentytwenty/assets/css/editor-style-block-rtl.css
index 8b685f03e3..8c6eef23a6 100644
--- a/wp-content/themes/twentytwenty/assets/css/editor-style-block-rtl.css
+++ b/wp-content/themes/twentytwenty/assets/css/editor-style-block-rtl.css
@@ -957,6 +957,11 @@ hr.wp-block-separator.is-style-dots::before {
 	line-height: 1.1;
 }

+/*
+ * In the editor, these elements are editable text fields. A focus underline
+ * would only appear while typing, so it is intentionally omitted here.
+ */
+/* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
 .editor-styles-wrapper .wp-block-button__link:hover,
 .editor-styles-wrapper .wp-block-file__button:hover {
 	text-decoration: underline;
diff --git a/wp-content/themes/twentytwenty/assets/css/editor-style-block.css b/wp-content/themes/twentytwenty/assets/css/editor-style-block.css
index 9fbac5b956..b9ffc7c261 100644
--- a/wp-content/themes/twentytwenty/assets/css/editor-style-block.css
+++ b/wp-content/themes/twentytwenty/assets/css/editor-style-block.css
@@ -961,6 +961,11 @@ hr.wp-block-separator.is-style-dots::before {
 	line-height: 1.1;
 }

+/*
+ * In the editor, these elements are editable text fields. A focus underline
+ * would only appear while typing, so it is intentionally omitted here.
+ */
+/* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
 .editor-styles-wrapper .wp-block-button__link:hover,
 .editor-styles-wrapper .wp-block-file__button:hover {
 	text-decoration: underline;
diff --git a/wp-content/themes/twentytwenty/package-lock.json b/wp-content/themes/twentytwenty/package-lock.json
index a027d7547f..41a64837a5 100644
--- a/wp-content/themes/twentytwenty/package-lock.json
+++ b/wp-content/themes/twentytwenty/package-lock.json
@@ -9,14 +9,14 @@
 			"version": "3.3.0",
 			"license": "GPL-2.0-or-later",
 			"devDependencies": {
+				"@double-great/stylelint-a11y": "^3.8.3",
 				"@wordpress/browserslist-config": "^6.34.0",
 				"@wordpress/scripts": "^30.27.0",
 				"autoprefixer": "^10.4.22",
 				"concurrently": "^9.2.1",
 				"postcss": "^8.5.6",
 				"postcss-cli": "^11.0.1",
-				"rtlcss": "^4.3.0",
-				"stylelint-a11y": "^1.2.3"
+				"rtlcss": "^4.3.0"
 			},
 			"engines": {
 				"node": ">=16",
@@ -2049,6 +2049,37 @@
 				"node": ">=10.0.0"
 			}
 		},
+		"node_modules/@double-great/stylelint-a11y": {
+			"version": "3.8.3",
+			"resolved": "https://registry.npmjs.org/@double-great/stylelint-a11y/-/stylelint-a11y-3.8.3.tgz",
+			"integrity": "sha512-mSRv32ygqKXLJSvJd8xjol2q9TBwWA7D3Cukk2xrpCME+BZ/oIv5lSA+MWn1yqZ7QP9/puiORLX/E02QVBZd+w==",
+			"dev": true,
+			"license": "MIT",
+			"dependencies": {
+				"postcss": "^8.5.29",
+				"postcss-selector-parser": "^7.1.0"
+			},
+			"engines": {
+				"node": ">=22.0.0"
+			},
+			"peerDependencies": {
+				"stylelint": ">=16.7.0"
+			}
+		},
+		"node_modules/@double-great/stylelint-a11y/node_modules/postcss-selector-parser": {
+			"version": "7.1.7",
+			"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.7.tgz",
+			"integrity": "sha512-wWBro/7hJ40ye6TPiXkUQoXKCw23xSsjriUvqd7Uls9Sso3oLiON1flc18cCdnjgCRXw4fBVqUJJeOdDTh3P3g==",
+			"dev": true,
+			"license": "MIT",
+			"dependencies": {
+				"cssesc": "^3.0.0",
+				"util-deprecate": "^1.0.2"
+			},
+			"engines": {
+				"node": ">=4"
+			}
+		},
 		"node_modules/@dual-bundle/import-meta-resolve": {
 			"version": "4.1.0",
 			"resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz",
@@ -14044,9 +14075,9 @@
 			}
 		},
 		"node_modules/nanoid": {
-			"version": "3.3.11",
-			"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
-			"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
+			"version": "3.3.20",
+			"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.20.tgz",
+			"integrity": "sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==",
 			"dev": true,
 			"funding": [
 				{
@@ -15040,9 +15071,9 @@
 			}
 		},
 		"node_modules/postcss": {
-			"version": "8.5.6",
-			"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
-			"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+			"version": "8.5.32",
+			"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.32.tgz",
+			"integrity": "sha512-LJlKCCAUFKOuZxipUdYw1NzIITEsPcgyOG9LkvRJvuKj/bRzbuRY0ARXvL0pWGpsZvn8jku+LMep2eU0seHp8g==",
 			"dev": true,
 			"funding": [
 				{
@@ -15060,9 +15091,9 @@
 			],
 			"license": "MIT",
 			"dependencies": {
-				"nanoid": "^3.3.11",
+				"nanoid": "^3.3.20",
 				"picocolors": "^1.1.1",
-				"source-map-js": "^1.2.1"
+				"source-map-js": "^1.2.2"
 			},
 			"engines": {
 				"node": "^10 || ^12 || >=14"
@@ -17503,9 +17534,9 @@
 			}
 		},
 		"node_modules/source-map-js": {
-			"version": "1.2.1",
-			"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
-			"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+			"version": "1.2.2",
+			"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz",
+			"integrity": "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==",
 			"dev": true,
 			"license": "BSD-3-Clause",
 			"engines": {
@@ -18045,18 +18076,6 @@
 				"node": ">=18.12.0"
 			}
 		},
-		"node_modules/stylelint-a11y": {
-			"version": "1.2.3",
-			"resolved": "https://registry.npmjs.org/stylelint-a11y/-/stylelint-a11y-1.2.3.tgz",
-			"integrity": "sha512-S/iiKFUsYBfa4suxP0pYQqoPB9R1+SnvxVuzHHlz9al0IWxLZzXlnZEqEez0zNOhVh5iO3rATUmDnbZE5wm/pQ==",
-			"dev": true,
-			"engines": {
-				"node": ">=8.7.0"
-			},
-			"peerDependencies": {
-				"stylelint": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0"
-			}
-		},
 		"node_modules/stylelint-config-recommended": {
 			"version": "14.0.1",
 			"resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-14.0.1.tgz",
@@ -21572,6 +21591,28 @@
 			"integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
 			"dev": true
 		},
+		"@double-great/stylelint-a11y": {
+			"version": "3.8.3",
+			"resolved": "https://registry.npmjs.org/@double-great/stylelint-a11y/-/stylelint-a11y-3.8.3.tgz",
+			"integrity": "sha512-mSRv32ygqKXLJSvJd8xjol2q9TBwWA7D3Cukk2xrpCME+BZ/oIv5lSA+MWn1yqZ7QP9/puiORLX/E02QVBZd+w==",
+			"dev": true,
+			"requires": {
+				"postcss": "^8.5.29",
+				"postcss-selector-parser": "^7.1.0"
+			},
+			"dependencies": {
+				"postcss-selector-parser": {
+					"version": "7.1.7",
+					"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.7.tgz",
+					"integrity": "sha512-wWBro/7hJ40ye6TPiXkUQoXKCw23xSsjriUvqd7Uls9Sso3oLiON1flc18cCdnjgCRXw4fBVqUJJeOdDTh3P3g==",
+					"dev": true,
+					"requires": {
+						"cssesc": "^3.0.0",
+						"util-deprecate": "^1.0.2"
+					}
+				}
+			}
+		},
 		"@dual-bundle/import-meta-resolve": {
 			"version": "4.1.0",
 			"resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz",
@@ -30013,9 +30054,9 @@
 			}
 		},
 		"nanoid": {
-			"version": "3.3.11",
-			"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
-			"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
+			"version": "3.3.20",
+			"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.20.tgz",
+			"integrity": "sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==",
 			"dev": true
 		},
 		"natural-compare": {
@@ -30730,14 +30771,14 @@
 			"dev": true
 		},
 		"postcss": {
-			"version": "8.5.6",
-			"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
-			"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+			"version": "8.5.32",
+			"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.32.tgz",
+			"integrity": "sha512-LJlKCCAUFKOuZxipUdYw1NzIITEsPcgyOG9LkvRJvuKj/bRzbuRY0ARXvL0pWGpsZvn8jku+LMep2eU0seHp8g==",
 			"dev": true,
 			"requires": {
-				"nanoid": "^3.3.11",
+				"nanoid": "^3.3.20",
 				"picocolors": "^1.1.1",
-				"source-map-js": "^1.2.1"
+				"source-map-js": "^1.2.2"
 			}
 		},
 		"postcss-calc": {
@@ -32374,9 +32415,9 @@
 			"dev": true
 		},
 		"source-map-js": {
-			"version": "1.2.1",
-			"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
-			"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+			"version": "1.2.2",
+			"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz",
+			"integrity": "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==",
 			"dev": true
 		},
 		"source-map-loader": {
@@ -32935,12 +32976,6 @@
 				}
 			}
 		},
-		"stylelint-a11y": {
-			"version": "1.2.3",
-			"resolved": "https://registry.npmjs.org/stylelint-a11y/-/stylelint-a11y-1.2.3.tgz",
-			"integrity": "sha512-S/iiKFUsYBfa4suxP0pYQqoPB9R1+SnvxVuzHHlz9al0IWxLZzXlnZEqEez0zNOhVh5iO3rATUmDnbZE5wm/pQ==",
-			"dev": true
-		},
 		"stylelint-config-recommended": {
 			"version": "14.0.1",
 			"resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-14.0.1.tgz",
diff --git a/wp-content/themes/twentytwenty/package.json b/wp-content/themes/twentytwenty/package.json
index f808f868f5..9a00cc7365 100644
--- a/wp-content/themes/twentytwenty/package.json
+++ b/wp-content/themes/twentytwenty/package.json
@@ -22,14 +22,14 @@
 		"npm": ">=9.8.1"
 	},
 	"devDependencies": {
+		"@double-great/stylelint-a11y": "^3.8.3",
 		"@wordpress/browserslist-config": "^6.34.0",
 		"@wordpress/scripts": "^30.27.0",
 		"autoprefixer": "^10.4.22",
 		"concurrently": "^9.2.1",
 		"postcss": "^8.5.6",
 		"postcss-cli": "^11.0.1",
-		"rtlcss": "^4.3.0",
-		"stylelint-a11y": "^1.2.3"
+		"rtlcss": "^4.3.0"
 	},
 	"browserslist": [
 		"extends @wordpress/browserslist-config"
diff --git a/wp-includes/version.php b/wp-includes/version.php
index a513619acb..1da7d202f4 100644
--- a/wp-includes/version.php
+++ b/wp-includes/version.php
@@ -16,7 +16,7 @@
  *
  * @global string $wp_version
  */
-$wp_version = '7.2-beta4-65354';
+$wp_version = '7.2-beta4-65355';

 /**
  * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.