diff --git a/.github/versions.sh b/.github/versions.sh index 439fc660f8607..a96fbbba552b9 100644 --- a/.github/versions.sh +++ b/.github/versions.sh @@ -2,7 +2,7 @@ PHP_VERSION=8.2 COMPOSER_VERSION=2.8.3 NODE_VERSION=22.9.0 -PNPM_VERSION=9.3.0 +PNPM_VERSION=9.15.0 # Other useful version numbers. MIN_PHP_VERSION=7.2 diff --git a/.husky/post-checkout b/.husky/post-checkout index 9446120543228..2c34b3c5d7416 100755 --- a/.husky/post-checkout +++ b/.husky/post-checkout @@ -1,4 +1 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" - ./tools/js-tools/git-hooks/post-merge-checkout-hook.sh "$1" diff --git a/.husky/post-merge b/.husky/post-merge index 7399d9143f1bb..1ab789ff25e76 100755 --- a/.husky/post-merge +++ b/.husky/post-merge @@ -1,4 +1 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" - ./tools/js-tools/git-hooks/post-merge-checkout-hook.sh ORIG_HEAD diff --git a/.husky/pre-commit b/.husky/pre-commit index 3f41ae0243919..7530bd93a2b36 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" - node tools/js-tools/git-hooks/pre-commit-hook.js diff --git a/.husky/pre-push b/.husky/pre-push index 300e69f5b8f78..8b85d51a7d8ae 100755 --- a/.husky/pre-push +++ b/.husky/pre-push @@ -1,6 +1,3 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" - if test -c /dev/tty && sh -c ': < /dev/tty' >/dev/null 2>/dev/null; then exec < /dev/tty fi diff --git a/.pnpmfile.cjs b/.pnpmfile.cjs index 424998f096eea..8483ae624e8fd 100644 --- a/.pnpmfile.cjs +++ b/.pnpmfile.cjs @@ -223,6 +223,16 @@ function afterAllResolved( lockfile ) { return lockfile; } + for ( const [ k, v ] of Object.entries( lockfile.packages ) ) { + // Forbid installing webpack without webpack-cli. It results in lots of spurious lockfile changes. + // https://github.com/pnpm/pnpm/issues/3935 + if ( k.startsWith( 'webpack@' ) && ! v.optionalDependencies?.[ 'webpack-cli' ] ) { + throw new Error( + "Something you've done is trying to add a dependency on webpack without webpack-cli.\nThis is not allowed, as it tends to result in pnpm lockfile flip-flopping.\nSee https://github.com/pnpm/pnpm/issues/3935 for the upstream bug report.\n" + ); + } + } + return lockfile; } diff --git a/package.json b/package.json index c48245d935c8a..954da13145901 100644 --- a/package.json +++ b/package.json @@ -23,21 +23,21 @@ "php:autofix": "composer phpcs:fix", "php:compatibility": "composer phpcs:compatibility", "php:lint": "composer phpcs:lint", - "prepare": "husky install", + "prepare": "husky", "reformat-files": "prettier --ignore-path .eslintignore --write \"**/*.{js,jsx,cjs,mjs,ts,tsx,svelte,json,json5}\"", "version-packages": "bash ./tools/version-packages.sh" }, "devDependencies": { "eslint": "9.16.0", - "husky": "8.0.3", + "husky": "9.1.7", "jetpack-cli": "workspace:*", "jetpack-js-tools": "workspace:*" }, "engines": { "node": "^22.9.0", - "pnpm": "^9.3.0 <9.12.0" + "pnpm": "^9.15.0" }, - "packageManager": "pnpm@9.3.0", + "packageManager": "pnpm@9.15.0", "pnpm": { "patchedDependencies": { "@wordpress/dataviews@4.10.0": ".pnpm-patches/@wordpress__dataviews@4.10.0.patch" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eba1d19846d96..2c0398584de7a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,7 +4,7 @@ settings: autoInstallPeers: false excludeLinksFromLockfile: false -pnpmfileChecksum: kmseazxfbymwdp5ie53bnph5mq +pnpmfileChecksum: elvoqfz3hkxf3joxybwjpabdjm patchedDependencies: '@wordpress/dataviews@4.10.0': @@ -19,8 +19,8 @@ importers: specifier: 9.16.0 version: 9.16.0 husky: - specifier: 8.0.3 - version: 8.0.3 + specifier: 9.1.7 + version: 9.1.7 jetpack-cli: specifier: workspace:* version: link:tools/cli @@ -138,6 +138,9 @@ importers: '@wordpress/api-fetch': specifier: 7.14.0 version: 7.14.0 + '@wordpress/base-styles': + specifier: 5.14.0 + version: 5.14.0 '@wordpress/blob': specifier: 4.14.0 version: 4.14.0 @@ -645,11 +648,11 @@ importers: specifier: 1.0.1 version: 1.0.1 playwright: - specifier: 1.45.1 - version: 1.45.1 + specifier: 1.48.2 + version: 1.48.2 playwright-core: specifier: ^1.45.1 - version: 1.49.0 + version: 1.49.1 process: specifier: 0.11.10 version: 0.11.10 @@ -673,7 +676,7 @@ importers: version: 4.9.1(webpack@5.94.0) webpack-dev-middleware: specifier: 5.3.4 - version: 5.3.4(webpack@5.94.0(webpack-cli@4.9.1)) + version: 5.3.4(webpack@5.94.0) projects/js-packages/eslint-changed: dependencies: @@ -752,7 +755,7 @@ importers: devDependencies: '@wordpress/dependency-extraction-webpack-plugin': specifier: 6.14.0 - version: 6.14.0(webpack@5.94.0(webpack-cli@4.9.1)) + version: 6.14.0(webpack@5.94.0) '@wordpress/i18n': specifier: 5.14.0 version: 5.14.0 @@ -1440,8 +1443,8 @@ importers: specifier: 7.26.0 version: 7.26.0 '@playwright/test': - specifier: 1.45.1 - version: 1.45.1 + specifier: 1.48.2 + version: 1.48.2 '@storybook/addon-a11y': specifier: 8.3.5 version: 8.3.5(storybook@8.3.5) @@ -1456,7 +1459,7 @@ importers: version: 8.3.5(storybook@8.3.5) '@storybook/addon-webpack5-compiler-babel': specifier: ^3.0.3 - version: 3.0.3(webpack@5.94.0(webpack-cli@4.9.1)) + version: 3.0.3(webpack@5.94.0) '@storybook/blocks': specifier: 8.3.5 version: 8.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5) @@ -1471,7 +1474,7 @@ importers: version: 8.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5)(typescript@5.0.4) '@storybook/react-webpack5': specifier: 8.3.5 - version: 8.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5)(typescript@5.0.4)(webpack-cli@4.9.1(webpack@5.94.0)) + version: 8.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5)(typescript@5.0.4)(webpack-cli@4.9.1) '@storybook/source-loader': specifier: 8.3.5 version: 8.3.5(storybook@8.3.5) @@ -1507,16 +1510,16 @@ importers: version: 2.9.2 babel-loader: specifier: 9.1.2 - version: 9.1.2(@babel/core@7.26.0)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 9.1.2(@babel/core@7.26.0)(webpack@5.94.0) babel-plugin-inline-json-import: specifier: 0.3.2 version: 0.3.2 css-loader: specifier: 6.5.1 - version: 6.5.1(webpack@5.94.0(webpack-cli@4.9.1)) + version: 6.5.1(webpack@5.94.0) esbuild-loader: specifier: 3.0.1 - version: 3.0.1(webpack@5.94.0(webpack-cli@4.9.1)) + version: 3.0.1(webpack@5.94.0) jest: specifier: 29.7.0 version: 29.7.0 @@ -1528,7 +1531,7 @@ importers: version: 8.4.47 postcss-loader: specifier: 6.2.0 - version: 6.2.0(postcss@8.4.47)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 6.2.0(postcss@8.4.47)(webpack@5.94.0) react: specifier: 18.3.1 version: 18.3.1 @@ -1546,7 +1549,7 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0) storybook: specifier: 8.3.5 version: 8.3.5 @@ -1555,7 +1558,7 @@ importers: version: 5.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) style-loader: specifier: 2.0.0 - version: 2.0.0(webpack@5.94.0(webpack-cli@4.9.1)) + version: 2.0.0(webpack@5.94.0) ts-dedent: specifier: 2.2.0 version: 2.2.0 @@ -1642,7 +1645,7 @@ importers: version: link:../i18n-loader-webpack-plugin '@automattic/webpack-rtl-plugin': specifier: 6.0.0 - version: 6.0.0(webpack@5.94.0(webpack-cli@4.9.1)) + version: 6.0.0(webpack@5.94.0) '@babel/compat-data': specifier: 7.26.2 version: 7.26.2 @@ -1663,16 +1666,16 @@ importers: version: 7.26.0(@babel/core@7.26.0) '@cerner/duplicate-package-checker-webpack-plugin': specifier: 2.3.0 - version: 2.3.0(webpack@5.94.0(webpack-cli@4.9.1)) + version: 2.3.0(webpack@5.94.0) '@wordpress/browserslist-config': specifier: 6.14.0 version: 6.14.0 '@wordpress/dependency-extraction-webpack-plugin': specifier: 6.14.0 - version: 6.14.0(webpack@5.94.0(webpack-cli@4.9.1)) + version: 6.14.0(webpack@5.94.0) babel-loader: specifier: 9.1.2 - version: 9.1.2(@babel/core@7.26.0)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 9.1.2(@babel/core@7.26.0)(webpack@5.94.0) babel-plugin-polyfill-corejs3: specifier: 0.10.6 version: 0.10.6(@babel/core@7.26.0) @@ -1684,22 +1687,22 @@ importers: version: 3.38.1 css-loader: specifier: 6.5.1 - version: 6.5.1(webpack@5.94.0(webpack-cli@4.9.1)) + version: 6.5.1(webpack@5.94.0) css-minimizer-webpack-plugin: specifier: 5.0.1 - version: 5.0.1(webpack@5.94.0(webpack-cli@4.9.1)) + version: 5.0.1(webpack@5.94.0) fork-ts-checker-webpack-plugin: specifier: 9.0.2 - version: 9.0.2(typescript@5.0.4)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 9.0.2(typescript@5.0.4)(webpack@5.94.0) mini-css-extract-plugin: specifier: 2.9.1 - version: 2.9.1(webpack@5.94.0(webpack-cli@4.9.1)) + version: 2.9.1(webpack@5.94.0) terser-webpack-plugin: specifier: 5.3.3 - version: 5.3.3(webpack@5.94.0(webpack-cli@4.9.1)) + version: 5.3.3(webpack@5.94.0) thread-loader: specifier: 3.0.4 - version: 3.0.4(webpack@5.94.0(webpack-cli@4.9.1)) + version: 3.0.4(webpack@5.94.0) devDependencies: '@babel/core': specifier: 7.26.0 @@ -1845,7 +1848,7 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0) typescript: specifier: 5.0.4 version: 5.0.4 @@ -1918,7 +1921,7 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0) webpack: specifier: 5.94.0 version: 5.94.0(webpack-cli@4.9.1) @@ -1945,7 +1948,7 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0) webpack: specifier: 5.94.0 version: 5.94.0(webpack-cli@4.9.1) @@ -1983,13 +1986,13 @@ importers: version: 8.4.47 postcss-loader: specifier: 6.2.0 - version: 6.2.0(postcss@8.4.47)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 6.2.0(postcss@8.4.47)(webpack@5.94.0) sass: specifier: 1.64.1 version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0) webpack: specifier: 5.94.0 version: 5.94.0(webpack-cli@4.9.1) @@ -2041,7 +2044,7 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0) webpack: specifier: 5.94.0 version: 5.94.0(webpack-cli@4.9.1) @@ -2141,7 +2144,7 @@ importers: version: 2.1.1 copy-webpack-plugin: specifier: 11.0.0 - version: 11.0.0(webpack@5.94.0(webpack-cli@4.9.1)) + version: 11.0.0(webpack@5.94.0) email-validator: specifier: 2.0.4 version: 2.0.4 @@ -2245,10 +2248,10 @@ importers: version: 8.4.47 postcss-loader: specifier: 6.2.0 - version: 6.2.0(postcss@8.4.47)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 6.2.0(postcss@8.4.47)(webpack@5.94.0) sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0) typescript: specifier: 5.0.4 version: 5.0.4 @@ -2379,8 +2382,8 @@ importers: specifier: 7.25.9 version: 7.25.9(@babel/core@7.26.0) '@playwright/test': - specifier: 1.45.1 - version: 1.45.1 + specifier: 1.48.2 + version: 1.48.2 '@types/node': specifier: ^20.4.2 version: 20.17.9 @@ -2401,7 +2404,7 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0) typescript: specifier: ^5.0.4 version: 5.7.2 @@ -2425,7 +2428,7 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0) webpack: specifier: 5.94.0 version: 5.94.0(webpack-cli@4.9.1) @@ -2471,13 +2474,13 @@ importers: version: 8.4.47 postcss-loader: specifier: 6.2.0 - version: 6.2.0(postcss@8.4.47)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 6.2.0(postcss@8.4.47)(webpack@5.94.0) sass: specifier: 1.64.1 version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0) webpack: specifier: 5.94.0 version: 5.94.0(webpack-cli@4.9.1) @@ -2616,7 +2619,7 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0) storybook: specifier: 8.3.5 version: 8.3.5 @@ -2642,7 +2645,7 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0) tslib: specifier: 2.5.0 version: 2.5.0 @@ -2819,7 +2822,7 @@ importers: version: 6.14.0 '@wordpress/dependency-extraction-webpack-plugin': specifier: 6.14.0 - version: 6.14.0(webpack@5.94.0(webpack-cli@4.9.1)) + version: 6.14.0(webpack@5.94.0) autoprefixer: specifier: 10.4.14 version: 10.4.14(postcss@8.4.47) @@ -2846,13 +2849,13 @@ importers: version: 12.1.7(postcss@8.4.47) postcss-loader: specifier: 6.2.0 - version: 6.2.0(postcss@8.4.47)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 6.2.0(postcss@8.4.47)(webpack@5.94.0) sass: specifier: 1.64.1 version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0) size-limit: specifier: 11.1.6 version: 11.1.6(@size-limit/preset-app@11.1.6) @@ -3013,7 +3016,7 @@ importers: version: 7.6.0 copy-webpack-plugin: specifier: 11.0.0 - version: 11.0.0(webpack@5.94.0(webpack-cli@4.9.1)) + version: 11.0.0(webpack@5.94.0) jest: specifier: 29.7.0 version: 29.7.0 @@ -3028,7 +3031,7 @@ importers: version: 12.1.7(postcss@8.4.47) postcss-loader: specifier: 6.2.0 - version: 6.2.0(postcss@8.4.47)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 6.2.0(postcss@8.4.47)(webpack@5.94.0) require-from-string: specifier: 2.0.2 version: 2.0.2 @@ -3037,7 +3040,7 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0) storybook: specifier: 8.3.5 version: 8.3.5 @@ -3191,7 +3194,7 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0) webpack: specifier: 5.94.0 version: 5.94.0(webpack-cli@4.9.1) @@ -3257,7 +3260,7 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0) webpack: specifier: 5.94.0 version: 5.94.0(webpack-cli@4.9.1) @@ -3345,7 +3348,7 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0) webpack: specifier: 5.94.0 version: 5.94.0(webpack-cli@4.9.1) @@ -3356,8 +3359,8 @@ importers: projects/plugins/automattic-for-agencies-client/tests/e2e: devDependencies: '@playwright/test': - specifier: 1.45.1 - version: 1.45.1 + specifier: 1.48.2 + version: 1.48.2 allure-playwright: specifier: 2.9.2 version: 2.9.2 @@ -3402,7 +3405,7 @@ importers: version: 2.1.1 copy-webpack-plugin: specifier: 11.0.0 - version: 11.0.0(webpack@5.94.0(webpack-cli@4.9.1)) + version: 11.0.0(webpack@5.94.0) history: specifier: 5.3.0 version: 5.3.0 @@ -3493,7 +3496,7 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0) storybook: specifier: 8.3.5 version: 8.3.5 @@ -3513,8 +3516,8 @@ importers: projects/plugins/boost/tests/e2e: devDependencies: '@playwright/test': - specifier: 1.45.1 - version: 1.45.1 + specifier: 1.48.2 + version: 1.48.2 allure-playwright: specifier: 2.9.2 version: 2.9.2 @@ -3593,7 +3596,7 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0) webpack: specifier: 5.94.0 version: 5.94.0(webpack-cli@4.9.1) @@ -3604,8 +3607,8 @@ importers: projects/plugins/classic-theme-helper-plugin/tests/e2e: devDependencies: '@playwright/test': - specifier: 1.45.1 - version: 1.45.1 + specifier: 1.48.2 + version: 1.48.2 allure-playwright: specifier: 2.9.2 version: 2.9.2 @@ -3702,7 +3705,7 @@ importers: version: 29.3.1(@babel/core@7.26.0) css-loader: specifier: 6.5.1 - version: 6.5.1(webpack@5.94.0(webpack-cli@4.9.1)) + version: 6.5.1(webpack@5.94.0) glob: specifier: 10.4.1 version: 10.4.1 @@ -3717,7 +3720,7 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0) typescript: specifier: 5.0.4 version: 5.0.4 @@ -3919,7 +3922,7 @@ importers: version: 1.0.1 copy-webpack-plugin: specifier: 11.0.0 - version: 11.0.0(webpack@5.94.0(webpack-cli@4.9.1)) + version: 11.0.0(webpack@5.94.0) crypto-js: specifier: 4.2.0 version: 4.2.0 @@ -4134,13 +4137,13 @@ importers: version: 8.4.47 postcss-loader: specifier: 6.2.0 - version: 6.2.0(postcss@8.4.47)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 6.2.0(postcss@8.4.47)(webpack@5.94.0) regenerator-runtime: specifier: 0.13.9 version: 0.13.9 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0) typescript: specifier: 5.0.4 version: 5.0.4 @@ -4148,8 +4151,8 @@ importers: projects/plugins/jetpack/tests/e2e: devDependencies: '@playwright/test': - specifier: 1.45.1 - version: 1.45.1 + specifier: 1.48.2 + version: 1.48.2 allure-playwright: specifier: 2.9.2 version: 2.9.2 @@ -4257,7 +4260,7 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0) typescript: specifier: 5.0.4 version: 5.0.4 @@ -4273,8 +4276,8 @@ importers: projects/plugins/search/tests/e2e: devDependencies: '@playwright/test': - specifier: 1.45.1 - version: 1.45.1 + specifier: 1.48.2 + version: 1.48.2 allure-playwright: specifier: 2.9.2 version: 2.9.2 @@ -4395,13 +4398,13 @@ importers: version: 12.1.7(postcss@8.4.47) postcss-loader: specifier: 6.2.0 - version: 6.2.0(postcss@8.4.47)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 6.2.0(postcss@8.4.47)(webpack@5.94.0) sass: specifier: 1.64.1 version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0) webpack: specifier: 5.94.0 version: 5.94.0(webpack-cli@4.9.1) @@ -4412,8 +4415,8 @@ importers: projects/plugins/social/tests/e2e: devDependencies: '@playwright/test': - specifier: 1.45.1 - version: 1.45.1 + specifier: 1.48.2 + version: 1.48.2 allure-playwright: specifier: 2.9.2 version: 2.9.2 @@ -4492,7 +4495,7 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0) webpack: specifier: 5.94.0 version: 5.94.0(webpack-cli@4.9.1) @@ -4503,8 +4506,8 @@ importers: projects/plugins/starter-plugin/tests/e2e: devDependencies: '@playwright/test': - specifier: 1.45.1 - version: 1.45.1 + specifier: 1.48.2 + version: 1.48.2 allure-playwright: specifier: 2.9.2 version: 2.9.2 @@ -4597,7 +4600,7 @@ importers: version: 1.64.1 sass-loader: specifier: 12.4.0 - version: 12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)) + version: 12.4.0(sass@1.64.1)(webpack@5.94.0) webpack: specifier: 5.94.0 version: 5.94.0(webpack-cli@4.9.1) @@ -4608,8 +4611,8 @@ importers: projects/plugins/videopress/tests/e2e: devDependencies: '@playwright/test': - specifier: 1.45.1 - version: 1.45.1 + specifier: 1.48.2 + version: 1.48.2 allure-playwright: specifier: 2.9.2 version: 2.9.2 @@ -4726,8 +4729,8 @@ importers: tools/e2e-commons: devDependencies: '@playwright/test': - specifier: 1.45.1 - version: 1.45.1 + specifier: 1.48.2 + version: 1.48.2 '@slack/web-api': specifier: 7.3.2 version: 7.3.2 @@ -4805,7 +4808,7 @@ importers: version: 6.5.0 '@wordpress/eslint-plugin': specifier: 22.0.0 - version: 22.0.0(@babel/core@7.26.0)(eslint-config-prettier@9.1.0(eslint@9.16.0))(eslint-plugin-import@2.31.0(eslint-import-resolver-typescript@3.7.0)(eslint@9.16.0))(eslint-plugin-jest@28.9.0(eslint@9.16.0)(jest@29.7.0)(typescript@5.0.4))(eslint-plugin-jsdoc@50.6.0(eslint@9.16.0))(eslint-plugin-jsx-a11y@6.10.2(eslint@9.16.0))(eslint-plugin-playwright@2.1.0(eslint@9.16.0))(eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@9.16.0))(eslint@9.16.0)(wp-prettier@3.0.3))(eslint-plugin-react-hooks@5.1.0(eslint@9.16.0))(eslint-plugin-react@7.37.2(eslint@9.16.0))(eslint@9.16.0)(typescript@5.0.4)(wp-prettier@3.0.3) + version: 22.0.0(@babel/core@7.26.0)(eslint-config-prettier@9.1.0(eslint@9.16.0))(eslint-plugin-import@2.31.0)(eslint-plugin-jest@28.9.0(eslint@9.16.0)(jest@29.7.0)(typescript@5.0.4))(eslint-plugin-jsdoc@50.6.0(eslint@9.16.0))(eslint-plugin-jsx-a11y@6.10.2(eslint@9.16.0))(eslint-plugin-playwright@2.1.0(eslint@9.16.0))(eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@9.16.0))(eslint@9.16.0)(wp-prettier@3.0.3))(eslint-plugin-react-hooks@5.1.0(eslint@9.16.0))(eslint-plugin-react@7.37.2(eslint@9.16.0))(eslint@9.16.0)(typescript@5.0.4)(wp-prettier@3.0.3) '@wordpress/jest-console': specifier: 8.14.0 version: 8.14.0(jest@29.7.0) @@ -6509,8 +6512,8 @@ packages: resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@playwright/test@1.45.1': - resolution: {integrity: sha512-Wo1bWTzQvGA7LyKGIZc8nFSTFf2TkthGIFBR+QVNilvwouGzFd4PYukZe3rvf5PSqjHi1+1NyKSDZKcQWETzaA==} + '@playwright/test@1.48.2': + resolution: {integrity: sha512-54w1xCWfXuax7dz4W2M9uw0gDyh+ti/0K/MxcCUxChFh37kkdxPdfZDw5QBbuPUJHr1CiHJ1hXgSs+GgeQc5Zw==} engines: {node: '>=18'} hasBin: true @@ -10768,9 +10771,9 @@ packages: humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - husky@8.0.3: - resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} - engines: {node: '>=14'} + husky@9.1.7: + resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} + engines: {node: '>=18'} hasBin: true iconv-lite@0.4.24: @@ -12372,18 +12375,18 @@ packages: resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} engines: {node: '>=14.16'} - playwright-core@1.45.1: - resolution: {integrity: sha512-LF4CUUtrUu2TCpDw4mcrAIuYrEjVDfT1cHbJMfwnE2+1b8PZcFzPNgvZCvq2JfQ4aTjRCCHw5EJ2tmr2NSzdPg==} + playwright-core@1.48.2: + resolution: {integrity: sha512-sjjw+qrLFlriJo64du+EK0kJgZzoQPsabGF4lBvsid+3CNIZIYLgnMj9V6JY5VhM2Peh20DJWIVpVljLLnlawA==} engines: {node: '>=18'} hasBin: true - playwright-core@1.49.0: - resolution: {integrity: sha512-R+3KKTQF3npy5GTiKH/T+kdhoJfJojjHESR1YEWhYuEKRVfVaxH3+4+GvXE5xyCngCxhxnykk0Vlah9v8fs3jA==} + playwright-core@1.49.1: + resolution: {integrity: sha512-BzmpVcs4kE2CH15rWfzpjzVGhWERJfmnXmniSyKeRZUs9Ws65m+RGIi7mjJK/euCegfn3i7jvqWeWyHe9y3Vgg==} engines: {node: '>=18'} hasBin: true - playwright@1.45.1: - resolution: {integrity: sha512-Hjrgae4kpSQBr98nhCj3IScxVeVUixqj+5oyif8TdIn2opTCPEzqAqNMeK42i3cWDCVu9MI+ZsGWw+gVR4ISBg==} + playwright@1.48.2: + resolution: {integrity: sha512-NjYvYgp4BPmiwfe31j4gHLa3J7bD2WiBz8Lk2RoSsmX38SVIARZ18VYjxLjAcDsAhA+F4iSEXTSGgjua0rrlgQ==} engines: {node: '>=18'} hasBin: true @@ -14840,7 +14843,7 @@ snapshots: '@automattic/viewport@1.0.0': {} - '@automattic/webpack-rtl-plugin@6.0.0(webpack@5.94.0(webpack-cli@4.9.1))': + '@automattic/webpack-rtl-plugin@6.0.0(webpack@5.94.0)': dependencies: rtlcss: 3.5.0 webpack: 5.94.0(webpack-cli@4.9.1) @@ -15660,7 +15663,7 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} - '@cerner/duplicate-package-checker-webpack-plugin@2.3.0(webpack@5.94.0(webpack-cli@4.9.1))': + '@cerner/duplicate-package-checker-webpack-plugin@2.3.0(webpack@5.94.0)': dependencies: chalk: 4.1.2 find-root: 1.1.0 @@ -16487,9 +16490,9 @@ snapshots: '@pkgr/core@0.1.1': {} - '@playwright/test@1.45.1': + '@playwright/test@1.48.2': dependencies: - playwright: 1.45.1 + playwright: 1.48.2 '@popperjs/core@2.11.8': {} @@ -17185,21 +17188,21 @@ snapshots: transitivePeerDependencies: - supports-color - '@size-limit/file@11.1.6(size-limit@11.1.6(@size-limit/preset-app@11.1.6))': + '@size-limit/file@11.1.6(size-limit@11.1.6)': dependencies: size-limit: 11.1.6(@size-limit/preset-app@11.1.6) '@size-limit/preset-app@11.1.6(size-limit@11.1.6)': dependencies: - '@size-limit/file': 11.1.6(size-limit@11.1.6(@size-limit/preset-app@11.1.6)) - '@size-limit/time': 11.1.6(size-limit@11.1.6(@size-limit/preset-app@11.1.6)) + '@size-limit/file': 11.1.6(size-limit@11.1.6) + '@size-limit/time': 11.1.6(size-limit@11.1.6) size-limit: 11.1.6(@size-limit/preset-app@11.1.6) transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - '@size-limit/time@11.1.6(size-limit@11.1.6(@size-limit/preset-app@11.1.6))': + '@size-limit/time@11.1.6(size-limit@11.1.6)': dependencies: estimo: 3.0.3 size-limit: 11.1.6(@size-limit/preset-app@11.1.6) @@ -17341,10 +17344,10 @@ snapshots: memoizerific: 1.11.3 storybook: 8.3.5 - '@storybook/addon-webpack5-compiler-babel@3.0.3(webpack@5.94.0(webpack-cli@4.9.1))': + '@storybook/addon-webpack5-compiler-babel@3.0.3(webpack@5.94.0)': dependencies: '@babel/core': 7.26.0 - babel-loader: 9.2.1(@babel/core@7.26.0)(webpack@5.94.0(webpack-cli@4.9.1)) + babel-loader: 9.2.1(@babel/core@7.26.0)(webpack@5.94.0) transitivePeerDependencies: - supports-color - webpack @@ -17380,7 +17383,7 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/builder-webpack5@8.3.5(storybook@8.3.5)(typescript@5.0.4)(webpack-cli@4.9.1(webpack@5.94.0))': + '@storybook/builder-webpack5@8.3.5(storybook@8.3.5)(typescript@5.0.4)(webpack-cli@4.9.1)': dependencies: '@storybook/core-webpack': 8.3.5(storybook@8.3.5) '@types/node': 22.10.1 @@ -17389,25 +17392,25 @@ snapshots: case-sensitive-paths-webpack-plugin: 2.4.0 cjs-module-lexer: 1.4.1 constants-browserify: 1.0.0 - css-loader: 6.11.0(webpack@5.94.0(webpack-cli@4.9.1)) + css-loader: 6.11.0(webpack@5.94.0) es-module-lexer: 1.5.4 express: 4.21.2 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.0.4)(webpack@5.94.0(webpack-cli@4.9.1)) + fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.0.4)(webpack@5.94.0) fs-extra: 11.2.0 - html-webpack-plugin: 5.6.3(webpack@5.94.0(webpack-cli@4.9.1)) + html-webpack-plugin: 5.6.3(webpack@5.94.0) magic-string: 0.30.14 path-browserify: 1.0.1 process: 0.11.10 semver: 7.5.2 storybook: 8.3.5 - style-loader: 3.3.4(webpack@5.94.0(webpack-cli@4.9.1)) - terser-webpack-plugin: 5.3.3(webpack@5.94.0(webpack-cli@4.9.1)) + style-loader: 3.3.4(webpack@5.94.0) + terser-webpack-plugin: 5.3.3(webpack@5.94.0) ts-dedent: 2.2.0 url: 0.11.4 util: 0.12.5 util-deprecate: 1.0.2 webpack: 5.94.0(webpack-cli@4.9.1) - webpack-dev-middleware: 6.1.3(webpack@5.94.0(webpack-cli@4.9.1)) + webpack-dev-middleware: 6.1.3(webpack@5.94.0) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.6.2 optionalDependencies: @@ -17520,11 +17523,11 @@ snapshots: dependencies: storybook: 8.4.6 - '@storybook/preset-react-webpack@8.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5)(typescript@5.0.4)(webpack-cli@4.9.1(webpack@5.94.0))': + '@storybook/preset-react-webpack@8.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5)(typescript@5.0.4)(webpack-cli@4.9.1)': dependencies: '@storybook/core-webpack': 8.3.5(storybook@8.3.5) '@storybook/react': 8.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5)(typescript@5.0.4) - '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.0.4)(webpack@5.94.0(webpack-cli@4.9.1)) + '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.0.4)(webpack@5.94.0) '@types/node': 22.10.1 '@types/semver': 7.5.8 find-up: 5.0.0 @@ -17560,7 +17563,7 @@ snapshots: dependencies: storybook: 8.4.6 - '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.0.4)(webpack@5.94.0(webpack-cli@4.9.1))': + '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.0.4)(webpack@5.94.0)': dependencies: debug: 4.3.4 endent: 2.1.0 @@ -17586,10 +17589,10 @@ snapshots: react-dom: 18.3.1(react@18.3.1) storybook: 8.4.6 - '@storybook/react-webpack5@8.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5)(typescript@5.0.4)(webpack-cli@4.9.1(webpack@5.94.0))': + '@storybook/react-webpack5@8.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5)(typescript@5.0.4)(webpack-cli@4.9.1)': dependencies: - '@storybook/builder-webpack5': 8.3.5(storybook@8.3.5)(typescript@5.0.4)(webpack-cli@4.9.1(webpack@5.94.0)) - '@storybook/preset-react-webpack': 8.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5)(typescript@5.0.4)(webpack-cli@4.9.1(webpack@5.94.0)) + '@storybook/builder-webpack5': 8.3.5(storybook@8.3.5)(typescript@5.0.4)(webpack-cli@4.9.1) + '@storybook/preset-react-webpack': 8.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5)(typescript@5.0.4)(webpack-cli@4.9.1) '@storybook/react': 8.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.5)(typescript@5.0.4) '@types/node': 22.10.1 react: 18.3.1 @@ -17679,7 +17682,7 @@ snapshots: jest-serializer-html: 7.1.0 jest-watch-typeahead: 2.2.2(jest@29.7.0) nyc: 15.1.0 - playwright: 1.45.1 + playwright: 1.48.2 transitivePeerDependencies: - '@swc/helpers' - '@types/node' @@ -18724,17 +18727,17 @@ snapshots: '@webassemblyjs/ast': 1.14.1 '@xtuc/long': 4.2.2 - '@webpack-cli/configtest@1.2.0(webpack-cli@4.9.1(webpack@5.94.0))(webpack@5.94.0(webpack-cli@4.9.1))': + '@webpack-cli/configtest@1.2.0(webpack-cli@4.9.1)(webpack@5.94.0)': dependencies: webpack: 5.94.0(webpack-cli@4.9.1) webpack-cli: 4.9.1(webpack@5.94.0) - '@webpack-cli/info@1.5.0(webpack-cli@4.9.1(webpack@5.94.0))': + '@webpack-cli/info@1.5.0(webpack-cli@4.9.1)': dependencies: envinfo: 7.14.0 webpack-cli: 4.9.1(webpack@5.94.0) - '@webpack-cli/serve@1.7.0(webpack-cli@4.9.1(webpack@5.94.0))': + '@webpack-cli/serve@1.7.0(webpack-cli@4.9.1)': dependencies: webpack-cli: 4.9.1(webpack@5.94.0) @@ -19694,7 +19697,7 @@ snapshots: moment: 2.29.4 moment-timezone: 0.5.46 - '@wordpress/dependency-extraction-webpack-plugin@6.14.0(webpack@5.94.0(webpack-cli@4.9.1))': + '@wordpress/dependency-extraction-webpack-plugin@6.14.0(webpack@5.94.0)': dependencies: json2php: 0.0.7 webpack: 5.94.0(webpack-cli@4.9.1) @@ -19993,7 +19996,7 @@ snapshots: dependencies: '@babel/runtime': 7.25.7 - '@wordpress/eslint-plugin@22.0.0(@babel/core@7.26.0)(eslint-config-prettier@9.1.0(eslint@9.16.0))(eslint-plugin-import@2.31.0(eslint-import-resolver-typescript@3.7.0)(eslint@9.16.0))(eslint-plugin-jest@28.9.0(eslint@9.16.0)(jest@29.7.0)(typescript@5.0.4))(eslint-plugin-jsdoc@50.6.0(eslint@9.16.0))(eslint-plugin-jsx-a11y@6.10.2(eslint@9.16.0))(eslint-plugin-playwright@2.1.0(eslint@9.16.0))(eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@9.16.0))(eslint@9.16.0)(wp-prettier@3.0.3))(eslint-plugin-react-hooks@5.1.0(eslint@9.16.0))(eslint-plugin-react@7.37.2(eslint@9.16.0))(eslint@9.16.0)(typescript@5.0.4)(wp-prettier@3.0.3)': + '@wordpress/eslint-plugin@22.0.0(@babel/core@7.26.0)(eslint-config-prettier@9.1.0(eslint@9.16.0))(eslint-plugin-import@2.31.0)(eslint-plugin-jest@28.9.0(eslint@9.16.0)(jest@29.7.0)(typescript@5.0.4))(eslint-plugin-jsdoc@50.6.0(eslint@9.16.0))(eslint-plugin-jsx-a11y@6.10.2(eslint@9.16.0))(eslint-plugin-playwright@2.1.0(eslint@9.16.0))(eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@9.16.0))(eslint@9.16.0)(wp-prettier@3.0.3))(eslint-plugin-react-hooks@5.1.0(eslint@9.16.0))(eslint-plugin-react@7.37.2(eslint@9.16.0))(eslint@9.16.0)(typescript@5.0.4)(wp-prettier@3.0.3)': dependencies: '@babel/core': 7.26.0 '@babel/eslint-parser': 7.25.9(@babel/core@7.26.0)(eslint@9.16.0) @@ -21075,14 +21078,14 @@ snapshots: transitivePeerDependencies: - supports-color - babel-loader@9.1.2(@babel/core@7.26.0)(webpack@5.94.0(webpack-cli@4.9.1)): + babel-loader@9.1.2(@babel/core@7.26.0)(webpack@5.94.0): dependencies: '@babel/core': 7.26.0 find-cache-dir: 3.3.2 schema-utils: 4.2.0 webpack: 5.94.0(webpack-cli@4.9.1) - babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.94.0(webpack-cli@4.9.1)): + babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.94.0): dependencies: '@babel/core': 7.26.0 find-cache-dir: 4.0.0 @@ -21717,7 +21720,7 @@ snapshots: cookie@1.0.1: {} - copy-webpack-plugin@11.0.0(webpack@5.94.0(webpack-cli@4.9.1)): + copy-webpack-plugin@11.0.0(webpack@5.94.0): dependencies: fast-glob: 3.3.2 glob-parent: 6.0.2 @@ -21796,7 +21799,7 @@ snapshots: dependencies: postcss: 8.4.47 - css-loader@6.11.0(webpack@5.94.0(webpack-cli@4.9.1)): + css-loader@6.11.0(webpack@5.94.0): dependencies: icss-utils: 5.1.0(postcss@8.4.47) postcss: 8.4.47 @@ -21809,7 +21812,7 @@ snapshots: optionalDependencies: webpack: 5.94.0(webpack-cli@4.9.1) - css-loader@6.5.1(webpack@5.94.0(webpack-cli@4.9.1)): + css-loader@6.5.1(webpack@5.94.0): dependencies: icss-utils: 5.1.0(postcss@8.4.47) postcss: 8.4.47 @@ -21821,7 +21824,7 @@ snapshots: semver: 7.5.2 webpack: 5.94.0(webpack-cli@4.9.1) - css-minimizer-webpack-plugin@5.0.1(webpack@5.94.0(webpack-cli@4.9.1)): + css-minimizer-webpack-plugin@5.0.1(webpack@5.94.0): dependencies: '@jridgewell/trace-mapping': 0.3.25 cssnano: 6.1.2(postcss@8.4.47) @@ -22428,7 +22431,7 @@ snapshots: es6-error@4.1.1: {} - esbuild-loader@3.0.1(webpack@5.94.0(webpack-cli@4.9.1)): + esbuild-loader@3.0.1(webpack@5.94.0): dependencies: esbuild: 0.17.19 get-tsconfig: 4.8.1 @@ -22582,7 +22585,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@9.16.0))(eslint@9.16.0): + eslint-module-utils@2.12.0(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@9.16.0): dependencies: debug: 3.2.7 optionalDependencies: @@ -22610,7 +22613,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.16.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@9.16.0))(eslint@9.16.0) + eslint-module-utils: 2.12.0(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@9.16.0) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -23149,7 +23152,7 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 - fork-ts-checker-webpack-plugin@8.0.0(typescript@5.0.4)(webpack@5.94.0(webpack-cli@4.9.1)): + fork-ts-checker-webpack-plugin@8.0.0(typescript@5.0.4)(webpack@5.94.0): dependencies: '@babel/code-frame': 7.26.2 chalk: 4.1.2 @@ -23166,7 +23169,7 @@ snapshots: typescript: 5.0.4 webpack: 5.94.0(webpack-cli@4.9.1) - fork-ts-checker-webpack-plugin@9.0.2(typescript@5.0.4)(webpack@5.94.0(webpack-cli@4.9.1)): + fork-ts-checker-webpack-plugin@9.0.2(typescript@5.0.4)(webpack@5.94.0): dependencies: '@babel/code-frame': 7.26.2 chalk: 4.1.2 @@ -23510,7 +23513,7 @@ snapshots: html-tags@3.3.1: {} - html-webpack-plugin@5.6.3(webpack@5.94.0(webpack-cli@4.9.1)): + html-webpack-plugin@5.6.3(webpack@5.94.0): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -23588,7 +23591,7 @@ snapshots: dependencies: ms: 2.1.3 - husky@8.0.3: {} + husky@9.1.7: {} iconv-lite@0.4.24: dependencies: @@ -24196,7 +24199,7 @@ snapshots: jest-process-manager: 0.4.0 jest-runner: 29.7.0 nyc: 15.1.0 - playwright-core: 1.49.0 + playwright-core: 1.49.1 rimraf: 3.0.2 uuid: 8.3.2 transitivePeerDependencies: @@ -25154,7 +25157,7 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.9.1(webpack@5.94.0(webpack-cli@4.9.1)): + mini-css-extract-plugin@2.9.1(webpack@5.94.0): dependencies: schema-utils: 4.2.0 tapable: 2.2.1 @@ -25657,13 +25660,13 @@ snapshots: dependencies: find-up: 6.3.0 - playwright-core@1.45.1: {} + playwright-core@1.48.2: {} - playwright-core@1.49.0: {} + playwright-core@1.49.1: {} - playwright@1.45.1: + playwright@1.48.2: dependencies: - playwright-core: 1.45.1 + playwright-core: 1.48.2 optionalDependencies: fsevents: 2.3.2 @@ -25723,7 +25726,7 @@ snapshots: optionalDependencies: postcss: 8.4.47 - postcss-loader@6.2.0(postcss@8.4.47)(webpack@5.94.0(webpack-cli@4.9.1)): + postcss-loader@6.2.0(postcss@8.4.47)(webpack@5.94.0): dependencies: cosmiconfig: 7.1.0 klona: 2.0.6 @@ -26707,7 +26710,7 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@12.4.0(sass@1.64.1)(webpack@5.94.0(webpack-cli@4.9.1)): + sass-loader@12.4.0(sass@1.64.1)(webpack@5.94.0): dependencies: klona: 2.0.6 neo-async: 2.6.2 @@ -27174,13 +27177,13 @@ snapshots: style-inject@0.3.0: {} - style-loader@2.0.0(webpack@5.94.0(webpack-cli@4.9.1)): + style-loader@2.0.0(webpack@5.94.0): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 webpack: 5.94.0(webpack-cli@4.9.1) - style-loader@3.3.4(webpack@5.94.0(webpack-cli@4.9.1)): + style-loader@3.3.4(webpack@5.94.0): dependencies: webpack: 5.94.0(webpack-cli@4.9.1) @@ -27348,7 +27351,7 @@ snapshots: dependencies: memoizerific: 1.11.3 - terser-webpack-plugin@5.3.10(webpack@5.94.0(webpack-cli@4.9.1)): + terser-webpack-plugin@5.3.10(webpack@5.94.0): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 @@ -27357,7 +27360,7 @@ snapshots: terser: 5.37.0 webpack: 5.94.0(webpack-cli@4.9.1) - terser-webpack-plugin@5.3.3(webpack@5.94.0(webpack-cli@4.9.1)): + terser-webpack-plugin@5.3.3(webpack@5.94.0): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 @@ -27385,7 +27388,7 @@ snapshots: text-hex@1.0.0: {} - thread-loader@3.0.4(webpack@5.94.0(webpack-cli@4.9.1)): + thread-loader@3.0.4(webpack@5.94.0): dependencies: json-parse-better-errors: 1.0.2 loader-runner: 4.3.0 @@ -27871,9 +27874,9 @@ snapshots: webpack-cli@4.9.1(webpack@5.94.0): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 1.2.0(webpack-cli@4.9.1(webpack@5.94.0))(webpack@5.94.0(webpack-cli@4.9.1)) - '@webpack-cli/info': 1.5.0(webpack-cli@4.9.1(webpack@5.94.0)) - '@webpack-cli/serve': 1.7.0(webpack-cli@4.9.1(webpack@5.94.0)) + '@webpack-cli/configtest': 1.2.0(webpack-cli@4.9.1)(webpack@5.94.0) + '@webpack-cli/info': 1.5.0(webpack-cli@4.9.1) + '@webpack-cli/serve': 1.7.0(webpack-cli@4.9.1) colorette: 2.0.20 commander: 7.2.0 execa: 5.1.1 @@ -27884,7 +27887,7 @@ snapshots: webpack: 5.94.0(webpack-cli@4.9.1) webpack-merge: 5.10.0 - webpack-dev-middleware@5.3.4(webpack@5.94.0(webpack-cli@4.9.1)): + webpack-dev-middleware@5.3.4(webpack@5.94.0): dependencies: colorette: 2.0.20 memfs: 3.5.3 @@ -27893,7 +27896,7 @@ snapshots: schema-utils: 4.2.0 webpack: 5.94.0(webpack-cli@4.9.1) - webpack-dev-middleware@6.1.3(webpack@5.94.0(webpack-cli@4.9.1)): + webpack-dev-middleware@6.1.3(webpack@5.94.0): dependencies: colorette: 2.0.20 memfs: 3.5.3 @@ -27946,7 +27949,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.94.0(webpack-cli@4.9.1)) + terser-webpack-plugin: 5.3.10(webpack@5.94.0) watchpack: 2.4.2 webpack-sources: 3.2.3 optionalDependencies: diff --git a/projects/js-packages/ai-client/changelog/change-jetpack-ai-rate-logo-generator b/projects/js-packages/ai-client/changelog/change-jetpack-ai-rate-logo-generator new file mode 100644 index 0000000000000..7050a2b22fc3a --- /dev/null +++ b/projects/js-packages/ai-client/changelog/change-jetpack-ai-rate-logo-generator @@ -0,0 +1,4 @@ +Significance: patch +Type: added + +Jetpack AI: Add thumbs up/down component to AI logo generator diff --git a/projects/js-packages/ai-client/package.json b/projects/js-packages/ai-client/package.json index f101983f9841d..30c9e9be2f2bf 100644 --- a/projects/js-packages/ai-client/package.json +++ b/projects/js-packages/ai-client/package.json @@ -52,6 +52,7 @@ "@types/react": "18.3.12", "@types/wordpress__block-editor": "11.5.15", "@wordpress/api-fetch": "7.14.0", + "@wordpress/base-styles": "5.14.0", "@wordpress/blob": "4.14.0", "@wordpress/block-editor": "14.9.0", "@wordpress/components": "29.0.0", diff --git a/projects/js-packages/ai-client/src/components/ai-feedback/index.tsx b/projects/js-packages/ai-client/src/components/ai-feedback/index.tsx new file mode 100644 index 0000000000000..a6f6ed67ebbf1 --- /dev/null +++ b/projects/js-packages/ai-client/src/components/ai-feedback/index.tsx @@ -0,0 +1,133 @@ +/** + * External dependencies + */ +import { + useAnalytics, + getJetpackExtensionAvailability, +} from '@automattic/jetpack-shared-extension-utils'; +import { Button, Tooltip } from '@wordpress/components'; +import { useEffect, useState } from '@wordpress/element'; +import { __ } from '@wordpress/i18n'; +import { thumbsUp, thumbsDown } from '@wordpress/icons'; +import clsx from 'clsx'; +/* + * Internal dependencies + */ +import './style.scss'; +/** + * Types + */ +import type React from 'react'; + +type AiFeedbackThumbsProps = { + disabled?: boolean; + iconSize?: number; + ratedItem?: string; + feature?: string; + savedRatings?: Record< string, string >; + options?: { + mediaLibraryId?: number; + prompt?: string; + revisedPrompt?: string; + }; + onRate?: ( rating: string ) => void; +}; + +/** + * Get the availability of a feature. + * + * @param {string} feature - The feature to check availability for. + * @return {boolean} - Whether the feature is available. + */ +function getFeatureAvailability( feature: string ): boolean { + return getJetpackExtensionAvailability( feature ).available === true; +} + +/** + * AiFeedbackThumbs component. + * + * @param {AiFeedbackThumbsProps} props - component props. + * @return {React.ReactElement} - rendered component. + */ +export default function AiFeedbackThumbs( { + disabled = false, + iconSize = 24, + ratedItem = '', + feature = '', + savedRatings = {}, + options = {}, + onRate, +}: AiFeedbackThumbsProps ): React.ReactElement { + if ( ! getFeatureAvailability( 'ai-response-feedback' ) ) { + return null; + } + + const [ itemsRated, setItemsRated ] = useState( {} ); + const { tracks } = useAnalytics(); + + useEffect( () => { + const newItemsRated = { ...savedRatings, ...itemsRated }; + + if ( JSON.stringify( newItemsRated ) !== JSON.stringify( itemsRated ) ) { + setItemsRated( newItemsRated ); + } + }, [ savedRatings ] ); + + const checkThumb = ( thumbValue: string ) => { + if ( ! itemsRated[ ratedItem ] ) { + return false; + } + + return itemsRated[ ratedItem ] === thumbValue; + }; + + const rateAI = ( isThumbsUp: boolean ) => { + const aiRating = isThumbsUp ? 'thumbs-up' : 'thumbs-down'; + + if ( ! checkThumb( aiRating ) ) { + setItemsRated( { + ...itemsRated, + [ ratedItem ]: aiRating, + } ); + + onRate?.( aiRating ); + + tracks.recordEvent( 'jetpack_ai_feedback', { + type: feature, + rating: aiRating, + mediaLibraryId: options.mediaLibraryId || null, + prompt: options.prompt || null, + revisedPrompt: options.revisedPrompt || null, + } ); + } + }; + + return ( +
+ +
+ ); +} diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/ai-feedback/style.scss b/projects/js-packages/ai-client/src/components/ai-feedback/style.scss similarity index 70% rename from projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/ai-feedback/style.scss rename to projects/js-packages/ai-client/src/components/ai-feedback/style.scss index 9697d17aff1ad..89b8f9f2053bc 100644 --- a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/ai-feedback/style.scss +++ b/projects/js-packages/ai-client/src/components/ai-feedback/style.scss @@ -11,6 +11,6 @@ } &__thumb-selected { - color: var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9)); + color: var( --wp-components-color-accent, var( --wp-admin-theme-color, #3858e9 ) ); } } diff --git a/projects/js-packages/ai-client/src/components/index.ts b/projects/js-packages/ai-client/src/components/index.ts index 20d5714db6baf..1ef8b40b80426 100644 --- a/projects/js-packages/ai-client/src/components/index.ts +++ b/projects/js-packages/ai-client/src/components/index.ts @@ -1,4 +1,5 @@ export { AIControl, BlockAIControl, ExtensionAIControl } from './ai-control/index.js'; +export { default as AiFeedbackThumbs } from './ai-feedback/index.js'; export { default as AiStatusIndicator } from './ai-status-indicator/index.js'; export { default as AudioDurationDisplay } from './audio-duration-display/index.js'; export { default as AiModalFooter } from './ai-modal-footer/index.js'; diff --git a/projects/js-packages/ai-client/src/logo-generator/components/logo-presenter.tsx b/projects/js-packages/ai-client/src/logo-generator/components/logo-presenter.tsx index e539e1d751b6a..2b7e63ff9c9e6 100644 --- a/projects/js-packages/ai-client/src/logo-generator/components/logo-presenter.tsx +++ b/projects/js-packages/ai-client/src/logo-generator/components/logo-presenter.tsx @@ -9,6 +9,7 @@ import debugFactory from 'debug'; /** * Internal dependencies */ +import AiFeedbackThumbs from '../../components/ai-feedback/index.js'; import CheckIcon from '../assets/icons/check.js'; import LogoIcon from '../assets/icons/logo.js'; import MediaIcon from '../assets/icons/media.js'; @@ -152,11 +153,50 @@ const LogoEmpty: React.FC = () => { ); }; +const RateLogo: React.FC< { + disabled: boolean; + ratedItem: string; + onRate: ( rating: string ) => void; +} > = ( { disabled, ratedItem, onRate } ) => { + const { logos, selectedLogo } = useLogoGenerator(); + const savedRatings = logos + .filter( logo => logo.rating ) + .reduce( ( acc, logo ) => { + acc[ logo.url ] = logo.rating; + return acc; + }, {} ); + + return ( + + ); +}; + const LogoReady: React.FC< { siteId: string; logo: Logo; onApplyLogo: ( mediaId: number ) => void; } > = ( { siteId, logo, onApplyLogo } ) => { + const handleRateLogo = ( rating: string ) => { + // Update localStorage + updateLogo( { + siteId, + url: logo.url, + newUrl: logo.url, + mediaId: logo.mediaId, + rating, + } ); + }; + return ( <> + diff --git a/projects/js-packages/ai-client/src/logo-generator/hooks/use-logo-generator.ts b/projects/js-packages/ai-client/src/logo-generator/hooks/use-logo-generator.ts index 70acbf3fe98e0..d2d232da900d0 100644 --- a/projects/js-packages/ai-client/src/logo-generator/hooks/use-logo-generator.ts +++ b/projects/js-packages/ai-client/src/logo-generator/hooks/use-logo-generator.ts @@ -412,10 +412,13 @@ User request:${ prompt }`; throw error; } + const revisedPrompt = image.data[ 0 ].revised_prompt || null; + // response_format=url returns object with url, otherwise b64_json const logo: Logo = { url: 'data:image/png;base64,' + image.data[ 0 ].b64_json, description: prompt, + revisedPrompt, }; try { @@ -424,6 +427,7 @@ User request:${ prompt }`; url: savedLogo.mediaURL, description: prompt, mediaId: savedLogo.mediaId, + revisedPrompt, } ); } catch ( error ) { storeLogo( logo ); diff --git a/projects/js-packages/ai-client/src/logo-generator/lib/logo-storage.ts b/projects/js-packages/ai-client/src/logo-generator/lib/logo-storage.ts index 81e9b08319575..e6c6bb1176e83 100644 --- a/projects/js-packages/ai-client/src/logo-generator/lib/logo-storage.ts +++ b/projects/js-packages/ai-client/src/logo-generator/lib/logo-storage.ts @@ -10,21 +10,28 @@ const MAX_LOGOS = 10; /** * Add an entry to the site's logo history. * - * @param {SaveToStorageProps} saveToStorageProps - The properties to save to storage - * @param {SaveToStorageProps.siteId} saveToStorageProps.siteId - The site ID - * @param {SaveToStorageProps.url} saveToStorageProps.url - The URL of the logo - * @param {SaveToStorageProps.description} saveToStorageProps.description - The description of the logo, based on the prompt used to generate it - * @param {SaveToStorageProps.mediaId} saveToStorageProps.mediaId - The media ID of the logo on the backend - * + * @param {SaveToStorageProps} saveToStorageProps - The properties to save to storage + * @param {SaveToStorageProps.siteId} saveToStorageProps.siteId - The site ID + * @param {SaveToStorageProps.url} saveToStorageProps.url - The URL of the logo + * @param {SaveToStorageProps.description} saveToStorageProps.description - The description of the logo, based on the prompt used to generate it + * @param {SaveToStorageProps.mediaId} saveToStorageProps.mediaId - The media ID of the logo on the backend + * @param {SaveToStorageProps.revisedPrompt} saveToStorageProps.revisedPrompt - The revised prompt of the logo * @return {Logo} The logo that was saved */ -export function stashLogo( { siteId, url, description, mediaId }: SaveToStorageProps ) { +export function stashLogo( { + siteId, + url, + description, + mediaId, + revisedPrompt, +}: SaveToStorageProps ) { const storedContent = getSiteLogoHistory( siteId ); const logo: Logo = { url, description, mediaId, + revisedPrompt, }; storedContent.push( logo ); @@ -45,9 +52,10 @@ export function stashLogo( { siteId, url, description, mediaId }: SaveToStorageP * @param {UpdateInStorageProps.url} updateInStorageProps.url - The URL of the logo to update * @param {UpdateInStorageProps.newUrl} updateInStorageProps.newUrl - The new URL of the logo * @param {UpdateInStorageProps.mediaId} updateInStorageProps.mediaId - The new media ID of the logo + * @param {UpdateInStorageProps.rating} updateInStorageProps.rating - The new rating of the logo * @return {Logo} The logo that was updated */ -export function updateLogo( { siteId, url, newUrl, mediaId }: UpdateInStorageProps ) { +export function updateLogo( { siteId, url, newUrl, mediaId, rating }: UpdateInStorageProps ) { const storedContent = getSiteLogoHistory( siteId ); const index = storedContent.findIndex( logo => logo.url === url ); @@ -55,6 +63,7 @@ export function updateLogo( { siteId, url, newUrl, mediaId }: UpdateInStoragePro if ( index > -1 ) { storedContent[ index ].url = newUrl; storedContent[ index ].mediaId = mediaId; + storedContent[ index ].rating = rating; } localStorage.setItem( @@ -96,6 +105,7 @@ export function getSiteLogoHistory( siteId: string ) { url: logo.url, description: logo.description, mediaId: logo.mediaId, + rating: logo.rating, } ) ); return storedContent; diff --git a/projects/js-packages/ai-client/src/logo-generator/store/types.ts b/projects/js-packages/ai-client/src/logo-generator/store/types.ts index b34f3b9f8a22e..d8c0f0fbcb1bf 100644 --- a/projects/js-packages/ai-client/src/logo-generator/store/types.ts +++ b/projects/js-packages/ai-client/src/logo-generator/store/types.ts @@ -140,6 +140,8 @@ export type Logo = { url: string; description: string; mediaId?: number; + rating?: string; + revisedPrompt?: string; }; export type RequestError = string | Error | null; diff --git a/projects/js-packages/ai-client/src/logo-generator/types.ts b/projects/js-packages/ai-client/src/logo-generator/types.ts index e54cf774ac98e..2a617a2b97d58 100644 --- a/projects/js-packages/ai-client/src/logo-generator/types.ts +++ b/projects/js-packages/ai-client/src/logo-generator/types.ts @@ -92,6 +92,7 @@ export type UpdateInStorageProps = { url: Logo[ 'url' ]; newUrl: Logo[ 'url' ]; mediaId: Logo[ 'mediaId' ]; + rating?: Logo[ 'rating' ]; }; export type RemoveFromStorageProps = { diff --git a/projects/js-packages/critical-css-gen/changelog/renovate-playwright-monorepo b/projects/js-packages/critical-css-gen/changelog/renovate-playwright-monorepo new file mode 100644 index 0000000000000..c47cb18e82997 --- /dev/null +++ b/projects/js-packages/critical-css-gen/changelog/renovate-playwright-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: changed + +Updated package dependencies. diff --git a/projects/js-packages/critical-css-gen/package.json b/projects/js-packages/critical-css-gen/package.json index dfe7ccb4218b0..861323500e52f 100644 --- a/projects/js-packages/critical-css-gen/package.json +++ b/projects/js-packages/critical-css-gen/package.json @@ -34,7 +34,7 @@ "express": "4.21.2", "jest": "29.7.0", "path-browserify": "1.0.1", - "playwright": "1.45.1", + "playwright": "1.48.2", "playwright-core": "^1.45.1", "process": "0.11.10", "source-map": "0.7.4", diff --git a/projects/js-packages/storybook/changelog/renovate-playwright-monorepo b/projects/js-packages/storybook/changelog/renovate-playwright-monorepo new file mode 100644 index 0000000000000..c47cb18e82997 --- /dev/null +++ b/projects/js-packages/storybook/changelog/renovate-playwright-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: changed + +Updated package dependencies. diff --git a/projects/js-packages/storybook/package.json b/projects/js-packages/storybook/package.json index 7984577ae5ffd..82541f0584358 100644 --- a/projects/js-packages/storybook/package.json +++ b/projects/js-packages/storybook/package.json @@ -25,7 +25,7 @@ "@babel/plugin-syntax-jsx": "7.25.9", "@babel/preset-react": "7.25.9", "@babel/runtime": "7.26.0", - "@playwright/test": "1.45.1", + "@playwright/test": "1.48.2", "@storybook/addon-a11y": "8.3.5", "@storybook/addon-docs": "8.3.5", "@storybook/addon-essentials": "8.3.5", diff --git a/projects/packages/boost-core/changelog/fix-not-parsing-some-wpcom-errors-properly b/projects/packages/boost-core/changelog/fix-not-parsing-some-wpcom-errors-properly new file mode 100644 index 0000000000000..d24d162efc1e6 --- /dev/null +++ b/projects/packages/boost-core/changelog/fix-not-parsing-some-wpcom-errors-properly @@ -0,0 +1,4 @@ +Significance: patch +Type: fixed + +General: Fixed not parsing error responses from WordPress.com properly. diff --git a/projects/packages/boost-core/src/lib/class-utils.php b/projects/packages/boost-core/src/lib/class-utils.php index 848cf3009c0b3..52207e115f075 100644 --- a/projects/packages/boost-core/src/lib/class-utils.php +++ b/projects/packages/boost-core/src/lib/class-utils.php @@ -133,11 +133,26 @@ public static function send_wpcom_request( $method, $endpoint, $args = null, $bo $code ); + /* + * Normalize error responses from WordPress.com. + * + * When WordPress.com returns an error from Boost Cloud, the body contains + * statusCode and error. When it returns a WP_Error, it contains code and message. + */ // phpcs:disable WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase - $err_code = empty( $data['statusCode'] ) ? 'http_error' : $data['statusCode']; - $message = empty( $data['error'] ) ? $default_message : $data['error']; - - return new \WP_Error( $err_code, $message ); + if ( isset( $data['statusCode'] ) && isset( $data['error'] ) ) { + // phpcs:disable WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase + $data_code = $data['statusCode']; + $data_message = $data['error']; + } elseif ( isset( $data['code'] ) && isset( $data['message'] ) ) { + $data_code = $data['code']; + $data_message = $data['message']; + } + + $error_code = empty( $data_code ) ? 'http_error' : $data_code; + $message = empty( $data_message ) ? $default_message : $data_message; + + return new \WP_Error( $error_code, $message ); } return $data; diff --git a/projects/packages/jetpack-mu-wpcom/changelog/fix-php-fatal-in-wpcom b/projects/packages/jetpack-mu-wpcom/changelog/fix-php-fatal-in-wpcom new file mode 100644 index 0000000000000..e460fda027a8f --- /dev/null +++ b/projects/packages/jetpack-mu-wpcom/changelog/fix-php-fatal-in-wpcom @@ -0,0 +1,4 @@ +Significance: patch +Type: fixed + +Add a function_exists guard for wpcom_is_duplicate_views_experiment_enabled function diff --git a/projects/packages/jetpack-mu-wpcom/changelog/fix-rdv-regressions-on-treatment b/projects/packages/jetpack-mu-wpcom/changelog/fix-rdv-regressions-on-treatment new file mode 100644 index 0000000000000..5ce69e6f92aaf --- /dev/null +++ b/projects/packages/jetpack-mu-wpcom/changelog/fix-rdv-regressions-on-treatment @@ -0,0 +1,4 @@ +Significance: patch +Type: fixed + +Fixed several regressions for Stats, Blaze and notices for RDV experiment diff --git a/projects/packages/jetpack-mu-wpcom/changelog/renovate-playwright-monorepo b/projects/packages/jetpack-mu-wpcom/changelog/renovate-playwright-monorepo new file mode 100644 index 0000000000000..c47cb18e82997 --- /dev/null +++ b/projects/packages/jetpack-mu-wpcom/changelog/renovate-playwright-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: changed + +Updated package dependencies. diff --git a/projects/packages/jetpack-mu-wpcom/package.json b/projects/packages/jetpack-mu-wpcom/package.json index 4123ddacdca47..8dad01437fe0a 100644 --- a/projects/packages/jetpack-mu-wpcom/package.json +++ b/projects/packages/jetpack-mu-wpcom/package.json @@ -33,7 +33,7 @@ "@babel/core": "7.26.0", "@babel/plugin-transform-react-jsx": "7.25.9", "@babel/preset-react": "7.25.9", - "@playwright/test": "1.45.1", + "@playwright/test": "1.48.2", "@types/node": "^20.4.2", "@types/react": "^18.2.28", "@types/react-dom": "18.3.1", diff --git a/projects/packages/jetpack-mu-wpcom/src/class-jetpack-mu-wpcom.php b/projects/packages/jetpack-mu-wpcom/src/class-jetpack-mu-wpcom.php index 89597cf7ce895..5bbc4ad0e9d6c 100644 --- a/projects/packages/jetpack-mu-wpcom/src/class-jetpack-mu-wpcom.php +++ b/projects/packages/jetpack-mu-wpcom/src/class-jetpack-mu-wpcom.php @@ -452,7 +452,7 @@ public static function load_verbum_comments_admin() { * Load Odyssey Stats in Simple sites. */ public static function load_wpcom_simple_odyssey_stats() { - if ( get_option( 'wpcom_admin_interface' ) === 'wp-admin' ) { + if ( get_option( 'wpcom_admin_interface' ) === 'wp-admin' || ( function_exists( 'wpcom_is_duplicate_views_experiment_enabled' ) && wpcom_is_duplicate_views_experiment_enabled() ) ) { require_once __DIR__ . '/features/wpcom-simple-odyssey-stats/wpcom-simple-odyssey-stats.php'; } } diff --git a/projects/packages/jetpack-mu-wpcom/src/features/wpcom-admin-bar/wpcom-admin-bar.php b/projects/packages/jetpack-mu-wpcom/src/features/wpcom-admin-bar/wpcom-admin-bar.php index 575a7e3218f49..a8c7fdf75b1b8 100644 --- a/projects/packages/jetpack-mu-wpcom/src/features/wpcom-admin-bar/wpcom-admin-bar.php +++ b/projects/packages/jetpack-mu-wpcom/src/features/wpcom-admin-bar/wpcom-admin-bar.php @@ -263,7 +263,11 @@ function wpcom_replace_edit_profile_menu_to_me( $wp_admin_bar ) { * @return string Name of the admin bar class. */ function wpcom_custom_wpcom_admin_bar_class( $wp_admin_bar_class ) { - if ( get_option( 'wpcom_admin_interface' ) === 'wp-admin' ) { + remove_filter( 'pre_option_wpcom_admin_interface', 'wpcom_admin_interface_pre_get_option' ); + $is_wp_admin = get_option( 'wpcom_admin_interface' ) === 'wp-admin'; + add_filter( 'pre_option_wpcom_admin_interface', 'wpcom_admin_interface_pre_get_option', 10 ); + + if ( $is_wp_admin ) { return $wp_admin_bar_class; } diff --git a/projects/packages/jetpack-mu-wpcom/src/features/wpcom-admin-interface/wpcom-admin-interface.php b/projects/packages/jetpack-mu-wpcom/src/features/wpcom-admin-interface/wpcom-admin-interface.php index 91e2394b86a7b..dc66f5af8145c 100644 --- a/projects/packages/jetpack-mu-wpcom/src/features/wpcom-admin-interface/wpcom-admin-interface.php +++ b/projects/packages/jetpack-mu-wpcom/src/features/wpcom-admin-interface/wpcom-admin-interface.php @@ -8,6 +8,7 @@ use Automattic\Jetpack\Connection\Client; use Automattic\Jetpack\Connection\Manager as Jetpack_Connection; use Automattic\Jetpack\Jetpack_Mu_Wpcom; +use Automattic\Jetpack\Status; use Automattic\Jetpack\Status\Host; /** @@ -118,8 +119,6 @@ function ( $location ) { const WPCOM_DUPLICATED_VIEW = array( 'edit.php', - 'admin.php?page=stats', - 'tools.php?page=advertising', 'edit.php?post_type=jetpack-portfolio', 'edit.php?post_type=jetpack-testimonial', 'edit-comments.php', @@ -548,3 +547,63 @@ function wpcom_dismiss_removed_calypso_screen_notice() { wp_die(); } add_action( 'wp_ajax_wpcom_dismiss_removed_calypso_screen_notice', 'wpcom_dismiss_removed_calypso_screen_notice' ); + +/** + * Enable the Blaze dashboard (WP-Admin) for users that have the RDV experiment enabled. + * + * @param bool $activation_status The activation status - use WP-Admin or Calypso. + * @return mixed|true + */ +function wpcom_enable_blaze_dashboard_for_experiment( $activation_status ) { + if ( ! wpcom_is_duplicate_views_experiment_enabled() ) { + return $activation_status; + } + + return true; +} + +add_filter( 'jetpack_blaze_dashboard_enable', 'wpcom_enable_blaze_dashboard_for_experiment' ); + +/** + * Make the Jetpack Stats page to point to the Calypso Stats Admin menu - temporary. This is needed because WP-Admin pages are rolled-out individually. + * + * This should be removed when the sites are fully untangled (or with the Jetpack Stats). + * + * This is enabled only for the stats page for users that are part of the remove duplicate views experiment. + * + * @param string $file The parent_file of the page. + * + * @return mixed + */ +function wpcom_select_calypso_admin_menu_stats_for_jetpack_post_stats( $file ) { + global $_wp_real_parent_file, $pagenow; + + $is_on_stats_page = 'admin.php' === $pagenow && isset( $_GET['page'] ) && 'stats' === $_GET['page']; + + if ( ! $is_on_stats_page || ! wpcom_is_duplicate_views_experiment_enabled() ) { + return $file; + } + + remove_filter( 'pre_option_wpcom_admin_interface', 'wpcom_admin_interface_pre_get_option' ); + $is_using_wp_admin = get_option( 'wpcom_admin_interface' ) === 'wp-admin'; + if ( function_exists( 'wpcom_admin_interface_pre_get_option' ) ) { + add_filter( 'pre_option_wpcom_admin_interface', 'wpcom_admin_interface_pre_get_option' ); + } + + if ( $is_using_wp_admin ) { + return $file; + } + + if ( ! wpcom_get_custom_admin_menu_class() ) { + return $file; + } + + /** + * Not ideal... We shouldn't be doing this. + */ + $_wp_real_parent_file['jetpack'] = 'https://wordpress.com/stats/day/' . ( new Status() )->get_site_suffix(); // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited + + return $file; +} + +add_filter( 'parent_file', 'wpcom_select_calypso_admin_menu_stats_for_jetpack_post_stats' ); diff --git a/projects/packages/jetpack-mu-wpcom/src/features/wpcom-sidebar-notice/wpcom-sidebar-notice.php b/projects/packages/jetpack-mu-wpcom/src/features/wpcom-sidebar-notice/wpcom-sidebar-notice.php index 90b1dd2898ff6..ada1b6fc1383d 100644 --- a/projects/packages/jetpack-mu-wpcom/src/features/wpcom-sidebar-notice/wpcom-sidebar-notice.php +++ b/projects/packages/jetpack-mu-wpcom/src/features/wpcom-sidebar-notice/wpcom-sidebar-notice.php @@ -10,7 +10,11 @@ use Automattic\Jetpack\Connection\Manager as Connection_Manager; use Automattic\Jetpack\Jetpack_Mu_Wpcom; -if ( get_option( 'wpcom_admin_interface' ) !== 'wp-admin' ) { +remove_filter( 'pre_option_wpcom_admin_interface', 'wpcom_admin_interface_pre_get_option' ); +$is_wp_admin = get_option( 'wpcom_admin_interface' ) === 'wp-admin'; +add_filter( 'pre_option_wpcom_admin_interface', 'wpcom_admin_interface_pre_get_option', 10 ); + +if ( ! $is_wp_admin ) { return; } diff --git a/projects/plugins/automattic-for-agencies-client/changelog/renovate-playwright-monorepo b/projects/plugins/automattic-for-agencies-client/changelog/renovate-playwright-monorepo new file mode 100644 index 0000000000000..c47cb18e82997 --- /dev/null +++ b/projects/plugins/automattic-for-agencies-client/changelog/renovate-playwright-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: changed + +Updated package dependencies. diff --git a/projects/plugins/automattic-for-agencies-client/tests/e2e/package.json b/projects/plugins/automattic-for-agencies-client/tests/e2e/package.json index 9539ad68604d8..9d667215dfbb5 100644 --- a/projects/plugins/automattic-for-agencies-client/tests/e2e/package.json +++ b/projects/plugins/automattic-for-agencies-client/tests/e2e/package.json @@ -28,7 +28,7 @@ "test:run": ". ./node_modules/jetpack-e2e-commons/bin/app-password.sh && playwright install && NODE_CONFIG_DIR='./config' ALLURE_RESULTS_DIR=./output/allure-results NODE_PATH=\"$PWD/node_modules\" playwright test --config=./playwright.config.mjs" }, "devDependencies": { - "@playwright/test": "1.45.1", + "@playwright/test": "1.48.2", "allure-playwright": "2.9.2", "config": "3.3.7", "jetpack-e2e-commons": "workspace:*" diff --git a/projects/plugins/boost/app/assets/src/js/features/image-size-analysis/recommendations-meta/recommendations-meta.tsx b/projects/plugins/boost/app/assets/src/js/features/image-size-analysis/recommendations-meta/recommendations-meta.tsx index 049d1bb448a59..f475249d3f8b6 100644 --- a/projects/plugins/boost/app/assets/src/js/features/image-size-analysis/recommendations-meta/recommendations-meta.tsx +++ b/projects/plugins/boost/app/assets/src/js/features/image-size-analysis/recommendations-meta/recommendations-meta.tsx @@ -87,7 +87,7 @@ const RecommendationsMeta: React.FC< Props > = ( { isCdnActive } ) => { isaRequest.isError; const getErrorMessage = ( report: typeof isaReport ) => { - if ( report?.status === 'error' || report?.status === 'not-found' ) { + if ( report?.status === 'error' ) { return report.message; } diff --git a/projects/plugins/boost/changelog/fix-isa-showing-error-if-no-report-present b/projects/plugins/boost/changelog/fix-isa-showing-error-if-no-report-present new file mode 100644 index 0000000000000..ec4939628d4b8 --- /dev/null +++ b/projects/plugins/boost/changelog/fix-isa-showing-error-if-no-report-present @@ -0,0 +1,4 @@ +Significance: patch +Type: fixed + +UI: Fixed showing an error if no ISA report was found. diff --git a/projects/plugins/boost/changelog/renovate-playwright-monorepo b/projects/plugins/boost/changelog/renovate-playwright-monorepo new file mode 100644 index 0000000000000..c47cb18e82997 --- /dev/null +++ b/projects/plugins/boost/changelog/renovate-playwright-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: changed + +Updated package dependencies. diff --git a/projects/plugins/boost/tests/e2e/package.json b/projects/plugins/boost/tests/e2e/package.json index 4b5ac7260b261..db9a81ef6e877 100644 --- a/projects/plugins/boost/tests/e2e/package.json +++ b/projects/plugins/boost/tests/e2e/package.json @@ -28,7 +28,7 @@ "prepare:e2e": "pnpm jetpack docker --type e2e --name t1 exec-silent -- chown -R www-data .htaccess wp-config.php wp-content" }, "devDependencies": { - "@playwright/test": "1.45.1", + "@playwright/test": "1.48.2", "allure-playwright": "2.9.2", "config": "3.3.7", "jetpack-e2e-commons": "workspace:*" diff --git a/projects/plugins/classic-theme-helper-plugin/changelog/renovate-playwright-monorepo#3 b/projects/plugins/classic-theme-helper-plugin/changelog/renovate-playwright-monorepo#3 new file mode 100644 index 0000000000000..c47cb18e82997 --- /dev/null +++ b/projects/plugins/classic-theme-helper-plugin/changelog/renovate-playwright-monorepo#3 @@ -0,0 +1,4 @@ +Significance: patch +Type: changed + +Updated package dependencies. diff --git a/projects/plugins/classic-theme-helper-plugin/tests/e2e/package.json b/projects/plugins/classic-theme-helper-plugin/tests/e2e/package.json index 67412ec6234bf..ac579fe0f32ba 100644 --- a/projects/plugins/classic-theme-helper-plugin/tests/e2e/package.json +++ b/projects/plugins/classic-theme-helper-plugin/tests/e2e/package.json @@ -28,7 +28,7 @@ "test:run": ". ./node_modules/jetpack-e2e-commons/bin/app-password.sh && playwright install && NODE_CONFIG_DIR='./config' ALLURE_RESULTS_DIR=./output/allure-results NODE_PATH=\"$PWD/node_modules\" playwright test --config=./playwright.config.mjs" }, "devDependencies": { - "@playwright/test": "1.45.1", + "@playwright/test": "1.48.2", "allure-playwright": "2.9.2", "config": "3.3.7", "jetpack-e2e-commons": "workspace:*" diff --git a/projects/plugins/jetpack/changelog/change-jetpack-ai-rate-logo-generator b/projects/plugins/jetpack/changelog/change-jetpack-ai-rate-logo-generator new file mode 100644 index 0000000000000..931f46e447031 --- /dev/null +++ b/projects/plugins/jetpack/changelog/change-jetpack-ai-rate-logo-generator @@ -0,0 +1,4 @@ +Significance: patch +Type: other + +Jetpack AI: Add thumbs up/down component to AI logo generator diff --git a/projects/plugins/jetpack/changelog/renovate-playwright-monorepo b/projects/plugins/jetpack/changelog/renovate-playwright-monorepo new file mode 100644 index 0000000000000..1eaea6a769e84 --- /dev/null +++ b/projects/plugins/jetpack/changelog/renovate-playwright-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: other + +Updated package dependencies. diff --git a/projects/plugins/jetpack/extensions/blocks/ai-assistant/lib/utils/get-feature-availability.ts b/projects/plugins/jetpack/extensions/blocks/ai-assistant/lib/utils/get-feature-availability.ts index b18ea2a171d07..f6be56c958493 100644 --- a/projects/plugins/jetpack/extensions/blocks/ai-assistant/lib/utils/get-feature-availability.ts +++ b/projects/plugins/jetpack/extensions/blocks/ai-assistant/lib/utils/get-feature-availability.ts @@ -3,6 +3,7 @@ */ import { getJetpackExtensionAvailability } from '@automattic/jetpack-shared-extension-utils'; +// TODO: Move to the AI Client js-package export function getFeatureAvailability( feature: string ): boolean { return getJetpackExtensionAvailability( feature ).available === true; } diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/ai-feedback/index.tsx b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/ai-feedback/index.tsx deleted file mode 100644 index fb99d2cb0fd0d..0000000000000 --- a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/ai-feedback/index.tsx +++ /dev/null @@ -1,72 +0,0 @@ -import { useAnalytics } from '@automattic/jetpack-shared-extension-utils'; -import { Button, Tooltip } from '@wordpress/components'; -import { __ } from '@wordpress/i18n'; -import { thumbsUp, thumbsDown } from '@wordpress/icons'; -import clsx from 'clsx'; -import { useState } from 'react'; -import { getFeatureAvailability } from '../../../../blocks/ai-assistant/lib/utils/get-feature-availability'; - -import './style.scss'; - -export default function AiFeedbackThumbs( { - disabled = false, - iconSize = 24, - ratedItem, - feature, -} ) { - const [ itemsRated, setItemsRated ] = useState( {} ); - const { tracks } = useAnalytics(); - - const rateAI = ( isThumbsUp: boolean ) => { - const aiRating = isThumbsUp ? 'thumbs-up' : 'thumbs-down'; - - setItemsRated( { - ...itemsRated, - [ ratedItem ]: aiRating, - } ); - - tracks.recordEvent( 'jetpack_ai_feedback', { - type: feature, - rating: aiRating, - } ); - }; - - const checkThumb = ( thumbValue: string ) => { - if ( ! itemsRated[ ratedItem ] ) { - return false; - } - - return itemsRated[ ratedItem ] === thumbValue; - }; - - return getFeatureAvailability( 'ai-response-feedback' ) ? ( -
- -
- ) : ( - <> - ); -} diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/ai-image/components/carrousel.tsx b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/ai-image/components/carrousel.tsx index 97fc5acec4950..f9dec07e3cb2b 100644 --- a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/ai-image/components/carrousel.tsx +++ b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/ai-image/components/carrousel.tsx @@ -1,6 +1,7 @@ /** * External dependencies */ +import { AiFeedbackThumbs } from '@automattic/jetpack-ai-client'; import { Spinner } from '@wordpress/components'; import { __ } from '@wordpress/i18n'; import { Icon, chevronLeft, chevronRight } from '@wordpress/icons'; @@ -8,13 +9,14 @@ import clsx from 'clsx'; /** * Internal dependencies */ -import AiFeedbackThumbs from '../../ai-feedback'; import AiIcon from '../../ai-icon'; import './carrousel.scss'; export type CarrouselImageData = { image?: string; libraryId?: number | string; + prompt?: string; + revisedPrompt?: string; libraryUrl?: string; generating?: boolean; error?: { @@ -108,7 +110,7 @@ export default function Carrousel( {
{ images.length > 1 && prevButton } - { images.map( ( { image, generating, error }, index ) => ( + { images.map( ( { image, generating, error, revisedPrompt }, index ) => (
) : ( - + { ) } ) } @@ -171,6 +177,11 @@ export default function Carrousel( { disabled={ aiFeedbackDisabled( images[ current ] ) } ratedItem={ images[ current ].libraryUrl || '' } iconSize={ 20 } + options={ { + mediaLibraryId: Number( images[ current ].libraryId ), + prompt: images[ current ].prompt, + revisedPrompt: images[ current ].revisedPrompt, + } } feature="image-generator" />
diff --git a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/ai-image/hooks/use-ai-image.ts b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/ai-image/hooks/use-ai-image.ts index b8897913d99a4..bd2fcdd96695a 100644 --- a/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/ai-image/hooks/use-ai-image.ts +++ b/projects/plugins/jetpack/extensions/plugins/ai-assistant-plugin/components/ai-image/hooks/use-ai-image.ts @@ -167,7 +167,9 @@ export default function useAiImage( { .then( result => { if ( result.data.length > 0 ) { const image = 'data:image/png;base64,' + result.data[ 0 ].b64_json; - updateImages( { image }, pointer.current ); + const prompt = userPrompt || null; + const revisedPrompt = result.data[ 0 ].revised_prompt || null; + updateImages( { image, prompt, revisedPrompt }, pointer.current ); updateRequestsCount(); saveToMediaLibrary( image, name ) .then( savedImage => { @@ -181,7 +183,7 @@ export default function useAiImage( { image, libraryId: savedImage?.id, libraryUrl: savedImage?.url, - revisedPrompt: result.data[ 0 ].revised_prompt || '', + revisedPrompt, } ); } ) .catch( () => { diff --git a/projects/plugins/jetpack/tests/e2e/package.json b/projects/plugins/jetpack/tests/e2e/package.json index 5ef5ed5c030c1..3af8c58958fc4 100644 --- a/projects/plugins/jetpack/tests/e2e/package.json +++ b/projects/plugins/jetpack/tests/e2e/package.json @@ -34,7 +34,7 @@ "test-encrypt-config": "openssl enc -md sha1 -aes-256-cbc -pass env:CONFIG_KEY -in config/local.cjs -out ./config/encrypted.enc" }, "devDependencies": { - "@playwright/test": "1.45.1", + "@playwright/test": "1.48.2", "allure-playwright": "2.9.2", "config": "3.3.7", "jetpack-e2e-commons": "workspace:*" diff --git a/projects/plugins/search/changelog/renovate-playwright-monorepo b/projects/plugins/search/changelog/renovate-playwright-monorepo new file mode 100644 index 0000000000000..c47cb18e82997 --- /dev/null +++ b/projects/plugins/search/changelog/renovate-playwright-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: changed + +Updated package dependencies. diff --git a/projects/plugins/search/tests/e2e/package.json b/projects/plugins/search/tests/e2e/package.json index c289436e0db42..6440f8675589e 100644 --- a/projects/plugins/search/tests/e2e/package.json +++ b/projects/plugins/search/tests/e2e/package.json @@ -26,7 +26,7 @@ "test:run": ". ./node_modules/jetpack-e2e-commons/bin/app-password.sh && playwright install && NODE_CONFIG_DIR='./config' ALLURE_RESULTS_DIR=./output/allure-results NODE_PATH=\"$PWD/node_modules\" playwright test --config=playwright.config.mjs" }, "devDependencies": { - "@playwright/test": "1.45.1", + "@playwright/test": "1.48.2", "allure-playwright": "2.9.2", "config": "3.3.7", "jetpack-e2e-commons": "workspace:*" diff --git a/projects/plugins/social/changelog/renovate-playwright-monorepo b/projects/plugins/social/changelog/renovate-playwright-monorepo new file mode 100644 index 0000000000000..c47cb18e82997 --- /dev/null +++ b/projects/plugins/social/changelog/renovate-playwright-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: changed + +Updated package dependencies. diff --git a/projects/plugins/social/tests/e2e/package.json b/projects/plugins/social/tests/e2e/package.json index dd164c8273870..b478405ef1752 100644 --- a/projects/plugins/social/tests/e2e/package.json +++ b/projects/plugins/social/tests/e2e/package.json @@ -30,7 +30,7 @@ "test:run": ". ./node_modules/jetpack-e2e-commons/bin/app-password.sh && playwright install && NODE_CONFIG_DIR='./config' ALLURE_RESULTS_DIR=./output/allure-results NODE_PATH=\"$PWD/node_modules\" playwright test --config=./playwright.config.mjs" }, "devDependencies": { - "@playwright/test": "1.45.1", + "@playwright/test": "1.48.2", "allure-playwright": "2.9.2", "config": "3.3.7", "jetpack-e2e-commons": "workspace:*" diff --git a/projects/plugins/starter-plugin/changelog/renovate-playwright-monorepo b/projects/plugins/starter-plugin/changelog/renovate-playwright-monorepo new file mode 100644 index 0000000000000..c47cb18e82997 --- /dev/null +++ b/projects/plugins/starter-plugin/changelog/renovate-playwright-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: changed + +Updated package dependencies. diff --git a/projects/plugins/starter-plugin/tests/e2e/package.json b/projects/plugins/starter-plugin/tests/e2e/package.json index 0d1fbd85b424e..68195c8b5978c 100644 --- a/projects/plugins/starter-plugin/tests/e2e/package.json +++ b/projects/plugins/starter-plugin/tests/e2e/package.json @@ -28,7 +28,7 @@ "test:run": ". ./node_modules/jetpack-e2e-commons/bin/app-password.sh && playwright install && NODE_CONFIG_DIR='./config' ALLURE_RESULTS_DIR=./output/allure-results NODE_PATH=\"$PWD/node_modules\" playwright test --config=./playwright.config.mjs" }, "devDependencies": { - "@playwright/test": "1.45.1", + "@playwright/test": "1.48.2", "allure-playwright": "2.9.2", "config": "3.3.7", "jetpack-e2e-commons": "workspace:*" diff --git a/projects/plugins/videopress/changelog/renovate-playwright-monorepo b/projects/plugins/videopress/changelog/renovate-playwright-monorepo new file mode 100644 index 0000000000000..c47cb18e82997 --- /dev/null +++ b/projects/plugins/videopress/changelog/renovate-playwright-monorepo @@ -0,0 +1,4 @@ +Significance: patch +Type: changed + +Updated package dependencies. diff --git a/projects/plugins/videopress/tests/e2e/package.json b/projects/plugins/videopress/tests/e2e/package.json index 52351fe539eb1..c7c9f604db86b 100644 --- a/projects/plugins/videopress/tests/e2e/package.json +++ b/projects/plugins/videopress/tests/e2e/package.json @@ -28,7 +28,7 @@ "test:run": ". ./node_modules/jetpack-e2e-commons/bin/app-password.sh && playwright install && NODE_CONFIG_DIR='./config' ALLURE_RESULTS_DIR=./output/allure-results NODE_PATH=\"$PWD/node_modules\" playwright test --config=./playwright.config.mjs" }, "devDependencies": { - "@playwright/test": "1.45.1", + "@playwright/test": "1.48.2", "allure-playwright": "2.9.2", "config": "3.3.7", "jetpack-e2e-commons": "workspace:*" diff --git a/projects/plugins/wpcomsh/changelog/update-stats-wpcom-features b/projects/plugins/wpcomsh/changelog/update-stats-wpcom-features new file mode 100644 index 0000000000000..6ea8667450618 --- /dev/null +++ b/projects/plugins/wpcomsh/changelog/update-stats-wpcom-features @@ -0,0 +1,5 @@ +Significance: patch +Type: added +Comment: Sync changes from D167647 + + diff --git a/projects/plugins/wpcomsh/wpcom-features/class-wpcom-features.php b/projects/plugins/wpcomsh/wpcom-features/class-wpcom-features.php index 94cb012d150b3..d6ee7cf00c60f 100644 --- a/projects/plugins/wpcomsh/wpcom-features/class-wpcom-features.php +++ b/projects/plugins/wpcomsh/wpcom-features/class-wpcom-features.php @@ -432,6 +432,8 @@ class WPCOM_Features { public const SPACE_UPGRADED_STORAGE = 'space-upgraded-storage'; public const SSH = 'ssh'; public const STAGING_SITES = 'staging-sites'; + public const STATS_BASIC_TEMP = 'stats-basic'; + public const STATS_COMMERCIAL = 'stats-commercial'; public const STATS_FREE = 'stats-free'; public const STATS_PAID = 'stats-paid'; public const STUDIO_SYNC = 'studio-sync'; @@ -1146,23 +1148,49 @@ class WPCOM_Features { self::WPCOM_ECOMMERCE_TRIAL_PLANS, ), ), + // Gives near full access to all stats features. All features except new commercial level modules like UTM and device stats. self::STATS_FREE => array( self::JETPACK_STATS_PLANS, self::JETPACK_GROWTH_PLANS, - ), - self::STATS_PAID => array( + // Provides legacy access for free and personal sites created before 2024-01-09. + // Can be removed once we are ready to paywall all free and/or old personal sites. array( 'before' => '2024-01-09', - self::WPCOM_PERSONAL_PLANS, + self::WPCOM_PERSONAL_AND_HIGHER_PLANS, + self::WPCOM_ALL_SITES, + ), + ), + // Provides limited stats for free and personal sites created before 2024-12-06. + // Features: Posts/Locations/Emails/File downloads + // Can be removed once we are ready to paywall all free sites. + self::STATS_BASIC_TEMP => array( + array( + 'before' => '2024-12-12', self::WPCOM_ALL_SITES, ), + ), + // Provides personal sites and higher access to all stats features except commercial level modules. + // Features: Posts/Locations/Emails/File downloads/Referrers/Clicks + self::STATS_PAID => array( + self::WPCOM_PERSONAL_AND_HIGHER_PLANS, self::WP_P2_PLUS_MONTHLY, - self::WPCOM_PREMIUM_AND_HIGHER_PLANS, self::JETPACK_STATS_PWYW, self::JETPACK_STATS_MONTHLY, self::JETPACK_STATS_BI_YEARLY, self::JETPACK_STATS_YEARLY, self::JETPACK_COMPLETE_PLANS, + self::JETPACK_BUSINESS_PLANS, + self::JETPACK_GROWTH_PLANS, + ), + // Provides premium sites and higher access to all stats features. + // Features: STATS_PAID + UTM & Devices modules + self::STATS_COMMERCIAL => array( + self::WPCOM_PREMIUM_AND_HIGHER_PLANS, + self::JETPACK_STATS_MONTHLY, + self::JETPACK_STATS_BI_YEARLY, + self::JETPACK_STATS_YEARLY, + self::JETPACK_COMPLETE_PLANS, + self::JETPACK_BUSINESS_PLANS, self::JETPACK_GROWTH_PLANS, ), self::STUDIO_SYNC => array( diff --git a/tools/e2e-commons/package.json b/tools/e2e-commons/package.json index 87de25ba9f28f..69952b4a03e72 100644 --- a/tools/e2e-commons/package.json +++ b/tools/e2e-commons/package.json @@ -19,7 +19,7 @@ "jetpack-connect": "node bin/e2e-jetpack-connector.js" }, "devDependencies": { - "@playwright/test": "1.45.1", + "@playwright/test": "1.48.2", "@slack/web-api": "7.3.2", "@types/lodash-es": "4.17.12", "allure-playwright": "2.9.2",