diff --git a/projects/packages/jetpack-mu-wpcom/src/features/wpcom-dashboard-widgets/wpcom-site-management-widget/index.js b/projects/packages/jetpack-mu-wpcom/src/features/wpcom-dashboard-widgets/wpcom-site-management-widget/index.js
index e7a8363f85897..afbf19d1f8a83 100644
--- a/projects/packages/jetpack-mu-wpcom/src/features/wpcom-dashboard-widgets/wpcom-site-management-widget/index.js
+++ b/projects/packages/jetpack-mu-wpcom/src/features/wpcom-dashboard-widgets/wpcom-site-management-widget/index.js
@@ -2,32 +2,20 @@ import { __ } from '@wordpress/i18n';
import React from 'react';
import './style.scss';
-const WpcomSiteManagementWidget = ( { siteName, siteDomain, siteIconUrl } ) => {
- const devToolItems = [
- {
- name: __( 'Deployments', 'jetpack-mu-wpcom' ),
- href: `/github-deployments/${ siteDomain }`,
- },
- {
- name: __( 'Monitoring', 'jetpack-mu-wpcom' ),
- href: `/site-monitoring/${ siteDomain }`,
- },
- {
- name: __( 'Logs', 'jetpack-mu-wpcom' ),
- href: `/site-logs/${ siteDomain }/php`,
- },
- {
- name: __( 'Staging Site', 'jetpack-mu-wpcom' ),
- href: `/staging-site/${ siteDomain }`,
- },
- {
- name: __( 'Server Settings', 'jetpack-mu-wpcom' ),
- href: `/hosting-config/${ siteDomain }`,
- },
- ];
-
+const WpcomSiteManagementWidget = ( { siteName, siteUrl, siteIconUrl, isBlockTheme } ) => {
+ const siteDomain = new URL( siteUrl ).hostname;
return (
<>
+
{
@@ -41,34 +29,19 @@ const WpcomSiteManagementWidget = ( { siteName, siteDomain, siteIconUrl } ) => {
{ siteName }
-
{ siteDomain }
+
-
-
-
- { __(
- 'Get a quick overview of your plans, storage, and domains, or easily access your development tools using the links provided below:',
- 'jetpack-mu-wpcom'
- ) }
-
-
>
diff --git a/projects/packages/jetpack-mu-wpcom/src/features/wpcom-dashboard-widgets/wpcom-site-management-widget/style.scss b/projects/packages/jetpack-mu-wpcom/src/features/wpcom-dashboard-widgets/wpcom-site-management-widget/style.scss
index 2bd4bd4577d90..f7ac7b2e60d62 100644
--- a/projects/packages/jetpack-mu-wpcom/src/features/wpcom-dashboard-widgets/wpcom-site-management-widget/style.scss
+++ b/projects/packages/jetpack-mu-wpcom/src/features/wpcom-dashboard-widgets/wpcom-site-management-widget/style.scss
@@ -1,4 +1,4 @@
-#wpcom_site_management_widget {
+#wpcom_site_preview_widget {
color: #1e1e1e;
.postbox-title-action {
@@ -6,7 +6,30 @@
}
}
-#wpcom_site_management_widget_main {
+#wpcom_site_preview_widget_main {
+ .wpcom_site_preview_wrapper {
+ background: #f0f0f1;
+ margin-bottom: 12px;
+ padding: 12px 12px 0;
+ }
+
+ .wpcom_site_preview {
+ display: block;
+ max-width: 425px;
+ height: 200px;
+ overflow: hidden;
+ margin: 0 auto;
+
+ iframe {
+ max-width: 250%;
+ min-height: 375%;
+ transform: scale(.4);
+ transform-origin: top left;
+ translate: 0 -13px;
+ width: 250%;
+ }
+ }
+
.wpcom_site_management_widget__header {
display: flex;
align-items: center;
@@ -60,42 +83,7 @@
.wpcom_site_management_widget__site-actions {
flex-shrink: 0;
- }
-
- .wpcom_site_management_widget__content p {
- margin: 12px 0;
- font-size: 13px;
- font-weight: 400;
- line-height: 18px;
- }
-
- .wpcom_site_management_widget__dev-tools-title {
- margin-bottom: 12px;
- font-size: 11px;
- font-weight: 600;
- line-height: 16px;
- text-transform: uppercase;
- }
-
- .wpcom_site_management_widget__dev-tools-content {
- ul {
- display: grid;
- grid-template-columns: 1fr 1fr;
- gap: 12px;
- margin-bottom: 0;
- list-style: disc inside;
- }
-
- li {
- margin: 0 8px;
- color: #0073aa;
- font-size: 13px;
- font-weight: 400;
- line-height: 18px;
-
- &::marker {
- margin-inline-end: 2px;
- }
- }
+ display: flex;
+ gap: 12px;
}
}
diff --git a/projects/packages/jetpack-mu-wpcom/src/features/wpcom-hotfixes/wpcom-hotfixes.php b/projects/packages/jetpack-mu-wpcom/src/features/wpcom-hotfixes/wpcom-hotfixes.php
index 5b50ae0ea76d0..a0d6df40a2601 100644
--- a/projects/packages/jetpack-mu-wpcom/src/features/wpcom-hotfixes/wpcom-hotfixes.php
+++ b/projects/packages/jetpack-mu-wpcom/src/features/wpcom-hotfixes/wpcom-hotfixes.php
@@ -24,3 +24,29 @@ function ( $args ) {
},
20
);
+
+/**
+ * Hotfix for a {Gutenberg 20.0.0, WP 6.7.x} bug causing the Content block to output truncated HTML.
+ * See: https://github.com/WordPress/gutenberg/issues/68614
+ */
+if (
+ // WordPress 6.7.x contains the buggy remove_serialized_parent_block() function.
+ version_compare( get_bloginfo( 'version' ), '6.8', '<' ) ) {
+
+ add_filter(
+ 'the_content',
+ function ( $content ) {
+ if ( has_filter( 'the_content', 'remove_serialized_parent_block' ) ) {
+ // We will revert the content manipulation done in https://github.com/WordPress/gutenberg/pull/67272.
+
+ // Reverts https://github.com/WordPress/gutenberg/pull/67272/files#diff-611d9e2b5a9b00eb2fbe68d044eccb195759a422e36f525186d43d752bee3d71R65-R68
+ remove_filter( 'the_content', 'remove_serialized_parent_block', 8 );
+
+ // Reverts https://github.com/WordPress/gutenberg/pull/67272/files#diff-611d9e2b5a9b00eb2fbe68d044eccb195759a422e36f525186d43d752bee3d71R57-R63
+ return remove_serialized_parent_block( $content );
+ }
+ return $content;
+ },
+ 1
+ );
+}
diff --git a/projects/packages/jitm/changelog/renovate-webpack-cli-6.x b/projects/packages/jitm/changelog/renovate-webpack-cli-6.x
new file mode 100644
index 0000000000000..c47cb18e82997
--- /dev/null
+++ b/projects/packages/jitm/changelog/renovate-webpack-cli-6.x
@@ -0,0 +1,4 @@
+Significance: patch
+Type: changed
+
+Updated package dependencies.
diff --git a/projects/packages/jitm/package.json b/projects/packages/jitm/package.json
index c0b5d5e3d8704..696a1f4d0e8c8 100644
--- a/projects/packages/jitm/package.json
+++ b/projects/packages/jitm/package.json
@@ -28,6 +28,6 @@
"sass": "1.64.1",
"sass-loader": "12.4.0",
"webpack": "5.94.0",
- "webpack-cli": "4.9.1"
+ "webpack-cli": "6.0.1"
}
}
diff --git a/projects/packages/masterbar/CHANGELOG.md b/projects/packages/masterbar/CHANGELOG.md
index 1c298b39a101c..3f44847564b10 100644
--- a/projects/packages/masterbar/CHANGELOG.md
+++ b/projects/packages/masterbar/CHANGELOG.md
@@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [0.12.0] - 2025-01-27
+### Added
+- Hide the calypso based Performance menu item on wordpress.com, show page-optimize based Performance menu item on Atomic sites. [#41145]
+
+### Removed
+- Remove classic view admin notice from general settings (for Atomic sites). [#41155]
+
## [0.11.0] - 2025-01-20
### Changed
- Add watch command in the masterbar package. [#41066]
@@ -207,6 +214,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Notifications: Change Icon [#37676]
- Updated package dependencies. [#37669] [#37706]
+[0.12.0]: https://github.com/Automattic/jetpack-masterbar/compare/v0.11.0...v0.12.0
[0.11.0]: https://github.com/Automattic/jetpack-masterbar/compare/v0.10.6...v0.11.0
[0.10.6]: https://github.com/Automattic/jetpack-masterbar/compare/v0.10.5...v0.10.6
[0.10.5]: https://github.com/Automattic/jetpack-masterbar/compare/v0.10.4...v0.10.5
diff --git a/projects/packages/masterbar/changelog/remove-classic-view-notice b/projects/packages/masterbar/changelog/remove-classic-view-notice
deleted file mode 100644
index c67067aa466a4..0000000000000
--- a/projects/packages/masterbar/changelog/remove-classic-view-notice
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: minor
-Type: removed
-
-removed classic view admin notice from general settings (for atomic sites)
diff --git a/projects/packages/masterbar/changelog/renovate-webpack-cli-6.x b/projects/packages/masterbar/changelog/renovate-webpack-cli-6.x
new file mode 100644
index 0000000000000..c47cb18e82997
--- /dev/null
+++ b/projects/packages/masterbar/changelog/renovate-webpack-cli-6.x
@@ -0,0 +1,4 @@
+Significance: patch
+Type: changed
+
+Updated package dependencies.
diff --git a/projects/packages/masterbar/changelog/update-remove-performance-menu-item b/projects/packages/masterbar/changelog/update-remove-performance-menu-item
deleted file mode 100644
index 2300c80248710..0000000000000
--- a/projects/packages/masterbar/changelog/update-remove-performance-menu-item
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: added
-
-Hides the calypso based Performance menu item on wordpress.com, shows page-optimize based Performance menu item on Atomic sites.
diff --git a/projects/packages/masterbar/composer.json b/projects/packages/masterbar/composer.json
index 4906656bc2840..b4b0dfff9a159 100644
--- a/projects/packages/masterbar/composer.json
+++ b/projects/packages/masterbar/composer.json
@@ -72,7 +72,7 @@
"extra": {
"autotagger": true,
"branch-alias": {
- "dev-trunk": "0.11.x-dev"
+ "dev-trunk": "0.12.x-dev"
},
"changelogger": {
"link-template": "https://github.com/Automattic/jetpack-masterbar/compare/v${old}...v${new}"
diff --git a/projects/packages/masterbar/package.json b/projects/packages/masterbar/package.json
index 1bb298709bf2b..16dead5779881 100644
--- a/projects/packages/masterbar/package.json
+++ b/projects/packages/masterbar/package.json
@@ -1,7 +1,7 @@
{
"private": true,
"name": "@automattic/jetpack-masterbar",
- "version": "0.11.0",
+ "version": "0.12.0",
"description": "The WordPress.com Toolbar feature replaces the default admin bar and offers quick links to the Reader, all your sites, your WordPress.com profile, and notifications.",
"homepage": "https://github.com/Automattic/jetpack/tree/HEAD/projects/packages/masterbar/#readme",
"bugs": {
@@ -41,6 +41,6 @@
"sass": "1.64.1",
"sass-loader": "12.4.0",
"webpack": "5.94.0",
- "webpack-cli": "4.9.1"
+ "webpack-cli": "6.0.1"
}
}
diff --git a/projects/packages/masterbar/src/class-main.php b/projects/packages/masterbar/src/class-main.php
index 57551b00d9334..72b808a99261d 100644
--- a/projects/packages/masterbar/src/class-main.php
+++ b/projects/packages/masterbar/src/class-main.php
@@ -14,7 +14,7 @@
*/
class Main {
- const PACKAGE_VERSION = '0.11.0';
+ const PACKAGE_VERSION = '0.12.0';
/**
* Initializer.
diff --git a/projects/packages/my-jetpack/changelog/renovate-webpack-cli-6.x b/projects/packages/my-jetpack/changelog/renovate-webpack-cli-6.x
new file mode 100644
index 0000000000000..c47cb18e82997
--- /dev/null
+++ b/projects/packages/my-jetpack/changelog/renovate-webpack-cli-6.x
@@ -0,0 +1,4 @@
+Significance: patch
+Type: changed
+
+Updated package dependencies.
diff --git a/projects/packages/my-jetpack/package.json b/projects/packages/my-jetpack/package.json
index 18ffda790b6d8..c5fd957188a85 100644
--- a/projects/packages/my-jetpack/package.json
+++ b/projects/packages/my-jetpack/package.json
@@ -78,6 +78,6 @@
"storybook": "8.4.7",
"typescript": "5.0.4",
"webpack": "5.94.0",
- "webpack-cli": "4.9.1"
+ "webpack-cli": "6.0.1"
}
}
diff --git a/projects/packages/plugin-deactivation/changelog/renovate-webpack-cli-6.x b/projects/packages/plugin-deactivation/changelog/renovate-webpack-cli-6.x
new file mode 100644
index 0000000000000..c47cb18e82997
--- /dev/null
+++ b/projects/packages/plugin-deactivation/changelog/renovate-webpack-cli-6.x
@@ -0,0 +1,4 @@
+Significance: patch
+Type: changed
+
+Updated package dependencies.
diff --git a/projects/packages/plugin-deactivation/package.json b/projects/packages/plugin-deactivation/package.json
index 03e4c990dfeac..b8434a08dd075 100644
--- a/projects/packages/plugin-deactivation/package.json
+++ b/projects/packages/plugin-deactivation/package.json
@@ -27,6 +27,6 @@
"tslib": "2.5.0",
"typescript": "5.0.4",
"webpack": "5.94.0",
- "webpack-cli": "4.9.1"
+ "webpack-cli": "6.0.1"
}
}
diff --git a/projects/packages/publicize/changelog/renovate-webpack-cli-6.x b/projects/packages/publicize/changelog/renovate-webpack-cli-6.x
new file mode 100644
index 0000000000000..c47cb18e82997
--- /dev/null
+++ b/projects/packages/publicize/changelog/renovate-webpack-cli-6.x
@@ -0,0 +1,4 @@
+Significance: patch
+Type: changed
+
+Updated package dependencies.
diff --git a/projects/packages/publicize/package.json b/projects/packages/publicize/package.json
index cc5c832fdb3ad..7eca2206215ba 100644
--- a/projects/packages/publicize/package.json
+++ b/projects/packages/publicize/package.json
@@ -43,7 +43,7 @@
"sass": "1.64.1",
"sass-loader": "12.4.0",
"webpack": "5.94.0",
- "webpack-cli": "4.9.1"
+ "webpack-cli": "6.0.1"
},
"dependencies": {
"@automattic/jetpack-analytics": "workspace:*",
diff --git a/projects/packages/search/CHANGELOG.md b/projects/packages/search/CHANGELOG.md
index 39e1e1f9dee3b..0f19be500029d 100644
--- a/projects/packages/search/CHANGELOG.md
+++ b/projects/packages/search/CHANGELOG.md
@@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [0.47.7] - 2025-01-27
+### Changed
+- Internal updates.
+
## [0.47.6] - 2025-01-20
### Changed
- Code: Use function-style exit() and die() with a default status code of 0. [#41167]
@@ -1112,6 +1116,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Updated package dependencies.
- Update PHPUnit configs to include just what needs coverage rather than include everything then try to exclude stuff that doesn't.
+[0.47.7]: https://github.com/Automattic/jetpack-search/compare/v0.47.6...v0.47.7
[0.47.6]: https://github.com/Automattic/jetpack-search/compare/v0.47.5...v0.47.6
[0.47.5]: https://github.com/Automattic/jetpack-search/compare/v0.47.4...v0.47.5
[0.47.4]: https://github.com/Automattic/jetpack-search/compare/v0.47.3...v0.47.4
diff --git a/projects/packages/search/changelog/fix-bad-npm-package-names b/projects/packages/search/changelog/fix-bad-npm-package-names
deleted file mode 100644
index 6e781f5152830..0000000000000
--- a/projects/packages/search/changelog/fix-bad-npm-package-names
+++ /dev/null
@@ -1,5 +0,0 @@
-Significance: patch
-Type: fixed
-Comment: Remove unused "name" field from package.json. This is not published and is not the target of an intra-monorepo JS dependency.
-
-
diff --git a/projects/packages/search/changelog/renovate-webpack-cli-6.x b/projects/packages/search/changelog/renovate-webpack-cli-6.x
new file mode 100644
index 0000000000000..c47cb18e82997
--- /dev/null
+++ b/projects/packages/search/changelog/renovate-webpack-cli-6.x
@@ -0,0 +1,4 @@
+Significance: patch
+Type: changed
+
+Updated package dependencies.
diff --git a/projects/packages/search/package.json b/projects/packages/search/package.json
index 83f1363488204..034765fd53fb9 100644
--- a/projects/packages/search/package.json
+++ b/projects/packages/search/package.json
@@ -91,7 +91,7 @@
"sass-loader": "12.4.0",
"size-limit": "11.1.6",
"webpack": "5.94.0",
- "webpack-cli": "4.9.1"
+ "webpack-cli": "6.0.1"
},
"browserslist": [
"extends @wordpress/browserslist-config"
diff --git a/projects/packages/search/src/class-package.php b/projects/packages/search/src/class-package.php
index 0006b997f6ae8..e1e73f8497b92 100644
--- a/projects/packages/search/src/class-package.php
+++ b/projects/packages/search/src/class-package.php
@@ -11,7 +11,7 @@
* Search package general information
*/
class Package {
- const VERSION = '0.47.6';
+ const VERSION = '0.47.7';
const SLUG = 'search';
/**
diff --git a/projects/plugins/jetpack/changelog/fix-cookie-consent-reg b/projects/packages/sync/changelog/update-full-sync-comments-return-expected-structure-to-avoid-ending-early
similarity index 64%
rename from projects/plugins/jetpack/changelog/fix-cookie-consent-reg
rename to projects/packages/sync/changelog/update-full-sync-comments-return-expected-structure-to-avoid-ending-early
index 1ef8afea050a2..d95a7ef42d8cf 100644
--- a/projects/plugins/jetpack/changelog/fix-cookie-consent-reg
+++ b/projects/packages/sync/changelog/update-full-sync-comments-return-expected-structure-to-avoid-ending-early
@@ -1,4 +1,4 @@
Significance: patch
-Type: other
+Type: fixed
diff --git a/projects/packages/sync/src/modules/class-comments.php b/projects/packages/sync/src/modules/class-comments.php
index c4281f68400c9..de7be8d175fa6 100644
--- a/projects/packages/sync/src/modules/class-comments.php
+++ b/projects/packages/sync/src/modules/class-comments.php
@@ -552,6 +552,7 @@ public function extract_comments_and_meta( $args ) {
public function get_next_chunk( $config, $status, $chunk_size ) {
$comment_ids = parent::get_next_chunk( $config, $status, $chunk_size );
+ // If no comment IDs were fetched, return an empty array.
if ( empty( $comment_ids ) ) {
return array();
}
@@ -562,8 +563,13 @@ public function get_next_chunk( $config, $status, $chunk_size ) {
'order' => 'DESC',
)
);
+ // If no comments were fetched, make sure to return the expected structure so that status is updated correctly.
if ( empty( $comments ) ) {
- return array();
+ return array(
+ 'object_ids' => $comment_ids,
+ 'objects' => array(),
+ 'meta' => array(),
+ );
}
// Get the comment IDs from the comments that were fetched.
$fetched_comment_ids = wp_list_pluck( $comments, 'comment_ID' );
diff --git a/projects/packages/videopress/CHANGELOG.md b/projects/packages/videopress/CHANGELOG.md
index c70d4f2853b8a..edf6ca53cc250 100644
--- a/projects/packages/videopress/CHANGELOG.md
+++ b/projects/packages/videopress/CHANGELOG.md
@@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [0.25.8] - 2025-01-27
+### Fixed
+- VideoPress: Fix issue with VideoPress block with 0 height and width [#41319]
+
## [0.25.7] - 2025-01-20
### Changed
- Code: Use function-style exit() and die() with a default status code of 0. [#41167]
@@ -1517,6 +1521,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
- Created empty package [#24952]
+[0.25.8]: https://github.com/Automattic/jetpack-videopress/compare/v0.25.7...v0.25.8
[0.25.7]: https://github.com/Automattic/jetpack-videopress/compare/v0.25.6...v0.25.7
[0.25.6]: https://github.com/Automattic/jetpack-videopress/compare/v0.25.5...v0.25.6
[0.25.5]: https://github.com/Automattic/jetpack-videopress/compare/v0.25.4...v0.25.5
diff --git a/projects/packages/videopress/changelog/fix-videopress-block-classic-themes b/projects/packages/videopress/changelog/fix-videopress-block-classic-themes
deleted file mode 100644
index 154c3dd749648..0000000000000
--- a/projects/packages/videopress/changelog/fix-videopress-block-classic-themes
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: fixed
-
-VideoPress: Fix issue with VideoPress block with 0 height and width
diff --git a/projects/packages/videopress/changelog/renovate-webpack-cli-6.x b/projects/packages/videopress/changelog/renovate-webpack-cli-6.x
new file mode 100644
index 0000000000000..c47cb18e82997
--- /dev/null
+++ b/projects/packages/videopress/changelog/renovate-webpack-cli-6.x
@@ -0,0 +1,4 @@
+Significance: patch
+Type: changed
+
+Updated package dependencies.
diff --git a/projects/packages/videopress/package.json b/projects/packages/videopress/package.json
index cf03fb3ad28f5..66b35a3981fc4 100644
--- a/projects/packages/videopress/package.json
+++ b/projects/packages/videopress/package.json
@@ -1,7 +1,7 @@
{
"private": true,
"name": "@automattic/jetpack-videopress",
- "version": "0.25.7",
+ "version": "0.25.8",
"description": "VideoPress package",
"homepage": "https://github.com/Automattic/jetpack/tree/HEAD/projects/packages/videopress/#readme",
"bugs": {
@@ -55,7 +55,7 @@
"storybook": "8.4.7",
"typescript": "5.0.4",
"webpack": "5.94.0",
- "webpack-cli": "4.9.1"
+ "webpack-cli": "6.0.1"
},
"dependencies": {
"@automattic/jetpack-analytics": "workspace:*",
diff --git a/projects/packages/videopress/src/class-package-version.php b/projects/packages/videopress/src/class-package-version.php
index 2dc0c60e61184..92d353f8e1802 100644
--- a/projects/packages/videopress/src/class-package-version.php
+++ b/projects/packages/videopress/src/class-package-version.php
@@ -11,7 +11,7 @@
* The Package_Version class.
*/
class Package_Version {
- const PACKAGE_VERSION = '0.25.7';
+ const PACKAGE_VERSION = '0.25.8';
const PACKAGE_SLUG = 'videopress';
diff --git a/projects/packages/wordads/changelog/renovate-webpack-cli-6.x b/projects/packages/wordads/changelog/renovate-webpack-cli-6.x
new file mode 100644
index 0000000000000..c47cb18e82997
--- /dev/null
+++ b/projects/packages/wordads/changelog/renovate-webpack-cli-6.x
@@ -0,0 +1,4 @@
+Significance: patch
+Type: changed
+
+Updated package dependencies.
diff --git a/projects/packages/wordads/package.json b/projects/packages/wordads/package.json
index 5b66f900fc4a7..b4438478319b0 100644
--- a/projects/packages/wordads/package.json
+++ b/projects/packages/wordads/package.json
@@ -79,7 +79,7 @@
"sass": "1.64.1",
"sass-loader": "12.4.0",
"webpack": "5.94.0",
- "webpack-cli": "4.9.1"
+ "webpack-cli": "6.0.1"
},
"browserslist": [
"extends @wordpress/browserslist-config"
diff --git a/projects/packages/yoast-promo/changelog/renovate-webpack-cli-6.x b/projects/packages/yoast-promo/changelog/renovate-webpack-cli-6.x
new file mode 100644
index 0000000000000..c47cb18e82997
--- /dev/null
+++ b/projects/packages/yoast-promo/changelog/renovate-webpack-cli-6.x
@@ -0,0 +1,4 @@
+Significance: patch
+Type: changed
+
+Updated package dependencies.
diff --git a/projects/packages/yoast-promo/package.json b/projects/packages/yoast-promo/package.json
index 7b8a7b27372cc..d9344bc634679 100644
--- a/projects/packages/yoast-promo/package.json
+++ b/projects/packages/yoast-promo/package.json
@@ -43,7 +43,7 @@
"sass": "1.64.1",
"sass-loader": "12.4.0",
"webpack": "5.94.0",
- "webpack-cli": "4.9.1"
+ "webpack-cli": "6.0.1"
},
"browserslist": [
"extends @wordpress/browserslist-config"
diff --git a/projects/plugins/automattic-for-agencies-client/changelog/renovate-webpack-cli-6.x b/projects/plugins/automattic-for-agencies-client/changelog/renovate-webpack-cli-6.x
new file mode 100644
index 0000000000000..c47cb18e82997
--- /dev/null
+++ b/projects/plugins/automattic-for-agencies-client/changelog/renovate-webpack-cli-6.x
@@ -0,0 +1,4 @@
+Significance: patch
+Type: changed
+
+Updated package dependencies.
diff --git a/projects/plugins/automattic-for-agencies-client/package.json b/projects/plugins/automattic-for-agencies-client/package.json
index 99c8a40511e9e..aea55fc6a1c64 100644
--- a/projects/plugins/automattic-for-agencies-client/package.json
+++ b/projects/plugins/automattic-for-agencies-client/package.json
@@ -56,6 +56,6 @@
"sass": "1.64.1",
"sass-loader": "12.4.0",
"webpack": "5.94.0",
- "webpack-cli": "4.9.1"
+ "webpack-cli": "6.0.1"
}
}
diff --git a/projects/plugins/boost/changelog/add-liam-as-contributor b/projects/plugins/boost/changelog/add-liam-as-contributor
new file mode 100644
index 0000000000000..267d3c79c76a6
--- /dev/null
+++ b/projects/plugins/boost/changelog/add-liam-as-contributor
@@ -0,0 +1,5 @@
+Significance: patch
+Type: added
+Comment: Added Liam as a new contributor
+
+
diff --git a/projects/plugins/boost/changelog/renovate-webpack-cli-6.x b/projects/plugins/boost/changelog/renovate-webpack-cli-6.x
new file mode 100644
index 0000000000000..c47cb18e82997
--- /dev/null
+++ b/projects/plugins/boost/changelog/renovate-webpack-cli-6.x
@@ -0,0 +1,4 @@
+Significance: patch
+Type: changed
+
+Updated package dependencies.
diff --git a/projects/plugins/boost/changelog/update-boost-stable-tag b/projects/plugins/boost/changelog/update-boost-stable-tag
new file mode 100644
index 0000000000000..27b9b851f4e2a
--- /dev/null
+++ b/projects/plugins/boost/changelog/update-boost-stable-tag
@@ -0,0 +1,5 @@
+Significance: patch
+Type: changed
+Comment: Update stable tag
+
+
diff --git a/projects/plugins/boost/package.json b/projects/plugins/boost/package.json
index fe8e1e7a743ab..6753d2d82e30f 100644
--- a/projects/plugins/boost/package.json
+++ b/projects/plugins/boost/package.json
@@ -52,7 +52,7 @@
"tslib": "2.5.0",
"typescript": "5.0.4",
"webpack": "5.94.0",
- "webpack-cli": "4.9.1"
+ "webpack-cli": "6.0.1"
},
"browserslist": [
"extends @wordpress/browserslist-config"
diff --git a/projects/plugins/boost/readme.txt b/projects/plugins/boost/readme.txt
index fb0e08f55cf6c..44eda5354ba7a 100644
--- a/projects/plugins/boost/readme.txt
+++ b/projects/plugins/boost/readme.txt
@@ -1,11 +1,11 @@
=== Jetpack Boost - Website Speed, Performance and Critical CSS ===
-Contributors: automattic, xwp, adnan007, bjorsch, danwalmsley, davidlonjon, dilirity, donncha, ebinnion, exelero, jeherve, jpolakovic, karthikbhatb, kraftbj, luchad0res, pyronaur, rheinardkorf, scruffian, thingalon
+Contributors: automattic, xwp, adnan007, bjorsch, danwalmsley, davidlonjon, dilirity, donncha, ebinnion, exelero, jeherve, jpolakovic, karthikbhatb, kraftbj, lsarsfield, luchad0res, pyronaur, rheinardkorf, scruffian, thingalon
Donate link: https://automattic.com
Tags: performance, speed, web vitals, critical css, cache
Requires at least: 6.6
Tested up to: 6.7
Requires PHP: 7.2
-Stable tag: 3.6.0
+Stable tag: 3.8.0
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
diff --git a/projects/plugins/classic-theme-helper-plugin/changelog/renovate-webpack-cli-6.x b/projects/plugins/classic-theme-helper-plugin/changelog/renovate-webpack-cli-6.x
new file mode 100644
index 0000000000000..c47cb18e82997
--- /dev/null
+++ b/projects/plugins/classic-theme-helper-plugin/changelog/renovate-webpack-cli-6.x
@@ -0,0 +1,4 @@
+Significance: patch
+Type: changed
+
+Updated package dependencies.
diff --git a/projects/plugins/classic-theme-helper-plugin/package.json b/projects/plugins/classic-theme-helper-plugin/package.json
index ec6c9a447eb14..560d9fad27562 100644
--- a/projects/plugins/classic-theme-helper-plugin/package.json
+++ b/projects/plugins/classic-theme-helper-plugin/package.json
@@ -52,6 +52,6 @@
"sass": "1.64.1",
"sass-loader": "12.4.0",
"webpack": "5.94.0",
- "webpack-cli": "4.9.1"
+ "webpack-cli": "6.0.1"
}
}
diff --git a/projects/plugins/crm/changelog/renovate-webpack-cli-6.x b/projects/plugins/crm/changelog/renovate-webpack-cli-6.x
new file mode 100644
index 0000000000000..c47cb18e82997
--- /dev/null
+++ b/projects/plugins/crm/changelog/renovate-webpack-cli-6.x
@@ -0,0 +1,4 @@
+Significance: patch
+Type: changed
+
+Updated package dependencies.
diff --git a/projects/plugins/crm/package.json b/projects/plugins/crm/package.json
index ec514bd05dfe7..933f0b90ddbae 100644
--- a/projects/plugins/crm/package.json
+++ b/projects/plugins/crm/package.json
@@ -55,6 +55,6 @@
"sass-loader": "12.4.0",
"typescript": "5.0.4",
"webpack": "5.94.0",
- "webpack-cli": "4.9.1"
+ "webpack-cli": "6.0.1"
}
}
diff --git a/projects/plugins/jetpack/CHANGELOG.md b/projects/plugins/jetpack/CHANGELOG.md
index 534c1fa2ad32f..00c73bb3bf771 100644
--- a/projects/plugins/jetpack/CHANGELOG.md
+++ b/projects/plugins/jetpack/CHANGELOG.md
@@ -2,6 +2,27 @@
### This is a list detailing changes for all Jetpack releases.
+## 14.3-a.5 - 2025-01-27
+### Enhancements
+- Forms: Add Checkbox and Consent field enter action to create a new block. [#41297]
+
+### Bug fixes
+- Forms: Make the icons show up as expected in the style editor. [#41314]
+- Sitemaps: Ensure a valid news sitemap is present even if no posts are eligible. [#40893]
+- Social: Fix profile links for LinkedIn connections. [#40873]
+- Social: Fix Publicize error in the editor due to malformed connections data. [#40679]
+- VideoPress: Fix issue with VideoPress block with zero height and width. [#41319]
+
+### Other changes
+- Comments API: Add wpcom_id and wpcom_login fields to comment author responses when requested via author_wpcom_data parameter. [#41254]
+- Forms: Fix default editor stying for textarea. [#41229]
+- Forms: Remove wrapping
element from form block. [#41274]
+- General: Fix the rendering of Jetpack Google Fonts font faces for classic themes. [#41190]
+- General: Deprecate Jetpack geo location module. [#41193]
+- Jetpack AI: Use the PluginDocumentSettingPanel slotfill for compatibility with site and post editor in the Excerpt panel. [#41251]
+- Jetpack button: Implement outline style. [#41194]
+- Related Posts: Revert "Hide settings in block themes." [#41203]
+
## 14.3-a.3 - 2025-01-20
### Enhancements
- Forms: Allow HTML block within forms. [#41040]
diff --git a/projects/plugins/jetpack/changelog/add-comment-endpoint-wpcom-user-fields b/projects/plugins/jetpack/changelog/add-comment-endpoint-wpcom-user-fields
deleted file mode 100644
index 56e3b470c7d40..0000000000000
--- a/projects/plugins/jetpack/changelog/add-comment-endpoint-wpcom-user-fields
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: minor
-Type: other
-
-Comments API: Add wpcom_id and wpcom_login fields to comment author responses when requested via author_wpcom_data parameter.
diff --git a/projects/plugins/jetpack/changelog/add-phpcs-ignore-for-wpcut b/projects/plugins/jetpack/changelog/add-phpcs-ignore-for-wpcut
deleted file mode 100644
index e61241f9dddd2..0000000000000
--- a/projects/plugins/jetpack/changelog/add-phpcs-ignore-for-wpcut
+++ /dev/null
@@ -1,5 +0,0 @@
-Significance: patch
-Type: other
-Comment: Add phpcs:ignore for wpcom. No changes to functionality.
-
-
diff --git a/projects/plugins/jetpack/changelog/change-jetpack-seo-assistant-wizard-mechanics b/projects/plugins/jetpack/changelog/change-jetpack-seo-assistant-wizard-mechanics
new file mode 100644
index 0000000000000..031857263b525
--- /dev/null
+++ b/projects/plugins/jetpack/changelog/change-jetpack-seo-assistant-wizard-mechanics
@@ -0,0 +1,4 @@
+Significance: minor
+Type: other
+
+Jetpack SEO: assistant wizard changes to achieve desired step flow
diff --git a/projects/plugins/jetpack/changelog/fix-bad-npm-package-names b/projects/plugins/jetpack/changelog/fix-bad-npm-package-names
deleted file mode 100644
index aea5a62a1613d..0000000000000
--- a/projects/plugins/jetpack/changelog/fix-bad-npm-package-names
+++ /dev/null
@@ -1,5 +0,0 @@
-Significance: patch
-Type: other
-Comment: Remove unused "name" field from package.json. This is not published and is not the target of an intra-monorepo JS dependency.
-
-
diff --git a/projects/plugins/jetpack/changelog/fix-bad-npm-package-names#2 b/projects/plugins/jetpack/changelog/fix-bad-npm-package-names#2
deleted file mode 100644
index 64df5e9573438..0000000000000
--- a/projects/plugins/jetpack/changelog/fix-bad-npm-package-names#2
+++ /dev/null
@@ -1,5 +0,0 @@
-Significance: patch
-Type: other
-Comment: Rename intra-monorepo `jetpack-e2e-commons` dep to `_jetpack-e2e-commons`, which cannot be published to npmjs.com.
-
-
diff --git a/projects/plugins/jetpack/changelog/fix-empty-news b/projects/plugins/jetpack/changelog/fix-empty-news
deleted file mode 100644
index 2a7c16c64d28a..0000000000000
--- a/projects/plugins/jetpack/changelog/fix-empty-news
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: bugfix
-
-Sitemaps: ensures a valid news sitemap is present even if no posts are eligible.
diff --git a/projects/plugins/jetpack/changelog/fix-form-radio-button-missing-div b/projects/plugins/jetpack/changelog/fix-form-radio-button-missing-div
deleted file mode 100644
index e28a76958ead5..0000000000000
--- a/projects/plugins/jetpack/changelog/fix-form-radio-button-missing-div
+++ /dev/null
@@ -1,5 +0,0 @@
-Significance: patch
-Type: bugfix
-Comment: Seems like a minor bug fix
-
-
diff --git a/projects/plugins/jetpack/changelog/fix-form-submit-button-outline b/projects/plugins/jetpack/changelog/fix-form-submit-button-outline
deleted file mode 100644
index 57b3002471771..0000000000000
--- a/projects/plugins/jetpack/changelog/fix-form-submit-button-outline
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: minor
-Type: other
-
-Jetpack button: implement outline style
diff --git a/projects/plugins/jetpack/changelog/fix-form-textarea-default-border-stylinig b/projects/plugins/jetpack/changelog/fix-form-textarea-default-border-stylinig
deleted file mode 100644
index d7c3a3acbc3c5..0000000000000
--- a/projects/plugins/jetpack/changelog/fix-form-textarea-default-border-stylinig
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: other
-
-Forms: fixed default editor stying for textarea
diff --git a/projects/plugins/jetpack/changelog/fix-forms-checkbox-enter-new-block b/projects/plugins/jetpack/changelog/fix-forms-checkbox-enter-new-block
deleted file mode 100644
index a2ed2682d4ea1..0000000000000
--- a/projects/plugins/jetpack/changelog/fix-forms-checkbox-enter-new-block
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: enhancement
-
-Forms: Add Checkbox and Consent field enter action to create a new block
diff --git a/projects/plugins/jetpack/changelog/fix-icon-in-site-editor b/projects/plugins/jetpack/changelog/fix-icon-in-site-editor
deleted file mode 100644
index 87326664b1de1..0000000000000
--- a/projects/plugins/jetpack/changelog/fix-icon-in-site-editor
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: bugfix
-
-Make the icons show up as expected in the style editor
diff --git a/projects/plugins/jetpack/changelog/fix-jetpack-ai-excerpt-site-editor b/projects/plugins/jetpack/changelog/fix-jetpack-ai-excerpt-site-editor
deleted file mode 100644
index 923bc46e99287..0000000000000
--- a/projects/plugins/jetpack/changelog/fix-jetpack-ai-excerpt-site-editor
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: other
-
-Jetpack AI: excerpt panel now uses PluginDocumentSettingPanel slotfill for compatibility with site and post editor
diff --git a/projects/plugins/jetpack/changelog/fix-jetpack-google-fonts-in-classic-themes b/projects/plugins/jetpack/changelog/fix-jetpack-google-fonts-in-classic-themes
deleted file mode 100644
index 0a2c259a241f1..0000000000000
--- a/projects/plugins/jetpack/changelog/fix-jetpack-google-fonts-in-classic-themes
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: other
-
-Fix the rendering of jetpack google fonts font faces for classic themes.
diff --git a/projects/plugins/jetpack/changelog/fix-publicize-php-unit-tests b/projects/plugins/jetpack/changelog/fix-publicize-php-unit-tests
deleted file mode 100644
index 62ae61fa5fb9f..0000000000000
--- a/projects/plugins/jetpack/changelog/fix-publicize-php-unit-tests
+++ /dev/null
@@ -1,5 +0,0 @@
-Significance: patch
-Type: other
-Comment: Fixed Publicize unit tests
-
-
diff --git a/projects/plugins/jetpack/changelog/fix-publicize-unit-tests-again b/projects/plugins/jetpack/changelog/fix-publicize-unit-tests-again
deleted file mode 100644
index c8f7896ae00a9..0000000000000
--- a/projects/plugins/jetpack/changelog/fix-publicize-unit-tests-again
+++ /dev/null
@@ -1,5 +0,0 @@
-Significance: patch
-Type: other
-Comment: Fixed publicize unit test
-
-
diff --git a/projects/plugins/jetpack/changelog/fix-social-connections-list-feature-check b/projects/plugins/jetpack/changelog/fix-social-connections-list-feature-check
deleted file mode 100644
index 76c3a4215d02f..0000000000000
--- a/projects/plugins/jetpack/changelog/fix-social-connections-list-feature-check
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: bugfix
-
-Social | Fix publicize error in the editor due to malformed connections data
diff --git a/projects/plugins/jetpack/changelog/fix-social-linkedin-profile-links b/projects/plugins/jetpack/changelog/fix-social-linkedin-profile-links
deleted file mode 100644
index 06f9ff81b9f67..0000000000000
--- a/projects/plugins/jetpack/changelog/fix-social-linkedin-profile-links
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: bugfix
-
-Social: Fix profile links for LinkedIn connections
diff --git a/projects/plugins/jetpack/changelog/fix-videopress-block-classic-themes b/projects/plugins/jetpack/changelog/fix-videopress-block-classic-themes
deleted file mode 100644
index a47d497c95f7d..0000000000000
--- a/projects/plugins/jetpack/changelog/fix-videopress-block-classic-themes
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: bugfix
-
-VideoPress: Fix issue with VideoPress block with 0 height and width
diff --git a/projects/plugins/jetpack/changelog/remove-contact-form-hocs b/projects/plugins/jetpack/changelog/remove-contact-form-hocs
deleted file mode 100644
index 3566d3d26c790..0000000000000
--- a/projects/plugins/jetpack/changelog/remove-contact-form-hocs
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: other
-
-Forms: Remove wrapping
element from form block.
diff --git a/projects/plugins/jetpack/changelog/remove-remove-jetpack-geo-location-2 b/projects/plugins/jetpack/changelog/remove-remove-jetpack-geo-location-2
deleted file mode 100644
index 7ad726083cde6..0000000000000
--- a/projects/plugins/jetpack/changelog/remove-remove-jetpack-geo-location-2
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: minor
-Type: other
-
-Deprecate Jetpack geo location module
diff --git a/projects/plugins/jetpack/changelog/clean-extra-composer-things b/projects/plugins/jetpack/changelog/renovate-webpack-cli-6.x
similarity index 50%
rename from projects/plugins/jetpack/changelog/clean-extra-composer-things
rename to projects/plugins/jetpack/changelog/renovate-webpack-cli-6.x
index 0246f2989b8fd..1eaea6a769e84 100644
--- a/projects/plugins/jetpack/changelog/clean-extra-composer-things
+++ b/projects/plugins/jetpack/changelog/renovate-webpack-cli-6.x
@@ -1,5 +1,4 @@
Significance: patch
Type: other
-Comment: Only updated dev tools
-
+Updated package dependencies.
diff --git a/projects/plugins/jetpack/changelog/revert-41075-update-related-posts-block-theme b/projects/plugins/jetpack/changelog/revert-41075-update-related-posts-block-theme
deleted file mode 100644
index 842a45c767d72..0000000000000
--- a/projects/plugins/jetpack/changelog/revert-41075-update-related-posts-block-theme
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: other
-
-Revert "Related Posts: Hide settings in block themes"
diff --git a/projects/plugins/jetpack/changelog/update-forms-unique-id b/projects/plugins/jetpack/changelog/update-forms-unique-id
deleted file mode 100644
index b9412e76b338b..0000000000000
--- a/projects/plugins/jetpack/changelog/update-forms-unique-id
+++ /dev/null
@@ -1,5 +0,0 @@
-Significance: patch
-Type: bugfix
-Comment: Forms: Add unique ids to each form
-
-
diff --git a/projects/plugins/jetpack/composer.json b/projects/plugins/jetpack/composer.json
index 7092b747b3737..46a456adaf195 100644
--- a/projects/plugins/jetpack/composer.json
+++ b/projects/plugins/jetpack/composer.json
@@ -106,7 +106,7 @@
"platform": {
"ext-intl": "0.0.0"
},
- "autoloader-suffix": "f11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ14_3_a_3",
+ "autoloader-suffix": "f11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ14_3_a_5",
"allow-plugins": {
"automattic/jetpack-autoloader": true,
"automattic/jetpack-composer-plugin": true
diff --git a/projects/plugins/jetpack/composer.lock b/projects/plugins/jetpack/composer.lock
index c0a6f20aff32f..0b2dd6881f968 100644
--- a/projects/plugins/jetpack/composer.lock
+++ b/projects/plugins/jetpack/composer.lock
@@ -1696,7 +1696,7 @@
"dist": {
"type": "path",
"url": "../../packages/masterbar",
- "reference": "9587aa811998a8a174ddae723de91faa7e179f93"
+ "reference": "1a08129a72ad4ad0483881bd8fc7b2a5376d9a3b"
},
"require": {
"automattic/jetpack-assets": "@dev",
@@ -1725,7 +1725,7 @@
"extra": {
"autotagger": true,
"branch-alias": {
- "dev-trunk": "0.11.x-dev"
+ "dev-trunk": "0.12.x-dev"
},
"changelogger": {
"link-template": "https://github.com/Automattic/jetpack-masterbar/compare/v${old}...v${new}"
diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/assistant-wizard.tsx b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/assistant-wizard.tsx
new file mode 100644
index 0000000000000..5e8254095acd1
--- /dev/null
+++ b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/assistant-wizard.tsx
@@ -0,0 +1,175 @@
+import { Button, Icon, Tooltip } from '@wordpress/components';
+import { useState, useEffect, useRef, useMemo, useCallback } from '@wordpress/element';
+import { __ } from '@wordpress/i18n';
+import { next, closeSmall, chevronLeft } from '@wordpress/icons';
+import debugFactory from 'debug';
+import { useKeywordsStep } from './use-keywords-step';
+import { useMetaDescriptionStep } from './use-meta-description-step';
+import { useTitleStep } from './use-title-step';
+import { OptionsInput, TextInput, CompletionInput } from './wizard-input';
+import WizardStep from './wizard-step';
+import type { Step, Option } from './types';
+
+const debug = debugFactory( 'jetpack-seo:assistant-wizard' );
+
+export default function AssistantWizard( { close, tasks } ) {
+ const [ currentStep, setCurrentStep ] = useState( 0 );
+ const [ currentStepData, setCurrentStepData ] = useState< Step >();
+ const [ isBusy ] = useState( false );
+ const stepsEndRef = useRef( null );
+ const scrollToBottom = () => {
+ stepsEndRef.current?.scrollIntoView( { behavior: 'smooth' } );
+ };
+ const keywordsInputRef = useRef( null );
+
+ useEffect( () => {
+ scrollToBottom();
+ }, [ currentStep ] );
+
+ // Keywords
+ const keywordsStepData = useKeywordsStep();
+ const titleStepData = useTitleStep();
+ const metaStepData = useMetaDescriptionStep();
+
+ // Memoize steps array to prevent unnecessary recreations
+ const steps = useMemo(
+ () => [ tasks[ 0 ], keywordsStepData, titleStepData, metaStepData, tasks[ 1 ] ],
+ [ tasks, keywordsStepData, titleStepData, metaStepData ]
+ );
+
+ const handleNext = useCallback( () => {
+ if ( currentStep + 1 < steps.length ) {
+ debug( 'moving to ' + ( currentStep + 1 ) );
+ setCurrentStep( currentStep + 1 );
+ setCurrentStepData( steps[ currentStep + 1 ] );
+ steps[ currentStep + 1 ].onStart?.();
+ }
+ }, [ currentStep, steps ] );
+
+ const handleStepSubmit = useCallback( async () => {
+ await steps[ currentStep ]?.onSubmit?.();
+ debug( 'step submitted, moving next' );
+ // always give half a second before moving forward
+ setTimeout( handleNext, 500 );
+ }, [ currentStep, handleNext, steps ] );
+
+ const jumpToStep = useCallback(
+ stepNumber => {
+ if ( stepNumber < steps.length - 1 ) {
+ setCurrentStep( stepNumber );
+ setCurrentStepData( stepNumber );
+ }
+ },
+ [ steps ]
+ );
+
+ const handleSelect = useCallback(
+ ( stepNumber: number, option: Option ) => {
+ if ( stepNumber !== currentStep ) {
+ jumpToStep( stepNumber );
+ }
+ steps[ stepNumber ].onSelect?.( option );
+ },
+ [ currentStep, jumpToStep, steps ]
+ );
+
+ // Initialize current step data
+ useEffect( () => {
+ if ( currentStep === 0 ) {
+ setCurrentStepData( steps[ 0 ] );
+ if ( steps[ 0 ].autoAdvance ) {
+ setTimeout( handleNext, steps[ 0 ].autoAdvance );
+ }
+ }
+ }, [ currentStep, steps, handleNext ] );
+
+ const handleBack = () => {
+ if ( currentStep > 1 ) {
+ debug( 'moving to ' + ( currentStep - 1 ) );
+ setCurrentStep( currentStep - 1 );
+ setCurrentStepData( steps[ currentStep - 1 ] );
+ }
+ };
+
+ const handleSkip = async () => {
+ await currentStepData?.onSkip?.();
+ handleNext();
+ };
+
+ // Reset states and close the wizard
+ const handleDone = () => {
+ close();
+ setCurrentStep( 0 );
+ setCurrentStepData( steps[ 0 ] );
+ };
+
+ return (
+
+
+
+
+
+
{ currentStepData?.title }
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { steps.map( ( step, index ) => (
+
= index }
+ options={ step.options || [] }
+ onSelect={ option => handleSelect( index, option ) }
+ />
+ ) ) }
+
+
+
+
+ { currentStep === 1 && (
+
+ ) }
+ { currentStep === 2 && (
+
+ ) }
+ { currentStep === 3 && (
+
+ ) }
+ { currentStep === steps.length - 1 && (
+
+ ) }
+
+
+ );
+}
diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/index.tsx b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/index.tsx
index 167dfa8d948c0..26ceb1e28adb9 100644
--- a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/index.tsx
+++ b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/index.tsx
@@ -2,37 +2,38 @@ import { useModuleStatus } from '@automattic/jetpack-shared-extension-utils';
import { Button } from '@wordpress/components';
import { useSelect } from '@wordpress/data';
import { store as editorStore } from '@wordpress/editor';
-import { useState } from '@wordpress/element';
+import { useState, useCallback } from '@wordpress/element';
import { __ } from '@wordpress/i18n';
import debugFactory from 'debug';
import { SeoPlaceholder } from '../../../../plugins/seo/components/placeholder';
import './style.scss';
import bigSkyIcon from './big-sky-icon.svg';
import SeoAssistantWizard from './seo-assistant-wizard';
-import type { SeoAssistantProps } from './types';
const debug = debugFactory( 'jetpack-ai:seo-assistant' );
-export default function SeoAssistant( { disabled, onStep }: SeoAssistantProps ) {
+export default function SeoAssistant( { disabled } ) {
const [ isOpen, setIsOpen ] = useState( false );
const postIsEmpty = useSelect( select => select( editorStore ).isEditedPostEmpty(), [] );
const { isLoadingModules, isChangingStatus, isModuleActive, changeStatus } =
useModuleStatus( 'seo-tools' );
+ const handleOpen = useCallback( () => setIsOpen( true ), [] );
+ const handleClose = useCallback( () => setIsOpen( false ), [] );
+
debug( 'rendering seo-assistant entry point' );
return (
{ __( 'Improve post engagement.', 'jetpack' ) }
{ ( isModuleActive || isLoadingModules ) && (
setIsOpen( true ) }
+ onClick={ handleOpen }
variant="secondary"
disabled={ isLoadingModules || isOpen || postIsEmpty || disabled }
- isBusy={ isLoadingModules || isOpen }
>
- { __( 'SEO Assistant', 'jetpack' ) }
+ { __( 'Optimize with AI', 'jetpack' ) }
) }
{ ! isModuleActive && ! isLoadingModules && (
@@ -42,7 +43,7 @@ export default function SeoAssistant( { disabled, onStep }: SeoAssistantProps )
changeStatus={ changeStatus }
/>
) }
-
setIsOpen( false ) } />
+ { isOpen && }
);
}
diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/seo-assistant-wizard.tsx b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/seo-assistant-wizard.tsx
index 4fd874e0f2c16..641e2cda5d452 100644
--- a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/seo-assistant-wizard.tsx
+++ b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/seo-assistant-wizard.tsx
@@ -1,167 +1,82 @@
-import { Button, Icon, Tooltip } from '@wordpress/components';
-import { useState, useCallback, useEffect, useRef, useMemo } from '@wordpress/element';
+import { createInterpolateElement } from '@wordpress/element';
import { __ } from '@wordpress/i18n';
-import { next, closeSmall, chevronLeft } from '@wordpress/icons';
import debugFactory from 'debug';
import './style.scss';
-import { useCompletionStep } from './use-completion-step';
-import { useKeywordsStep } from './use-keywords-step';
-import { useMetaDescriptionStep } from './use-meta-description-step';
-import { useTitleStep } from './use-title-step';
-import WizardInput from './wizard-input';
-import WizardMessages from './wizard-messages';
-import type { SeoAssistantProps, Step, Message } from './types';
+import AssistantWizard from './assistant-wizard';
const debug = debugFactory( 'jetpack-ai:seo-assistant-wizard' );
-export default function SeoAssistantWizard( { isOpen, close, onStep }: SeoAssistantProps ) {
- const [ currentStep, setCurrentStep ] = useState( 0 );
- const [ messages, setMessages ] = useState< Message[] >( [] );
- const messagesEndRef = useRef< HTMLDivElement >( null );
- const [ isBusy, setIsBusy ] = useState( false );
-
- const scrollToBottom = () => {
- messagesEndRef.current?.scrollIntoView( { behavior: 'smooth' } );
- };
-
- useEffect( () => {
- scrollToBottom();
- }, [ messages ] );
-
- const addMessage = useCallback( async ( message: Message ) => {
- const newMessage = {
- ...message,
- showIcon: message.showIcon === false ? false : ! message.isUser,
- } as Message;
-
- setMessages( prev => [ ...prev, { ...newMessage, id: `message-${ prev.length }` } ] );
- }, [] );
-
- /* Removes last message */
- const removeLastMessage = () => {
- setMessages( prev => prev.slice( 0, -1 ) );
- };
-
- const keywordsStep: Step = useKeywordsStep( {
- addMessage,
- onStep,
- } );
-
- const titleStep: Step = useTitleStep( {
- addMessage,
- removeLastMessage,
- onStep,
- contextData: keywordsStep.value,
- setIsBusy,
- } );
-
- const metaStep: Step = useMetaDescriptionStep( {
- addMessage,
- removeLastMessage,
- onStep,
- setIsBusy,
- } );
-
- const completionStep: Step = useCompletionStep( {
- steps: [ keywordsStep, titleStep, metaStep ],
- addMessage,
- } );
-
- const steps: Step[] = useMemo(
- () => [ keywordsStep, titleStep, metaStep, completionStep ],
- [ keywordsStep, metaStep, titleStep, completionStep ]
- );
-
- const currentStepData = useMemo( () => steps[ currentStep ], [ steps, currentStep ] );
-
- // initialize wizard, set completion monitors
- useEffect( () => {
- if ( ! isOpen ) {
- return;
- }
- // add messageQueue.length check here for delayed messages
- if ( messages.length === 0 ) {
- debug( 'init' );
- // Initialize with first step messages
- currentStepData.messages.forEach( addMessage );
- }
- }, [ isOpen, currentStepData.messages, messages, addMessage ] );
-
- const handleNext = useCallback( () => {
- if ( currentStep < steps.length - 1 ) {
- debug( 'moving to ' + ( currentStep + 1 ), steps[ currentStep + 1 ] );
- setCurrentStep( currentStep + 1 );
- // Add next step messages
- // TODO: can we capture completion step here and craft the messages?
- // Nothing else has worked so far to keep track of step completions
- steps[ currentStep + 1 ].messages.forEach( addMessage );
- steps[ currentStep + 1 ].onStart?.();
- }
- }, [ currentStep, steps, setCurrentStep, addMessage ] );
-
- const handleSubmit = useCallback( async () => {
- await currentStepData.onSubmit?.();
- handleNext();
- }, [ currentStepData, handleNext ] );
-
- const handleBack = () => {
- if ( currentStep > 0 ) {
- setCurrentStep( currentStep - 1 );
- // Re-add previous step messages
- steps[ currentStep - 1 ].messages.forEach( message =>
- addMessage( {
- content: message.content,
- showIcon: message.showIcon,
- } )
- );
- }
- };
-
- const handleSkip = async () => {
- await currentStepData?.onSkip?.();
- handleNext();
- };
-
- // Reset states and close the wizard
- const handleDone = useCallback( () => {
- close();
- setCurrentStep( 0 );
- setMessages( [] );
- steps
- .filter( step => step.type !== 'completion' )
- .forEach( step => step.setCompleted( false ) );
- }, [ close, steps ] );
-
+export default function SeoAssistantWizard( { close }: { close?: () => void } ) {
+ debug( 'render' );
return (
- isOpen && (
-
-
-
-
-
-
{ currentStepData.title }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- )
+
Hi there! 👋 Let's optimise your blog post for SEO.", 'jetpack' ),
+ { b: }
+ ),
+ showIcon: true,
+ id: '1',
+ },
+ {
+ content: createInterpolateElement(
+ __(
+ "Here's what we can improve: 1. Keywords 2. Title 3. Meta description",
+ 'jetpack'
+ ),
+ { br: }
+ ),
+ showIcon: false,
+ id: '2',
+ },
+ ],
+ },
+ {
+ id: 'completion',
+ title: __( 'Your post is SEO-ready', 'jetpack' ),
+ label: 'completion',
+ type: 'completion',
+ submitCtaLabel: __( 'Done!', 'jetpack' ),
+ onSubmit: () => close(),
+ messages: [
+ {
+ content: __( "Here's your updated checklist:", 'jetpack' ),
+ showIcon: true,
+ id: '1',
+ },
+ {
+ content: 'some summary here!',
+ showIcon: false,
+ id: '2',
+ },
+ {
+ content: createInterpolateElement(
+ __(
+ 'SEO optimization complete! 🎉 Your blog post is now search-engine friendly.',
+ 'jetpack'
+ ),
+ { br: }
+ ),
+ showIcon: true,
+ id: '3',
+ },
+ {
+ content: __( 'Happy blogging! 😊', 'jetpack' ),
+ showIcon: false,
+ id: '4',
+ },
+ ],
+ },
+ ] }
+ />
);
}
diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/style.scss b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/style.scss
index e541444b6a5e1..48038e9b2829a 100644
--- a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/style.scss
+++ b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/style.scss
@@ -1,4 +1,4 @@
-.seo-assistant-wizard {
+.assistant-wizard {
position: fixed;
bottom: 32px;
left: 50%;
@@ -11,6 +11,10 @@
z-index: 1000;
display: flex;
flex-direction: column;
+ // countering the Jetpack sidebar ai-feature styles:
+ button {
+ width: unset;
+ }
&__header {
flex: 0 0 auto;
@@ -54,7 +58,7 @@
display: flex;
flex-direction: column;
gap: 8px;
- padding: 16px 24px;
+ padding: 8px 24px;
overflow-y: auto;
scroll-behavior: smooth;
align-items: flex-start;
@@ -69,9 +73,9 @@
line-height: 1.5;
display: flex;
align-items: center;
- min-width: 48px;
+ min-width: 80%;
- .seo-assistant-wizard__message-icon {
+ .assistant-wizard__message-icon {
flex-shrink: 0;
align-self: center;
flex-basis: 26px;
@@ -81,7 +85,7 @@
}
}
- .seo-assistant-wizard__message-text {
+ .assistant-wizard__message-text {
padding: 4px 12px;
// flex: 1 0 200px;
}
@@ -90,8 +94,9 @@
background: #f3f4f6;
align-self: flex-end;
max-width: 85%;
+ min-width: 15%;
- .seo-assistant-wizard__message-icon {
+ .assistant-wizard__message-icon {
display: none;
}
}
@@ -103,6 +108,7 @@
background: white;
border-radius: 0 0 16px 16px;
border-top: 1px solid var( --jp-gray-5, #e5e7eb );
+ flex-basis: 77px; // seems better than min-height
}
&__input {
@@ -113,15 +119,24 @@
align-items: center;
padding-right: 6px;
height: 44px;
+ animation: assistantInputAppear 0.3s ease-out;
&:focus-within {
outline-width: 2px;
outline-color: var( --wp-components-color-accent, var( --wp-admin-theme-color, #007cba ) );
}
+
+ // keyboardshortcuts component wraps the base control with a div
+ // This is a quick fix to mimic the rule below (components-base-control)
+ & > div:first-child {
+ flex-grow: 1;
+ }
+
.components-base-control {
flex-grow: 1;
}
+
.components-text-control__input,
.components-text-control__input:focus {
padding: 8px;
@@ -176,6 +191,7 @@
justify-content: flex-end;
align-items: center;
gap: 16px;
+ animation: assistantInputAppear 0.3s ease-out;
.components-button {
border-radius: 20px;
@@ -202,6 +218,14 @@
transform: translateY(0);
}
}
+@keyframes assistantInputAppear {
+ from {
+ opacity: 0;
+ }
+ to {
+ opacity: 1;
+ }
+}
// Keep this around for magic:
@keyframes typing-blink {
diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/types.tsx b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/types.tsx
index d14a0d2578d19..04d51db8ef9d1 100644
--- a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/types.tsx
+++ b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/types.tsx
@@ -1,4 +1,4 @@
-type StepType = 'input' | 'options' | 'completion';
+type StepType = 'welcome' | 'input' | 'options' | 'completion';
export interface Message {
id?: string;
@@ -19,20 +19,20 @@ interface BaseStep {
id: string;
title: string;
label?: string;
- messages: StepMessage[];
+ messages: Message[];
type: StepType;
onStart?: () => void;
onSubmit?: () => void;
onSkip?: () => void;
- value: string;
- setValue:
+ value?: string;
+ setValue?:
| React.Dispatch< React.SetStateAction< string > >
| React.Dispatch< React.SetStateAction< Array< string > > >;
setCompleted?: React.Dispatch< React.SetStateAction< boolean > >;
completed?: boolean;
}
-interface InputStep extends BaseStep {
+export interface InputStep extends BaseStep {
type: 'input';
placeholder: string;
}
@@ -43,29 +43,11 @@ interface OptionsStep extends BaseStep {
onSelect: ( option: Option ) => void;
submitCtaLabel?: string;
onRetry?: () => void;
- onRetryCtaLabel?: string;
+ retryCtaLabel?: string;
}
interface CompletionStep extends BaseStep {
type: 'completion';
}
-interface StepMessage {
- content: string | React.ReactNode;
- showIcon?: boolean;
-}
-
export type Step = InputStep | OptionsStep | CompletionStep;
-
-export type CompletionStepHookProps = {
- steps: Step[];
- addMessage?: ( message: Message | string ) => void;
-};
-
-export interface SeoAssistantProps {
- isBusy?: boolean;
- disabled?: boolean;
- onStep?: ( data: { value: string | Option | null } ) => void;
- isOpen?: boolean;
- close?: () => void;
-}
diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/use-completion-step.tsx b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/use-completion-step.tsx
deleted file mode 100644
index a46bc41eadd5f..0000000000000
--- a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/use-completion-step.tsx
+++ /dev/null
@@ -1,49 +0,0 @@
-import { createInterpolateElement, useCallback } from '@wordpress/element';
-import { __ } from '@wordpress/i18n';
-import type { Step, CompletionStepHookProps } from './types';
-
-export const useCompletionStep = ( { steps }: CompletionStepHookProps ): Step => {
- const getSummaryCheck = useCallback( () => {
- const summaryString = steps
- .map( step => {
- const stepLabel = step.label || step.title;
- return step.completed ? `✅ ${ stepLabel }` : `❌ ${ stepLabel }`;
- } )
- .join( ' ' );
- return createInterpolateElement( summaryString, { br: } );
- }, [ steps ] );
-
- return {
- id: 'completion',
- title: __( 'Your post is SEO-ready', 'jetpack' ),
- // onStart: handleSummaryChecks,
- messages: [
- {
- content: __( "Here's your updated checklist:", 'jetpack' ),
- showIcon: true,
- },
- {
- content: getSummaryCheck(),
- showIcon: false,
- },
- {
- content: createInterpolateElement(
- __(
- 'SEO optimization complete! 🎉 Your blog post is now search-engine friendly.',
- 'jetpack'
- ),
- { br: }
- ),
- showIcon: true,
- },
- {
- content: __( 'Happy blogging! 😊', 'jetpack' ),
- showIcon: false,
- },
- ],
- type: 'completion',
- // onStart: handleStart,
- value: null,
- setValue: () => null,
- };
-};
diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/use-keywords-step.tsx b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/use-keywords-step.tsx
index ac811cd2546af..c8a3a1df9b2ed 100644
--- a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/use-keywords-step.tsx
+++ b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/use-keywords-step.tsx
@@ -1,36 +1,56 @@
-import { createInterpolateElement, useCallback, useState } from '@wordpress/element';
+import { createInterpolateElement, useCallback, useState, useEffect } from '@wordpress/element';
import { __, sprintf } from '@wordpress/i18n';
-import type { Step } from './types';
+import TypingMessage from './typing-message';
+import { useMessages } from './wizard-messages';
+import type { InputStep } from './types';
-export const useKeywordsStep = ( { addMessage, onStep } ): Step => {
+export const useKeywordsStep = (): InputStep => {
const [ keywords, setKeywords ] = useState( '' );
const [ completed, setCompleted ] = useState( false );
+ const { messages, setMessages, addMessage, removeLastMessage } = useMessages();
+
+ useEffect( () => {
+ setMessages( [
+ {
+ content: __(
+ 'To start, please enter 1–3 focus keywords that describe your blog post.',
+ 'jetpack'
+ ),
+ showIcon: true,
+ },
+ ] );
+ }, [ setMessages ] );
const handleSkip = useCallback( () => {
addMessage( { content: __( 'Skipped!', 'jetpack' ) } );
- if ( onStep ) {
- onStep( { value: '' } );
- }
- }, [ addMessage, onStep ] );
+ }, [ addMessage ] );
- const handleKeywordsSubmit = useCallback( () => {
+ const handleKeywordsSubmit = useCallback( async () => {
if ( ! keywords.trim() ) {
return handleSkip();
}
addMessage( { content: keywords, isUser: true } );
+ addMessage( { content: } );
+
+ const keywordlist = await new Promise( resolve =>
+ setTimeout( () => {
+ const commaSeparatedKeywords = keywords
+ .split( ',' )
+ .map( k => k.trim() )
+ .reduce( ( acc, curr, i, arr ) => {
+ if ( arr.length === 1 ) {
+ return curr;
+ }
+ if ( i === arr.length - 1 ) {
+ return `${ acc } & ${ curr }`;
+ }
+ return i === 0 ? curr : `${ acc }, ${ curr }`;
+ }, '' );
+ resolve( commaSeparatedKeywords );
+ }, 500 )
+ );
+ removeLastMessage();
- const keywordlist = keywords
- .split( ',' )
- .map( k => k.trim() )
- .reduce( ( acc, curr, i, arr ) => {
- if ( arr.length === 1 ) {
- return curr;
- }
- if ( i === arr.length - 1 ) {
- return `${ acc } & ${ curr }`;
- }
- return i === 0 ? curr : `${ acc }, ${ curr }`;
- }, '' );
const message = createInterpolateElement(
/* Translators: wrapped string is list of keywords user has entered */
sprintf( __( `Got it! You're targeting %s . ✨✅`, 'jetpack' ), keywordlist ),
@@ -40,41 +60,13 @@ export const useKeywordsStep = ( { addMessage, onStep } ): Step => {
);
addMessage( { content: message } );
setCompleted( true );
- if ( onStep ) {
- onStep( { value: keywords } );
- }
- }, [ onStep, addMessage, keywords, handleSkip ] );
+ }, [ addMessage, keywords, handleSkip, removeLastMessage ] );
return {
id: 'keywords',
title: __( 'Optimise for SEO', 'jetpack' ),
label: __( 'Keywords', 'jetpack' ),
- messages: [
- {
- content: createInterpolateElement(
- __( "Hi there! 👋 Let's optimise your blog post for SEO. ", 'jetpack' ),
- { b: }
- ),
- showIcon: true,
- },
- {
- content: createInterpolateElement(
- __(
- "Here's what we can improve: 1. Keywords 2. Title 3. Meta description",
- 'jetpack'
- ),
- { br: }
- ),
- showIcon: false,
- },
- {
- content: __(
- 'To start, please enter 1–3 focus keywords that describe your blog post.',
- 'jetpack'
- ),
- showIcon: true,
- },
- ],
+ messages,
type: 'input',
placeholder: __( 'Photography, plants', 'jetpack' ),
onSubmit: handleKeywordsSubmit,
diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/use-meta-description-step.tsx b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/use-meta-description-step.tsx
index 5b4699fd95872..6ad5f60bc960f 100644
--- a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/use-meta-description-step.tsx
+++ b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/use-meta-description-step.tsx
@@ -1,20 +1,28 @@
import { useDispatch } from '@wordpress/data';
-import { useCallback, useState } from '@wordpress/element';
+import { useCallback, useState, useEffect, createInterpolateElement } from '@wordpress/element';
import { __ } from '@wordpress/i18n';
import TypingMessage from './typing-message';
+import { useMessages } from './wizard-messages';
import type { Step, Option } from './types';
-export const useMetaDescriptionStep = ( {
- addMessage,
- removeLastMessage,
- onStep,
- setIsBusy,
-} ): Step => {
+export const useMetaDescriptionStep = (): Step => {
const [ selectedMetaDescription, setSelectedMetaDescription ] = useState< string >();
const [ metaDescriptionOptions, setMetaDescriptionOptions ] = useState< Option[] >( [] );
+ const { messages, setMessages, addMessage, removeLastMessage, editLastMessage } = useMessages();
const { editPost } = useDispatch( 'core/editor' );
const [ completed, setCompleted ] = useState( false );
+ useEffect( () => {
+ if ( messages.length === 0 ) {
+ setMessages( [
+ {
+ content: __( "Now, let's optimize your meta description.", 'jetpack' ),
+ showIcon: true,
+ },
+ ] );
+ }
+ }, [ setMessages, messages ] );
+
const handleMetaDescriptionSelect = useCallback( ( option: Option ) => {
setSelectedMetaDescription( option.content );
setMetaDescriptionOptions( prev =>
@@ -29,16 +37,11 @@ export const useMetaDescriptionStep = ( {
addMessage( { content: } );
await editPost( { meta: { advanced_seo_description: selectedMetaDescription } } );
removeLastMessage();
- addMessage( { content: selectedMetaDescription, isUser: true } );
addMessage( { content: __( 'Meta description updated! ✅', 'jetpack' ) } );
setCompleted( true );
- if ( onStep ) {
- onStep( { value: selectedMetaDescription } );
- }
- }, [ selectedMetaDescription, onStep, addMessage, editPost, removeLastMessage ] );
+ }, [ selectedMetaDescription, addMessage, editPost, removeLastMessage ] );
const handleMetaDescriptionGenerate = useCallback( async () => {
- setIsBusy( true );
let newMetaDescriptions;
// we only generate if options are empty
if ( metaDescriptionOptions.length === 0 ) {
@@ -58,13 +61,18 @@ export const useMetaDescriptionStep = ( {
);
removeLastMessage();
}
- addMessage( { content: __( "Here's a suggestion:", 'jetpack' ) } );
+ const editedFirstMessage = createInterpolateElement(
+ __( "Now, let's optimize your meta description. Here's a suggestion:", 'jetpack' ),
+ { br: }
+ );
+ // addMessage( { content: __( "Here's a suggestion:", 'jetpack' ) } );
+ editLastMessage( editedFirstMessage );
setMetaDescriptionOptions( newMetaDescriptions || metaDescriptionOptions );
- setIsBusy( false );
- }, [ metaDescriptionOptions, addMessage, removeLastMessage, setIsBusy ] );
+ }, [ metaDescriptionOptions, addMessage, removeLastMessage, editLastMessage ] );
const handleMetaDescriptionRegenerate = useCallback( async () => {
setMetaDescriptionOptions( [] );
+ editLastMessage( __( "Now, let's optimize your meta description.", 'jetpack' ) );
addMessage( { content: } );
const newMetaDescription = await new Promise< Array< Option > >( resolve =>
setTimeout(
@@ -80,33 +88,30 @@ export const useMetaDescriptionStep = ( {
)
);
removeLastMessage();
- addMessage( { content: __( "Here's a new suggestion:", 'jetpack' ) } );
+ // addMessage( { content: __( "Here's a new suggestion:", 'jetpack' ) } );
+ const editedFirstMessage = createInterpolateElement(
+ __( "Now, let's optimize your meta description. Here's a new suggestion:", 'jetpack' ),
+ { br: }
+ );
+ editLastMessage( editedFirstMessage );
setMetaDescriptionOptions( newMetaDescription );
- }, [ addMessage, removeLastMessage ] );
+ }, [ addMessage, removeLastMessage, editLastMessage ] );
const handleSkip = useCallback( () => {
addMessage( { content: __( 'Skipped!', 'jetpack' ) } );
- if ( onStep ) {
- onStep();
- }
- }, [ addMessage, onStep ] );
+ }, [ addMessage ] );
return {
id: 'meta',
title: __( 'Add meta description', 'jetpack' ),
- messages: [
- {
- content: __( "Now, let's optimize your meta description.", 'jetpack' ),
- showIcon: true,
- },
- ],
+ messages: messages,
type: 'options',
options: metaDescriptionOptions,
onSelect: handleMetaDescriptionSelect,
onSubmit: handleMetaDescriptionSubmit,
submitCtaLabel: __( 'Insert', 'jetpack' ),
onRetry: handleMetaDescriptionRegenerate,
- onRetryCtaLabel: __( 'Regenerate', 'jetpack' ),
+ retryCtaLabel: __( 'Regenerate', 'jetpack' ),
onStart: handleMetaDescriptionGenerate,
onSkip: handleSkip,
value: selectedMetaDescription,
diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/use-title-step.tsx b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/use-title-step.tsx
index 0153dab8dfaab..1ced6c572c62f 100644
--- a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/use-title-step.tsx
+++ b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/use-title-step.tsx
@@ -2,18 +2,14 @@ import { useDispatch } from '@wordpress/data';
import { useCallback, useState, useEffect } from '@wordpress/element';
import { __ } from '@wordpress/i18n';
import TypingMessage from './typing-message';
+import { useMessages } from './wizard-messages';
import type { Step, Option } from './types';
-export const useTitleStep = ( {
- addMessage,
- removeLastMessage,
- onStep,
- contextData,
- setIsBusy,
-} ): Step => {
+export const useTitleStep = (): Step => {
const [ selectedTitle, setSelectedTitle ] = useState< string >();
const [ titleOptions, setTitleOptions ] = useState< Option[] >( [] );
const { editPost } = useDispatch( 'core/editor' );
+ const { messages, setMessages, addMessage, removeLastMessage } = useMessages();
const [ completed, setCompleted ] = useState( false );
const handleTitleSelect = useCallback( ( option: Option ) => {
@@ -26,10 +22,16 @@ export const useTitleStep = ( {
);
}, [] );
- useEffect( () => setTitleOptions( [] ), [ contextData ] );
+ useEffect( () => {
+ setMessages( [
+ {
+ content: __( "Let's optimise your title.", 'jetpack' ),
+ showIcon: true,
+ },
+ ] );
+ }, [ setMessages ] );
const handleTitleGenerate = useCallback( async () => {
- setIsBusy( true );
let newTitles;
// we only generate if options are empty
if ( titleOptions.length === 0 ) {
@@ -53,43 +55,18 @@ export const useTitleStep = ( {
);
removeLastMessage();
}
- if ( contextData ) {
- addMessage( {
- content: __(
- 'Here are two suggestions based on your keywords. Select the one you prefer:',
- 'jetpack'
- ),
- } );
- } else {
- addMessage( {
- content: __( 'Here are two suggestions. Select the one you prefer:', 'jetpack' ),
- } );
- }
- setTitleOptions( newTitles || titleOptions );
- setIsBusy( false );
- }, [ titleOptions, addMessage, removeLastMessage, contextData, setIsBusy ] );
-
- const replaceOptionsWithFauxUseMessages = useCallback( () => {
- const optionsMessage = {
- id: 'title-options-' + Math.random(),
- content: '',
- type: 'past-options',
- options: [],
- showIcon: false,
- };
- // removeLastMessage();
- titleOptions.forEach( titleOption => {
- optionsMessage.options.push( { ...titleOption } );
+ addMessage( {
+ content: __(
+ 'Here are two suggestions based on your keywords. Select the one you prefer:',
+ 'jetpack'
+ ),
} );
- addMessage( optionsMessage );
- }, [ titleOptions, addMessage ] );
+ setTitleOptions( newTitles || titleOptions );
+ }, [ titleOptions, addMessage, removeLastMessage ] );
const handleTitleRegenerate = useCallback( async () => {
- // let the controller know we're working
- setIsBusy( true );
-
// This would typically be an async call to generate new titles
- replaceOptionsWithFauxUseMessages();
+ // replaceOptionsWithFauxUseMessages();
setTitleOptions( [] );
addMessage( { content: } );
const newTitles = await new Promise< Array< Option > >( resolve =>
@@ -117,54 +94,31 @@ export const useTitleStep = ( {
),
} );
setTitleOptions( newTitles );
- setIsBusy( false );
- }, [ addMessage, removeLastMessage, replaceOptionsWithFauxUseMessages, setIsBusy ] );
+ }, [ addMessage, removeLastMessage ] );
const handleTitleSubmit = useCallback( async () => {
- replaceOptionsWithFauxUseMessages();
addMessage( { content: } );
await editPost( { title: selectedTitle, meta: { jetpack_seo_html_title: selectedTitle } } );
removeLastMessage();
addMessage( { content: __( 'Title updated! ✅', 'jetpack' ) } );
setCompleted( true );
- if ( onStep ) {
- onStep( { value: selectedTitle } );
- }
- }, [
- selectedTitle,
- onStep,
- addMessage,
- replaceOptionsWithFauxUseMessages,
- editPost,
- removeLastMessage,
- ] );
+ }, [ selectedTitle, addMessage, editPost, removeLastMessage ] );
const handleSkip = useCallback( () => {
- if ( titleOptions.length ) {
- replaceOptionsWithFauxUseMessages();
- }
- addMessage( __( 'Skipped!', 'jetpack' ) );
- if ( onStep ) {
- onStep();
- }
- }, [ addMessage, onStep, titleOptions, replaceOptionsWithFauxUseMessages ] );
+ addMessage( { content: __( 'Skipped!', 'jetpack' ) } );
+ }, [ addMessage ] );
return {
id: 'title',
title: __( 'Optimise Title', 'jetpack' ),
- messages: [
- {
- content: __( "Let's optimise your title.", 'jetpack' ),
- showIcon: true,
- },
- ],
+ messages,
type: 'options',
options: titleOptions,
onSelect: handleTitleSelect,
onSubmit: handleTitleSubmit,
submitCtaLabel: __( 'Insert', 'jetpack' ),
onRetry: handleTitleRegenerate,
- onRetryCtaLabel: __( 'Regenerate', 'jetpack' ),
+ retryCtaLabel: __( 'Regenerate', 'jetpack' ),
onStart: handleTitleGenerate,
onSkip: handleSkip,
value: selectedTitle,
diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/wizard-input.tsx b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/wizard-input.tsx
index f9263e0188088..536c5117f34e3 100644
--- a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/wizard-input.tsx
+++ b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/wizard-input.tsx
@@ -1,51 +1,55 @@
-import { Button, TextControl, Icon } from '@wordpress/components';
-import { __ } from '@wordpress/i18n';
+import { Button, TextControl, Icon, KeyboardShortcuts } from '@wordpress/components';
+import { forwardRef } from '@wordpress/element';
import { arrowRight } from '@wordpress/icons';
-export default function WizardInput( { currentStepData, handleSubmit, handleDone } ) {
- const selectedOption =
- currentStepData.type === 'options' ? currentStepData.options.find( opt => opt.selected ) : null;
+export const OptionsInput = ( {
+ disabled,
+ handleRetry,
+ retryCtaLabel,
+ handleSubmit,
+ submitCtaLabel,
+} ) => {
return (
-
- { currentStepData.type === 'input' && (
-
-
-
- ↑
-
-
- ) }
+
+
+ { retryCtaLabel }
+
- { currentStepData.type === 'options' && (
-
-
- { currentStepData.onRetryCtaLabel }
-
-
-
- { currentStepData.submitCtaLabel }
-
-
-
- ) }
+
+ { submitCtaLabel }
+
+
+
+ );
+};
- { currentStepData.type === 'completion' && (
-
-
- { __( 'Done', 'jetpack' ) }
-
-
- ) }
+function UnforwardedKeywordsInput( { placeholder, value, setValue, handleSubmit }, ref ) {
+ return (
+
+
+
+
+
+ ↑
+
);
}
+
+export const TextInput = forwardRef( UnforwardedKeywordsInput );
+
+export const CompletionInput = ( { submitCtaLabel, handleSubmit } ) => {
+ return (
+
+
+ { submitCtaLabel }
+
+
+ );
+};
diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/wizard-messages.tsx b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/wizard-messages.tsx
index fc6e0af1dc98c..295086b82254d 100644
--- a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/wizard-messages.tsx
+++ b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/wizard-messages.tsx
@@ -1,27 +1,81 @@
-import { useEffect, useRef } from '@wordpress/element';
+import { useCallback, useEffect, useRef, useState } from '@wordpress/element';
import { __ } from '@wordpress/i18n';
import clsx from 'clsx';
import bigSkyIcon from './big-sky-icon.svg';
+import TypingMessage from './typing-message';
+import type { Message } from './types';
-const Message = ( { message } ) => {
+const randomId = () => Math.random().toString( 32 ).substring( 2, 8 );
+
+export const useMessages = () => {
+ const [ messages, setMessages ] = useState< Message[] >( [] );
+
+ const wrapMessagesWithId = useCallback(
+ rawMessages => {
+ setMessages(
+ rawMessages.map( rawMessage => ( { ...rawMessage, id: rawMessage.id || randomId() } ) )
+ );
+ },
+ [ setMessages ]
+ );
+
+ const addMessage = async ( message: Message ) => {
+ const newMessage = {
+ ...message,
+ showIcon: message.showIcon === false ? false : ! message.isUser,
+ id: message.id || randomId(),
+ } as Message;
+
+ setMessages( prev => [ ...prev, newMessage ] );
+ };
+
+ /* Removes last message */
+ const removeLastMessage = () => {
+ setMessages( prev => prev.slice( 0, -1 ) );
+ };
+
+ /* Edits content of last message */
+ const editLastMessage = ( content: Message[ 'content' ] ) => {
+ setMessages( prev => {
+ const prevMessages = [ ...prev ];
+ if ( prevMessages.length > 0 ) {
+ prevMessages[ prevMessages.length - 1 ] = {
+ ...prevMessages[ prevMessages.length - 1 ],
+ content,
+ };
+ }
+ return prevMessages;
+ } );
+ };
+
+ return {
+ messages,
+ setMessages: wrapMessagesWithId,
+ addMessage,
+ removeLastMessage,
+ editLastMessage,
+ };
+};
+
+export const MessageBubble = ( { message } ) => {
return (
-
+
{ message.showIcon && (
) }
{ message.type === 'past-options' && (
-
+
{ message.options.map( option => (
@@ -32,29 +86,29 @@ const Message = ( { message } ) => {
) }
{ ( ! message.type || message.type === 'chat' ) && (
-
{ message.content }
+
{ message.content }
) }
);
};
-const OptionMessages = ( { currentStepData } ) => {
- if ( currentStepData.type !== 'options' || ! currentStepData.options.length ) {
+const OptionMessages = ( { options = [], onSelect } ) => {
+ if ( ! options.length ) {
return null;
}
return (
-
-
-
-
- { currentStepData.options.map( option => (
+
+
+
+
+ { options.map( option => (
currentStepData.onSelect( option ) }
+ onClick={ () => onSelect( option ) }
>
{ option.content }
@@ -65,7 +119,7 @@ const OptionMessages = ( { currentStepData } ) => {
);
};
-export default function Messages( { currentStepData, messages } ) {
+export default function Messages( { options, onSelect, messages, loading } ) {
const messagesEndRef = useRef< HTMLDivElement >( null );
const scrollToBottom = () => {
messagesEndRef.current?.scrollIntoView( { behavior: 'smooth' } );
@@ -76,12 +130,15 @@ export default function Messages( { currentStepData, messages } ) {
}, [ messages ] );
return (
-
- { messages.map( message => (
-
- ) ) }
-
+ <>
+
+ { messages.map( message => (
+
+ ) ) }
+
+ { loading && } } /> }
+
-
+ >
);
}
diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/wizard-step.tsx b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/wizard-step.tsx
new file mode 100644
index 0000000000000..e2257e06a6723
--- /dev/null
+++ b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/seo-assistant/wizard-step.tsx
@@ -0,0 +1,25 @@
+import { useRef } from '@wordpress/element';
+import clsx from 'clsx';
+import { default as WizardMessages } from './wizard-messages';
+
+export default function WizardStep( {
+ className = '',
+ messages,
+ visible,
+ loading = false,
+ options = [],
+ onSelect,
+} ) {
+ const stepRef = useRef( null );
+ const classes = clsx( 'assistant-wizard-step', className );
+ return (
+
+
+
+ );
+}
diff --git a/projects/plugins/jetpack/jetpack.php b/projects/plugins/jetpack/jetpack.php
index 095e97494f88a..8ea34457295d0 100644
--- a/projects/plugins/jetpack/jetpack.php
+++ b/projects/plugins/jetpack/jetpack.php
@@ -4,7 +4,7 @@
* Plugin URI: https://jetpack.com
* Description: Security, performance, and marketing tools made by WordPress experts. Jetpack keeps your site protected so you can focus on more important things.
* Author: Automattic
- * Version: 14.3-a.3
+ * Version: 14.3-a.5
* Author URI: https://jetpack.com
* License: GPL2+
* Text Domain: jetpack
@@ -34,7 +34,7 @@
define( 'JETPACK__MINIMUM_WP_VERSION', '6.6' );
define( 'JETPACK__MINIMUM_PHP_VERSION', '7.2' );
-define( 'JETPACK__VERSION', '14.3-a.3' );
+define( 'JETPACK__VERSION', '14.3-a.5' );
/**
* Constant used to fetch the connection owner token
diff --git a/projects/plugins/jetpack/modules/geo-location/class.jetpack-geo-location.php b/projects/plugins/jetpack/modules/geo-location/class.jetpack-geo-location.php
index 450edb92ee352..5552ce54c5250 100644
--- a/projects/plugins/jetpack/modules/geo-location/class.jetpack-geo-location.php
+++ b/projects/plugins/jetpack/modules/geo-location/class.jetpack-geo-location.php
@@ -63,7 +63,7 @@ public function __construct() {
public function wordpress_init() {
// Only render location label after post content, if the theme claims to support "geo-location".
if ( current_theme_supports( 'jetpack-geo-location' ) ) {
- _deprecated_class( 'Jetpack_Geo_Location', '$$next-version$$', '' );
+ _deprecated_class( 'Jetpack_Geo_Location', '14.3', '' );
}
}
}
diff --git a/projects/plugins/jetpack/package.json b/projects/plugins/jetpack/package.json
index 1b1a3c0ae5eac..9fbb9c85aa850 100644
--- a/projects/plugins/jetpack/package.json
+++ b/projects/plugins/jetpack/package.json
@@ -114,7 +114,7 @@
"tinycolor2": "1.4.2",
"tus-js-client": "4.2.3",
"webpack": "5.94.0",
- "webpack-cli": "4.9.1"
+ "webpack-cli": "6.0.1"
},
"devDependencies": {
"@automattic/color-studio": "4.0.0",
diff --git a/projects/plugins/jetpack/readme.txt b/projects/plugins/jetpack/readme.txt
index 705a43e725a2b..7b698af14a10a 100644
--- a/projects/plugins/jetpack/readme.txt
+++ b/projects/plugins/jetpack/readme.txt
@@ -326,17 +326,16 @@ Jetpack Backup can do a full website migration to a new host, migrate theme file
== Changelog ==
-### 14.3-a.3 - 2025-01-20
+### 14.3-a.5 - 2025-01-27
#### Enhancements
-- Forms: Allow HTML block within forms.
-- Show Infinite Scroll options in Simple Classic.
+- Forms: Add Checkbox and Consent field enter action to create a new block.
#### Bug fixes
-- Fix: Newsletter toggle in editor sidebar has a visually broken active state.
-- Forms: Fix dropdown icon style.
-- Photon: Fix double encoding image urls.
-- Sharing: Fix the location of the sharing dialog so it is not always the first sharing element on the page.
-- Social: Fix wordpress.com login error when connecting Social accounts.
+- Forms: Make the icons show up as expected in the style editor.
+- Sitemaps: Ensure a valid news sitemap is present even if no posts are eligible.
+- Social: Fix profile links for LinkedIn connections.
+- Social: Fix Publicize error in the editor due to malformed connections data.
+- VideoPress: Fix issue with VideoPress block with zero height and width.
--------
diff --git a/projects/plugins/mu-wpcom-plugin/changelog/add-site-widget b/projects/plugins/mu-wpcom-plugin/changelog/add-site-widget
new file mode 100644
index 0000000000000..db8bc5eafa54e
--- /dev/null
+++ b/projects/plugins/mu-wpcom-plugin/changelog/add-site-widget
@@ -0,0 +1,4 @@
+Significance: minor
+Type: added
+
+Dashboard: add site preview and links
diff --git a/projects/plugins/jetpack/changelog/prerelease#2 b/projects/plugins/mu-wpcom-plugin/changelog/prerelease#4
similarity index 79%
rename from projects/plugins/jetpack/changelog/prerelease#2
rename to projects/plugins/mu-wpcom-plugin/changelog/prerelease#4
index a1c1831fa1ef7..9aa70e3ec1f75 100644
--- a/projects/plugins/jetpack/changelog/prerelease#2
+++ b/projects/plugins/mu-wpcom-plugin/changelog/prerelease#4
@@ -1,5 +1,5 @@
Significance: patch
-Type: other
+Type: changed
Comment: Updated composer.lock.
diff --git a/projects/plugins/mu-wpcom-plugin/composer.lock b/projects/plugins/mu-wpcom-plugin/composer.lock
index 5809ffd01bef4..4d6ef09c78296 100644
--- a/projects/plugins/mu-wpcom-plugin/composer.lock
+++ b/projects/plugins/mu-wpcom-plugin/composer.lock
@@ -1024,7 +1024,7 @@
"dist": {
"type": "path",
"url": "../../packages/masterbar",
- "reference": "9587aa811998a8a174ddae723de91faa7e179f93"
+ "reference": "1a08129a72ad4ad0483881bd8fc7b2a5376d9a3b"
},
"require": {
"automattic/jetpack-assets": "@dev",
@@ -1053,7 +1053,7 @@
"extra": {
"autotagger": true,
"branch-alias": {
- "dev-trunk": "0.11.x-dev"
+ "dev-trunk": "0.12.x-dev"
},
"changelogger": {
"link-template": "https://github.com/Automattic/jetpack-masterbar/compare/v${old}...v${new}"
diff --git a/projects/plugins/protect/changelog/renovate-webpack-cli-6.x b/projects/plugins/protect/changelog/renovate-webpack-cli-6.x
new file mode 100644
index 0000000000000..c47cb18e82997
--- /dev/null
+++ b/projects/plugins/protect/changelog/renovate-webpack-cli-6.x
@@ -0,0 +1,4 @@
+Significance: patch
+Type: changed
+
+Updated package dependencies.
diff --git a/projects/plugins/protect/package.json b/projects/plugins/protect/package.json
index 677dca360c4b6..5381c47827c08 100644
--- a/projects/plugins/protect/package.json
+++ b/projects/plugins/protect/package.json
@@ -60,6 +60,6 @@
"sass-loader": "12.4.0",
"typescript": "5.0.4",
"webpack": "5.94.0",
- "webpack-cli": "4.9.1"
+ "webpack-cli": "6.0.1"
}
}
diff --git a/projects/plugins/social/changelog/renovate-webpack-cli-6.x b/projects/plugins/social/changelog/renovate-webpack-cli-6.x
new file mode 100644
index 0000000000000..c47cb18e82997
--- /dev/null
+++ b/projects/plugins/social/changelog/renovate-webpack-cli-6.x
@@ -0,0 +1,4 @@
+Significance: patch
+Type: changed
+
+Updated package dependencies.
diff --git a/projects/plugins/social/package.json b/projects/plugins/social/package.json
index 24bc0cb7e5a16..a43197c2e3f94 100644
--- a/projects/plugins/social/package.json
+++ b/projects/plugins/social/package.json
@@ -68,6 +68,6 @@
"sass": "1.64.1",
"sass-loader": "12.4.0",
"webpack": "5.94.0",
- "webpack-cli": "4.9.1"
+ "webpack-cli": "6.0.1"
}
}
diff --git a/projects/plugins/starter-plugin/changelog/renovate-webpack-cli-6.x b/projects/plugins/starter-plugin/changelog/renovate-webpack-cli-6.x
new file mode 100644
index 0000000000000..c47cb18e82997
--- /dev/null
+++ b/projects/plugins/starter-plugin/changelog/renovate-webpack-cli-6.x
@@ -0,0 +1,4 @@
+Significance: patch
+Type: changed
+
+Updated package dependencies.
diff --git a/projects/plugins/starter-plugin/package.json b/projects/plugins/starter-plugin/package.json
index 8ffa6f4e10a67..e2573fe9ad72c 100644
--- a/projects/plugins/starter-plugin/package.json
+++ b/projects/plugins/starter-plugin/package.json
@@ -52,6 +52,6 @@
"sass": "1.64.1",
"sass-loader": "12.4.0",
"webpack": "5.94.0",
- "webpack-cli": "4.9.1"
+ "webpack-cli": "6.0.1"
}
}
diff --git a/projects/plugins/videopress/changelog/renovate-webpack-cli-6.x b/projects/plugins/videopress/changelog/renovate-webpack-cli-6.x
new file mode 100644
index 0000000000000..c47cb18e82997
--- /dev/null
+++ b/projects/plugins/videopress/changelog/renovate-webpack-cli-6.x
@@ -0,0 +1,4 @@
+Significance: patch
+Type: changed
+
+Updated package dependencies.
diff --git a/projects/plugins/videopress/package.json b/projects/plugins/videopress/package.json
index cf180cd49235d..b1b89ae2519b2 100644
--- a/projects/plugins/videopress/package.json
+++ b/projects/plugins/videopress/package.json
@@ -36,6 +36,6 @@
"sass": "1.64.1",
"sass-loader": "12.4.0",
"webpack": "5.94.0",
- "webpack-cli": "4.9.1"
+ "webpack-cli": "6.0.1"
}
}
diff --git a/projects/plugins/wpcomsh/changelog/add-site-widget b/projects/plugins/wpcomsh/changelog/add-site-widget
new file mode 100644
index 0000000000000..db8bc5eafa54e
--- /dev/null
+++ b/projects/plugins/wpcomsh/changelog/add-site-widget
@@ -0,0 +1,4 @@
+Significance: minor
+Type: added
+
+Dashboard: add site preview and links
diff --git a/projects/plugins/jetpack/changelog/prerelease b/projects/plugins/wpcomsh/changelog/prerelease#10
similarity index 79%
rename from projects/plugins/jetpack/changelog/prerelease
rename to projects/plugins/wpcomsh/changelog/prerelease#10
index a1c1831fa1ef7..9aa70e3ec1f75 100644
--- a/projects/plugins/jetpack/changelog/prerelease
+++ b/projects/plugins/wpcomsh/changelog/prerelease#10
@@ -1,5 +1,5 @@
Significance: patch
-Type: other
+Type: changed
Comment: Updated composer.lock.
diff --git a/projects/plugins/wpcomsh/composer.lock b/projects/plugins/wpcomsh/composer.lock
index bdef3c1de7ae1..1b73f1ccae51c 100644
--- a/projects/plugins/wpcomsh/composer.lock
+++ b/projects/plugins/wpcomsh/composer.lock
@@ -1161,7 +1161,7 @@
"dist": {
"type": "path",
"url": "../../packages/masterbar",
- "reference": "9587aa811998a8a174ddae723de91faa7e179f93"
+ "reference": "1a08129a72ad4ad0483881bd8fc7b2a5376d9a3b"
},
"require": {
"automattic/jetpack-assets": "@dev",
@@ -1190,7 +1190,7 @@
"extra": {
"autotagger": true,
"branch-alias": {
- "dev-trunk": "0.11.x-dev"
+ "dev-trunk": "0.12.x-dev"
},
"changelogger": {
"link-template": "https://github.com/Automattic/jetpack-masterbar/compare/v${old}...v${new}"