Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WAF: Allow rules to specify body parser type #39516

Merged
merged 4 commits into from
Oct 4, 2024
Merged

Conversation

nateweller
Copy link
Contributor

@nateweller nateweller commented Sep 24, 2024

Resolves https://github.com/Automattic/jetpack-scan-team/issues/1423

Proposed changes:

  1. Adds a public $version property to Waf_Runtime. The intention is for rule files to use this property, i.e. if ( ( $waf->version ?? 0 ) >= 5 ) { .. }.
  2. Adds a private string $body_processor property to the Waf_Runtime class, along with a public function set_body_processor( $processor ) to enable rule files the ability to manually specify the method by which to retrieve post values from the request.
  3. Updates the meta() method in Waf_Runtime to provide $this->body_processor to the $this->request->get_post_vars() method, which has been updated to support that new argument.

Other information:

  • Have you written new tests for your changes, if applicable?
  • Have you checked the E2E test CI results, and verified that your changes do not break them?
  • Have you tested your changes on WordPress.com, if applicable (if so, you'll see a generated comment below with a script to run)?

Jetpack product discussion

https://github.com/Automattic/jetpack-scan-team/issues/1423

Does this pull request change what data or activity we track or use?

No

Testing instructions:

  • Test that requests are parsed and blocked correctly when containing a property with a string value of <script>.
  • Manually insert $waf->set_body_processor( 'JSON' ); at the top of your automatic rules file and repeat the test with a JSON body in your request, with any content type.
  • Repeat with $waf->set_body_processor( 'URLENCODED' ); and repeat the test with applicable request body and content types.

@nateweller nateweller self-assigned this Sep 24, 2024
@nateweller nateweller requested a review from a team September 24, 2024 20:50
Copy link
Contributor

github-actions bot commented Sep 24, 2024

Are you an Automattician? Please test your changes on all WordPress.com environments to help mitigate accidental explosions.

  • To test on WoA, go to the Plugins menu on a WordPress.com Simple site. Click on the "Upload" button and follow the upgrade flow to be able to upload, install, and activate the Jetpack Beta plugin. Once the plugin is active, go to Jetpack > Jetpack Beta, select your plugin, and enable the add/waf/body-processor branch.

  • To test on Simple, run the following command on your sandbox:

    bin/jetpack-downloader test jetpack add/waf/body-processor
    

Interested in more tips and information?

  • In your local development environment, use the jetpack rsync command to sync your changes to a WoA dev blog.
  • Read more about our development workflow here: PCYsg-eg0-p2
  • Figure out when your changes will be shipped to customers here: PCYsg-eg5-p2

Copy link
Contributor

Thank you for your PR!

When contributing to Jetpack, we have a few suggestions that can help us test and review your patch:

  • ✅ Include a description of your PR changes.
  • ✅ Add a "[Status]" label (In Progress, Needs Team Review, ...).
  • ✅ Add testing instructions.
  • ✅ Specify whether this PR includes any changes to data or privacy.
  • ✅ Add changelog entries to affected projects

This comment will be updated as you work on your PR and make changes. If you think that some of those checks are not needed for your PR, please explain why you think so. Thanks for cooperation 🤖


The e2e test report can be found here. Please note that it can take a few minutes after the e2e tests checks are complete for the report to be available.


Follow this PR Review Process:

  1. Ensure all required checks appearing at the bottom of this PR are passing.
  2. Choose a review path based on your changes:
    • A. Team Review: add the "[Status] Needs Team Review" label
      • For most changes, including minor cross-team impacts.
      • Example: Updating a team-specific component or a small change to a shared library.
    • B. Crew Review: add the "[Status] Needs Review" label
      • For significant changes to core functionality.
      • Example: Major updates to a shared library or complex features.
    • C. Both: Start with Team, then request Crew
      • For complex changes or when you need extra confidence.
      • Example: Refactor affecting multiple systems.
  3. Get at least one approval before merging.

Still unsure? Reach out in #jetpack-developers for guidance!

marcS0H
marcS0H previously approved these changes Oct 2, 2024
Copy link

@marcS0H marcS0H left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. 👍

@nateweller nateweller added this to the protect/3.1.0 milestone Oct 3, 2024
bhoop
bhoop previously approved these changes Oct 4, 2024
@nateweller nateweller dismissed stale reviews from bhoop and marcS0H via 23bc5d6 October 4, 2024 21:41
@nateweller nateweller merged commit d6d3ba7 into trunk Oct 4, 2024
57 checks passed
@nateweller nateweller deleted the add/waf/body-processor branch October 4, 2024 21:53
gogdzl pushed a commit that referenced this pull request Oct 25, 2024
* WAF: Add support for rules file to manually specify body parsing method

* Add public $version property to Waf_Runtime
gogdzl added a commit that referenced this pull request Oct 30, 2024
…cts (#38851)

* docker: Re-add xz-utils (#39553)

Previously this was installed as a dependency of mailcap, which was a
dependency of mime-support, which was a dependency of various things.
But apparently things depending on mime-support are transitioning to
media-types which doesn't have that dependency.

We need xz-utils for extracting `build.tar.xz` in CI, so make sure it's
installed.

* Bump wc-calypso-bridge to 2.7.1 and add changelog (#39557)

* Add/icons for all product cards on dashboard (#39513)

* Ensure all product cards on Jetpack Dashboard have icons when inactive

* changelog

* Add icon to boost install section

* Fix AI missing icon when active

* Move CRM back to where it was

* Remove/connection nudges where not needed (#39533)

* Remove connection nudges for cards that don't need it on dashboard

* Ask for user connection on Blaze when not present and remove nudge on Akismet

* changelog

* Get rid of connection nudge for Search modules

* Fix blaze tests

* phan: Update wpcom stubs (#39565)

Co-authored-by: Phabricator Bot <[email protected]>

* wpcom_add_shopping_cart: Use new is_cart_empty function (#39563)

* Blocks: convert to module (#39449)

* Blocks: convert to a module

Co-authored-by: Brad Jorsch <[email protected]>

* Jetpack: Remove WAF deprecation notice (#39568)

* Title Optimization: improve button behavior on error screen (#39554)

* Properly close the modal when Cancel is clicked, cleaning up the state

* Skip new generation on try again button when there are options already

* Changelog

* Jetpack: remove excessive hooks from social logos and genericons (#39564)

`jetpack_register_social_logos()` and `jetpack_register_genericons` is called directly, and the files are [loaded](https://github.com/Automattic/jetpack/blob/8d8e0e6ef75b32c52029a57740cb6e13c6312296/projects/plugins/jetpack/class.jetpack.php#L735) on `wp_loaded` after the `init` hook has already run.

* Remove/unnecessary textdomain filter (#39552)

* i18n: Remove unnecessary filter to loading translations

This filter has been moved to D162485-code

* changelog

* Add changelog files

* Jetpack AI Logo generator toolbar button label (#39550)

* add prop to toggle button text

* show button text Generate if the site has no logo set

* add changelog

* rename prop so it's not misleading

* Change/at a glance unify connection ctas (#39535)

* Update CTA for connection related cards on At A Glance

* changelog

* Fix JS tests

* Fix e2e test

* Fix alignment issue on smaller screens

* Fix e2e test

* Fix cta spacing issue

* Add border to connection cards

* Fix e2e test

* Make border transparent

* Align content with title on connection cards

* Jetpack: remove unused infinite scroll code (#39570)

* Remove unused and non-working code.
* Deprecate functions that are no longer needed to be removed later.

* Protect: Fix blockedRequests destructuring fallback (#39569)

* Protect: Fix overwritten FirewallSubheading updates (#39571)

* Reapply overwritten changes

* changelog

* Fix import

* Move stories to broken directory

* My Jetpack: update notice style on mobile (#39537)

* My Jetpack: update notice mobile style

* changelog

* Update notice style to the same when there's title

* My Jetpack Welcome Flow: Show default recommendations upfront first, then offer optional survey (#39485)

* Jetpack plugin - Story Block: Fix 'Division by zero' Fatal (#39577)

* Jetpack plugin - Story Block: Fix 'Division by zero' Fatal

* Masterbar: Remove User Info side-panel (#39546)

* Masterbar: Remove User Info side-panel

* Jetpack Sync: Fix a bug in syncing HPOS 'woocommerce_delete_order' actions (#39562)

* Jetpack Sync: Fix a bug in syncing HPOS 'woocommerce_delete_order' actions

* 'connect_url_redirect' hook: Redirect to the 'redirect_after_auth' url if already connected (for 'connect_after_checkout' flow) (#39573)

* Fix parameters to allow for connectAfterCheckout flow from recommendation card (#39578)

* Fix parameters to allow for connectAfterCheckout flow from recommendation card

* changelog

* Fix fetching the default value in the hook itself

* changelog

* Help Center: use Zendesk staging when proxied (#39566)

* My Jetpack: fix spacing between price and discount tag (#39576)

* My Jetpack: fix discount tag spacing

* changelog

* Follow Blog Widget: Strip Slashes on Subscribe Text (#39433)

Removes slashes from the Subscribe text output on the Follow Blog
widget. It looks like the Subscribe block already does this, which is
why the issue doesn't happen there. It's just been annoying me a bit
lately that the Follow Blog widget doesn't do the same too.

* Fix a case where wp_rand is undefined. (#39581)

* Added a check for wp_rand in case pluggables are not loaded yet.

* Changelog.

* Revert "Change/at a glance unify connection ctas (#39535)" (#39584)

This reverts commit 4f47d298ffd8726cc5168a27d5540e0242388755.

* wpcomsh: Move `load_muplugin_textdomain` call to `after_setup_theme` hook (#39586)

* Social: Add Bluesky connection UI (#39561)

* Add Bluesky to the supported services

* Update connect URL logic for Bluesky

* Create a dedicated component for custom inputs

* Update ConnectForm to use CustomInputs

* Update ServiceItem component to handle Bluesky custom inputs

* Do the make up

* Add changelog

* Fix messed up translations

* Clean up

* Backport jetpack 13.9-beta Changes (#39587)

* Changelog and readme.txt edits.

* Amend readme.txt

* Changelog and readme.txt edits. (#39598)

* Social: Fix Bluesky not showing up on page load (#39597)

* Email preview: improve error state visually (#39476)

* Jetpack: Check $submenu is not NULL before adding Scan option (#39424)

* Check $submenu is not NULL before accessing it

* Add changelog

---------

Co-authored-by: mmtr <[email protected]>

* Update/at a glance unify connection ctas (#39585)

* Unify connection notices on At A Glance

* changelog

* Fix nudges on settings page

* Fix tests

* Changes the error Blaze shows during sync to be a warning (#39515)

* Changes the error Blaze shows during sync to be a warning

* Update/jetpack settings connection nudges (#39591)

* Unify connection nudges on settings

* changelog

* Update dependency core-js to v3.38.1 (#39592)

* Update dependency core-js to v3.38.1
* Remove unnecessary deps

---------

Co-authored-by: Renovate Bot <[email protected]>
Co-authored-by: Brad Jorsch <[email protected]>

* Changelog. (#39606)

* Post-migration Experience: Adds the placeholder task list (#39593)

* Add the placeholder Migration task list

* changelog

* Update the tasklist name to match calypso's

---------

Co-authored-by: Valter Lorran <[email protected]>

* Release WAF 0.20.1. (#39607)

* Update Size-limit to v11.1.6 (#39595)

Co-authored-by: Renovate Bot <[email protected]>

* Update dependency uplot to v1.6.31 [SECURITY] (#39610)

Co-authored-by: Renovate Bot <[email protected]>

* Protect: Fix last_checked conversions (#39549)

* Convert last_checked value so it in local time before the WP install timezone conversions apply

* changelog

* Update var naming

* Protect: Improve optimistically scanning (#39538)

* Improve optimistically scanning

* Update formatting

* changelog

* Always return API data when scan status is non-idle

* Fix lastChecked timezone conversion

* Clean up useScanStatusQuery queryFn

* Update projects/plugins/protect/src/js/data/scan/use-scan-status-query.ts

Co-authored-by: Nate Weller <[email protected]>

* Fix lint error

* Fix lint error

* Update projects/plugins/protect/src/js/data/scan/use-scan-status-query.ts

Co-authored-by: Nate Weller <[email protected]>

* Update projects/plugins/protect/src/js/data/scan/use-start-scan-mutation.ts

Co-authored-by: Nate Weller <[email protected]>

---------

Co-authored-by: Nate Weller <[email protected]>

* Protect: Minor clean up of scan page index component (#39574)

* Settings: Newsletter: Adding connection banner to each section (#39539)

* Settings: Adding connection banner for all Newsletter options

* changelog

* Settings: Updating icon for the Newsletter connection banner

* Settings: Updating icon for the Newsletter connection banner

* Settings: Renaming const and its value

* Admin Menu: Adding tests to test Jetpack admin menu 'current' menu item class and menu order (#39374)

* Update Jetpack Scan link (#39619)

* Update Jetpack Scan link in menu

* changelog

* Update Jetpack scan link for Default view

* changelog

* Fix test

* wpcomsh: Update translations (#39621)

* Update language files

* changelog

* wpcomsh: Update translations (#39623)

* Update language files

* changelog

* Backport Jetpack 13.9 changes to readme and CHANGELOG.md. (#39622)

* Changelog edits.

* Changelog squash and readme.txt.

* Jetpack 13.9.

* Reset to-test.md.

* Changelog and readme.txt edits. (#39624)

* Connection: initialize assets in wp-admin only (#39604)

Only initialize Connection assets in the admin area.

* Update wordpress monorepo (#39594)

* Update wordpress monorepo
* Update test for Modal close animation
* Remove obsolete `@types/wordpress__media-utils`, as `@wordpress/media-utils` contains types now. Fix one type.

---------

Co-authored-by: Renovate Bot <[email protected]>
Co-authored-by: Brad Jorsch <[email protected]>

* Performance: remove imploding CSS code (#39518)

* Protect: Update use fixers query error prop handling (#39498)

* Update FixerStatus type to account for potential error props

* changelog

* Handle error responses

* Only handle top level errors in useFixersQuery, threat level errors are handled in the completion block

* Add clarifying comment

* Improve fixer types

* Fix prop handling

* Update useFixers hook for compatibility with type updates

* Remove optional chaining where applicable, update logic to rely on TS types

* Update types

* Fix type error

---------

Co-authored-by: Nate Weller <[email protected]>

* wpcomsh: Update wc-calypso-bridge to 2.8.0 (#39613)

* Sitemap: Make sitemap storing more efficient by not querying the full post content before saving (#39572)

* Make sitemap storing more efficient but not querying the full post content when storing the sitemap

This update tries to remediate a problem where the persistent object cache gets huge
with data that we will not use in the end.
We just need to get the id of the current sitemap post and if it exists, we update it.

Before, we were using get_post and this polluted the cache running into OOM situations

* Shortcodes: Fix warning when attachment src is false in shortcodes module (#39601)

* Check if the attachment is false, to avoid warnings

* Boost: Exclude shortcode produced scripts from deferred js (#39616)

* Exclude shortcode provided scripts from deferred js

* changelog

* Roles endpoint: Use instance of for checking wp roles (#39634)

* Improve roles check

* changelog

* Added defensive check for arrays

* Updated phan baseline

* Jetpack plugin: Update phan baselines

---------

Co-authored-by: Foteini Giannaropoulou <[email protected]>

* phan: Update custom stubs (#39632)

Co-authored-by: matticbot <[email protected]>

* Issue templates: add new issue type option (#39637)

This was added as an option as part of this set of changes to GitHub issues:
https://github.blog/changelog/2024-10-01-evolving-github-issues-public-preview/

* Update dependency photon to v4.1.1 (#39639)

* blogging-prompt: preserve language on answers link (#36730)

* Admin bar: replace 'Edit Profile' and 'My Account' with 'My Profile' (#39600)

* profile.php: Make wpcom links more concise (#39636)

* Social: Fix share status tooltip text overflow (#39599)

* WPCOMSH: Remove redirection from /wp-admin/plugin.php to /plugins/manage/<site> (#39615)

* remove redirection

* changelog

* Boost: Fix photon URL check (#39635)

* Extract is_photon_url to a method

* Improve photon URL check in image guide proxy

* changelog

* Rename the method for consistency

* Add boost changelog

* Add a test

* Update projects/packages/image-cdn/src/class-image-cdn-core.php

Co-authored-by: Brad Jorsch <[email protected]>

* Update projects/packages/image-cdn/changelog/add-photon-url-check-method

Co-authored-by: Brad Jorsch <[email protected]>

---------

Co-authored-by: Brad Jorsch <[email protected]>

* Update dependency @sentry/browser to v8 [SECURITY] (#39640)


Co-authored-by: Renovate Bot <[email protected]>

* e2e tests: update encryption key (#39645)

* Update VideoPress block connection banner, align with other blocks (#39628)

* Make VideoPress connection banner consistent with Nudge component

* changelog

* Polish the VideoPress connection banner

* Move constants in block

* Remove unintentional change

* WAF: Allow rules to specify body parser type (#39516)

* WAF: Add support for rules file to manually specify body parsing method

* Add public $version property to Waf_Runtime

* Blocks: provide nice error message for workaround in dev env (#39602)

* Provide nice error message for workaround

* typos will be the dealth of me

* Settings - Newsletter, Sharing: Disabling options for sites missing user connection (#39520)

* Newsletters: Disabling controls that need user connection

* changelog

* Settings: Fixing disabled label when not saving

* Settings: Improving isLinked check

* Settings: Removing disabled CSS from active controls

* Settings: Disabling sharing without a connected user

* Settings: Disabling newsletter settings for sites without a single connected user

* Settings: Disabling also whole groups

* Settings: Updating the description of the task

* Settings: Updating the description of the task

* Boost: Use "critical css gen" package from the monorepo (#39509)

* Update Boost to use "critical css gen" package from the monorepo

* add changelog

* Update Boost to use new browser and node from "critical css gen" package

* add changelog

* Update package entry points

* Cleanup package entry points

* Use dynamic import for global type definitions

* Add browser entry point back to package

* Use dynamic import for css generator

* Don't use destructuring

* Update default entry point to use browser version

* Update Boost to use updated package entry point

* Simplify package build

* Remove unnecessary dependency enqueue

* Attempt to fix tests

* Rename dynamically imported file

* Merge dynamic import files

* Add build step for tests

* Cleanup build for tests

* Fix tests breaking due to missing package build

* Update package entry points

Co-authored-by: Brad Jorsch <[email protected]>

* Add helper for critical css generator import

* update changelogs

---------

Co-authored-by: Brad Jorsch <[email protected]>

* Post-migration Experience: Add the "Review the site's content" task (#39641)

* Add the Review site task

* changelog

* Remove calypso path

---------

Co-authored-by: Valter Lorran <[email protected]>

* Backport changes in JS Packages (#39664)

* Update versions/changelog

* Update lock file

* VideoPress: use "Processing" thumbnail placeholder while a new thumbnail is being saved (#39631)

* Export the thumb update status on the edit details hook

* Use poster updating status to set video thumb as processing

* Changelog

---------

Co-authored-by: Douglas <[email protected]>

* Connection: optimize admin_notices owner delete warning (#39650)

Optimize the `admin_notices` hook conditions to get rid of an excessive callback.

* Fix new PHPCompatibility-dev sniff (#39665)

PHPCompatibility, in their dev branch, just added a sniff for the
`$escape` parameter to various CSV-related functions, since PHP has
decided they might change the default in 9.0.

* Update dependency cookie to v0.7.0 [SECURITY] (#39649)

---------

Co-authored-by: Renovate Bot <[email protected]>

* Update dependency mediawiki/mediawiki-codesniffer to v44 (#39648)

* Update dependency mediawiki/mediawiki-codesniffer to v44
* Update monorepo root composer.lock. New versions of various other phpcs packages.
* MediaWiki.Usage.DoubleNotOperator has been removed upstream.
* Disable Generic.CodeAnalysis.RequireExplicitBooleanOperatorPrecedence.MissingParentheses pending discussion
* Fix new Squiz.Commenting.FunctionComment.MissingParamType sniffs

---------

Co-authored-by: Renovate Bot <[email protected]>
Co-authored-by: Brad Jorsch <[email protected]>

* Jetpack AI: change logo generator styles source (#39589)

* remove style definitions from frontend, add type for style object

* update types and hook props

* remove showStyleSelector prop, take it from hook now. Use styles as sent from backend, filtered and shaped there already

* add siteFragment to global interface for initial JP state, avoid linter warnings

* add changelogs

* remove the need for beta feature and gutenberg extension, if backend sends it, we use it

* find_psr4_file: Quick exit if psr4_map is not populated (#39646)

* Update storybook monorepo to v8.3.5 (#39669)

---------

Co-authored-by: Renovate Bot <[email protected]>

* Lock file maintenance (#39653)

* Lock file maintenance

---------

Co-authored-by: Renovate Bot <[email protected]>

* WAF: Include waf_supported and automatic_rules_last_updated in the jetpack/v4/waf REST API endpoint response (#39511)

* Jetpack Sync: Add 'woocommerce_analytics_first_activation' in options' whitelist (#39658)

* Jetpack Sync: Add 'woocommerce_analytics_first_activation' in options' whitelist

* Image CDN: URL encode path parts (#39560)

* rawurlencode each path part in the image URL

* Fix a typo

* Add a test

* changelog

* Add comment to clarify space usage

---------

Co-authored-by: Peter Petrov <[email protected]>

* Sync: Don't sync set object terms action for blacklisted taxonomies (#39663)

* Filter out set_object_terms actions with blacklisted taxonomies

* Args in this flow does not have the terms retrieved as objects. Instead we rely directly on the taxonomy

* changelog

* Update projects/packages/sync/src/modules/class-terms.php

Co-authored-by: Foteini Giannaropoulou <[email protected]>

---------

Co-authored-by: Foteini Giannaropoulou <[email protected]>

* Newsletter: change default reply-to option from "no reply" to "comments" (#39657)

* Changelog and readme.txt edits. (#39668)

* Update dependency express to v4.21.0 (#39670)

---------

Co-authored-by: Renovate Bot <[email protected]>

* Sharing: register menu even when user is not connected to wpcom. (#39677)

Fixes p1728349589696649-slack-CDD9LQRSN

* explat: Fix Phan issues (#39443)

Add some missing `use` directives and add `WP_Error` to one return
declaration.

* Fix/bug where connection banner shows in p2 (#39667)

* Fix issue where simple and atomic sites were showing connection banner

* changelog

* Fix blogroll block unhelpful error when user not connected (#39638)

* Add connection nudge to blogroll block

* changelog

* Update connection banner to show if current user is not connected

* My Jetpack: Fix recommendations VideoPress product card not showing "Purchase" button. (#39612)

* Add/jetpack blocks add connection nudge where missing (#39647)

* changelog

* Add connection nudges to all payment blocks

* Check for current user connection instead of connected owner

* Fix/payment blocks connection banner showing on simple sites (#39687)

* Fix connection banner for payment blocks on simple sites

* changelog

* Fix condition

* Stats: Fix top post card on the Insight page (#39691)

* add required fields to endpoint

* changelog

* add discussion and post thumbnail

* comment

* Social: Update the check to see if Bluesky is already connected (#39661)

* Add check to update post json api to handle null input type (#39676)

* Update class.wpcom-json-api-update-post-v1-2-endpoint.php to handle null input type

* changelog

* Prevent welcome tour keyboard navigation from hijacking left right keys on the editor (#39683)

* Sync my jetpack's Boost page with Boost's getting started page (#39130)

* Sync my jetpack's Boost page with Boost's getting started page

* add changelog

* Remove unused prop

* Update Boost pricing table to rely on the same data as my jetpack

* Add features list component to reduce code repetition

* Fix type incompatibility

* Remove unused code

* add changelog

* Reduce localized data

* Update premium pricing to rely on my jetpack variables instead of own

* Remove unused type

* Use data sync for 'my jetpack' data instead of directly localizing

* Add test for my jetpack data in Boost

* Fix test signature

* Update prop name

* Simplify tests

* Update php tests to be less strict in terms of feature order

* Add a check for feature count

* AI Client: change logo generator upgrade message (#39671)

* use getRedirectUrl package to get URL links to more info on usage and limits

* update upgrade copy edit for logo generator

* add changelogs

* AI Client: add image styles auto and none (#39689)

* add auto and none as available image styles

* changelog

* Jetpack AI: don't generate first logo without details (#39536)

* remove noisy debug call

* don't call first logo generation if there are no site details to work with

* make use logo button more prominent (secondary)

* add empty logo placeholder

* add empty logo history placeholder

* add changelog

* fix state checks for first load

* add enter key handler on prompt input

* improve empty placeholders

* rolling release: Add timestamp to version numbers (#39701)

Apparently Atomic doesn't just pick the latest release, they also
require that the new version number compares greater than the old one as
measured by `version_compare()`. So we'll have to throw a timestamp in
after all.

* WAF: Avoid using Waf_Rules_Manager from Waf_Runner::initialize() (#38944)

* eslint: Enable more react rules (#39421)

* `react-hooks/exhaustive-deps`: Apply to `useSelect`.
* `react/no-direct-mutation-state`
* `react/no-find-dom-node`
* `react/no-unescaped-entities`

The first of those accounts for the majority of fixes in this PR, we had
a bunch of places either missing a dependency or specifying a dependency
unnecessarily. Of particular note is that constants defined outside of
the `render()` function, like `STORE_ID`, don't need to be dependencies.

Of the rest, `react/no-direct-mutation-state` was only violated in one
place, `react/no-unescaped-entities` in one storybook story, and
`react/no-find-dom-node` was already fixed everywhere.

* jetpack: Render Slideshow block correctly in iframed editor (#39551)

When the block editor uses an iframe, our monolithic `editor.js` script
is only loaded and run at the top level, not inside the iframe. Thus,
any dynamic `import()` also only runs at the top level, and in
particular the loaded CSS does not affect the content inside the iframe.

The real solution to this would be to have the content-related code in
block.json "script" where it gets loaded everywhere (frontend, editor
top-level, and iframe) (unfortunately there's no option that runs only
on frontend+iframe, or only iframe) and run the code doing the
`import()` inside the iframe, so it adds the CSS inside the iframe. But
we can't really do that without a ton of refactoring that's largely
blocked on Gutenberg implementing lazy block loading.

So, in the mean time, let's configure mini-css-extract-plugin to add any
imported CSS into the iframe (if one exists) in addition to the top
level. That won't work for JS (e.g. the Map block, which has its own
hack), but that's ok for now.

* Update wordpress monorepo (#39707)

---------

Co-authored-by: Renovate Bot <[email protected]>

* Goodreads Block: Make sure we check for id attribute in the goodreads block, when rendering (#39713)

* Make sure we check for id attribute in the goodreads block, before attempting to use it for rendering as id of the div.

* changelog

* Social: Added Bluesky to social previews (#39659)

* Update dependencies

* Add Bluesky to social previews

* Add changelogs

* Update social-previews package to fix the Bluesky URL

* Update pnpm-lock.yaml

* Fix dependencies after rebase

* Admin bar: clean up WPCOM_ADMIN_BAR_UNIFICATION feature flag (#39692)

* Admin bar: clean up WPCOM_ADMIN_BAR_UNIFICATION

* changelog

* Added do_action_deprecated and apply_filters_deprecated to next version script (#39693)

* Infinite scroll added checks to validate input (#39618)

* Added isset checks to avoid Warnings

* changelog

* Added new isset for last_post_date

* Deprecate infinite_scroll_posts_where  hook

* Boost: Fix page cache e2e tests (#39695)

* Fix not always logged in for page cache e2e test

This allows the page cache e2e test to be run independently every time
without issues.

* Use WP_Filesystem when trying to update wp-config.php for pace cache

* add changelog

* Use WP_Filesystem_Direct to update wp-config.php

* Set file permissions to avoid fatal errors

* Update param value

* Rename method

* Critical CSS Gen: Add missing build folder for production (#39723)

* Add missing build folder to production build

* add changelog

* Boost: Properly update minimum required WP version to 6.5 (#39719)

* Update minimum required version to 6.5

* add changelog

* Update changelog

* Photon: avoid deprecation warnings when src is null (#39685)

* Photon: avoid deprecation warnings when src is null

In some scenarios, one can run into the following deprecation notices:

Deprecated: preg_match(): Passing null to parameter #2 ($subject) of type string is deprecated in /wordpress/plugins/jetpack/13.9-a.7/jetpack_vendor/automattic/jetpack-image-cdn/src/class-image-cdn.php on line 682

This should avoid those notices.

* Check for the validity of the src earlier

See https://github.com/Automattic/jetpack/pull/39685#pullrequestreview-2357095359

---------

Co-authored-by: Brad Jorsch <[email protected]>

* Jetpack Sync 3.14. (#39724)

* VideoPress: Add missing check for empty video_info on get_media_item_v1_1 (#39706)

* Add missing check for empty video_info

* changelog

* Use ! empty

* Backport Critical css gen 1.0.1 (#39726)

* Newsletter: featured image settings UI defaults (#39700)

* Post-migration Experience: Add the plugin review task (#39711)

* Add the Review Plugins task

* changelog

* Add the calypso path for the task

---------

Co-authored-by: Valter Lorran <[email protected]>

* Backport boost 3.5.2-beta Changes (#39728)

* Added null check post status obj in sal site class (#39727)

* Add null check for post_status_obj to avoid PHP Warnings

* changelog

* Ensure we only assign get_post_status_object to the parent status in case the parent exists

* eslint: Enable `@wordpress/no-base-control-with-label-without-id` rule (#39708)

When `<BaseControl>` is passed both a `label` and `id`, it makes an HTML
`<label>` so clicking the label focuses the contained element with the
corresponding `id`. Leaving off the `id` breaks that, so this rule flags
the situation for fixing.

It turns out, though, that everything it flagged in the monorepo was a
false positive.

A few cases we had something like
`<BaseControl label><TextControl /></BaseControl>`. There's no reason
for that when we can do `<TextControl label />` instead and get the
expected click-label-to-focus behavior.

The rest of the cases we were using `<BaseControl label>` to get a label
for something more complex, where there's really no `id` that makes
sense. In this case the documented thing to do is apparently
`<BaseControl><BaseControl.VisualLabel>label</BaseControl.VisualLabel></BaseControl>`
which does exactly the same thing that `<BaseControl label>` with no
`id` does internally.

* eslint: Enable `react/jsx-key` rule (#39709)

This rule requires a `key` prop be specified on elements that it thinks
probably need one, namely elements inside arrays or returned from
iterators for `.map()` and the like.

In practice most of the cases fixed here are probably pointless, since
the arrays are never going to be sorted or modified at runtime. But it's
easier to add a key than to write a comment justifing ignoring it in
each case.

* Use DEWP's new auto-wp-polyfill support (#39629)

`@wordpress/dependency-extraction-webpack-plugin` has added the ability
to detect a magic `/* wp:polyfill */` comment and only add `wp-polyfill`
as a dependency if that is found. Since `wp-polyfill` is just a custom
build of `core-js`, the intention is that
`babel-plugin-polyfill-corejs3` (maybe via `@babel/preset-env`) would be
used and then a custom Babel plugin would replace the `core-js` imports
with the magic comment.

This updates our Babel config to do just that, and removes the blanket
addition of `wp-polyfill` via `injectPolyfill` or otherwise.

* Update dependency express to v4.21.1 (#39733)


---------

Co-authored-by: Renovate Bot <[email protected]>

* Jetpack-mu-wpcom plugin banner - update copies (#39725)

* update banner copies

* add changelog entry

* update changelog with correct page name

* enable fallback translations

* ensure jetpack-mu-wpcom domain for translation check

* eslint: Remove `jsx-a11y/label-has-associated-control` override (#39736)

`@wordpress/eslint-plugin` sets `jsx-a11y/label-has-associated-control`
to "htmlFor", while we had it overridden to "either". Turns out there
was only place that wasn't already doing "htmlFor", so let's fix that
one place and go for it.

This also removes `jsx-a11y/label-has-for` which is deprecated in favor
of `jsx-a11y/label-has-associated-control`. The former config was
equivalent to "either".

* WAF: Handle cases where outdated Waf_Rules_Manager has been autoloaded in standalone mode (#39652)

* Jetpack Sync: Move 'jetpack_plugins_updated' action to shutdown (#39717)

* Jetpack Sync: Move 'jetpack_plugins_updated' action to shutdown

* Site Management Widget: Migrate to react (#39642)

* Site Management Widget: Migrate to react

* changelog

* Fix phan

* Fix lint

* Revert "Site Management Widget: Migrate to react (#39642)" (#39741)

This reverts commit 00a566376634750f5448d350009330071b15c55d.

* Site Management Widget: Migrate to react (2nd try) (#39742)

* Site Management Widget: Migrate to react

* changelog

* Fix phan

* Fix lint

* Restore class-wpcom-site-management-widget.php

* Update/check post exists under context in widget visibility module (#39746)

* Added check to ensure post exists before checking post_author

* Jetpack iCalendarReader: Fix Undefined array key Warnings (#39740)

* Jetpack iCalendarReader: Fix Undefined array key Warnings

* Jetpack AI: fix first logo notice (#39705)

* set new value for unlimited constant, accept both on type definitions

* abort first logo generation if user is over fair usage limit, show notice instead of error

* add changelogs

* fix store test

---------

Co-authored-by: Douglas <[email protected]>

* AI Client: add style guessing and prompt processing (#39712)

* add type definitions as required by linter

* add guessStyle on use-logo-generator hook

* use guessStyle on logo generator prompt

* changelog

* Site Management Widget: Remove unused files (#39743)

* Site Management Widget: Remove unused files

* changelog

* AI Assistant: Make Write Brief no longer flag single quotes as spelling errors (#39735)

* AI Assistant: Make Breve no longer flag single quotes as spelling errors

* changelog

---------

Co-authored-by: Mike Watson <[email protected]>

* Jetpack: optimize the 'admin_init' hook callback for Sharing module (#39737)

Jetpack sharing module: do not add the form processing callback to `admin_init` hook unless we actually need it.

* Add/editor blocks add tracks for connection banner (#39732)

* Add tracks for editor connection banner

* changelog

* Fix connection banner Jetpack AI Search

* Related Posts: check for any single post without regard for post type. (#39730)

* Social Notes: add support for the ActivityPub reply-to block when the plugin is present (#39738)

* Components: Migrate JetpackProtectLogo component from Jetpack Protect (#39703)

* Components: Migrate MarkedLines component from Jetpack Protect (#39674)

* Contact Form: improve security of the form endpoint (#39759)

* Contact Form: improve security of the form endpoint

Ensure that submitted forms can only be accessed by logged in users with the necessary capabilities.

Reference: p9dueE-8ng-p2

Co-authored-by:	Chris Jean <[email protected]>

* changelog

---------

Co-authored-by: Chris Jean <[email protected]>

* Jetpack Sync: Ensure Full Sync is only triggered on backend admin POST requests (#39747)

* Jetpack Sync: Ensure Full Sync is only triggered on backend admin POST requests

* Backport jetpack 14.0-a.3 Changes (#39760)

* Changelog and readme.txt edits.

* Add changelog entry for Jetpack 13.9.1

* Update Autoloader docs to include more limitations. (#39752)

* Added more docs about Autoloader limitations.

* Changelog.

* Added caveats and rephrased.

* VideoPress: Update VideoPress notice URL on Media Library (#39731)

* Update VideoPress notice URL on Media Library

* changelog

* Social Notes: ensure the filter does not impact other CPTs (#39763)

* Post-migration Experience: Add "Connect your domain" task (#39680)

* Add domain connection task to post-migration checklist

* changelog

* Add task to list

* Add path on backend

* Add initialQuery to path if exists

* Linting

* Just testing something

* Check for primary domain mapping not WPCOM

* Undeclared function

* Fix spacing

* Linting fixes

* Fix site id

* Revert changes to is_completed callback

* Components: Migrate DiffViewer from Protect (#39672)

* JITM: Remove JITM from Jetpack Stats dashboard (Preparation to use embedded JITM) (#39714)

* expose functiont to render JITM and jitm env for stats

* changelog

* fix typo

* rever formatting

* pass jitm pass to stats admin

* ver and minify

* ver and minify

* ensure it has an option to return early

* revert unnecessary chagnes

* use cache buster as jitm version

* add comments

* revert changes

* revert changes

* Delete projects/packages/jitm/changelog/update-integration-jitm-in-stats

* Newsletter: Fix class not found error  (#39765)

* Help Center: prevent excessive loading (#39688)

* Sync: avoid conflicts with other plugins using the filter (#39681)

* Sync: avoid conflicts with other plugins using the filter

Fixes #39654

* Provide actual plugin data to filter

See https://github.com/Automattic/jetpack/pull/39681/files#r1793690662

* Update projects/packages/sync/src/modules/class-callables.php

Co-authored-by: Brad Jorsch <[email protected]>

---------

Co-authored-by: Brad Jorsch <[email protected]>

* Map block: Add absolute positioning for container only when Mapkit is used (#39744)

* Jetpack Sync: Update default Post Type Blacklist (#39770)

* Jetpack Sync: Update default Post Type Blacklist

* Boost: Backport 3.5.2 changes (#39771)

* Verbum Comments: fix gravatar width in nested comments for block themes (#39757)

* Only set a max-width to images in the comment content

* changelog

* Handle non-block theme comments

* Fix fallback :not syntax

* Update comment

* Newsletters: allow skipping subscription modals with URL query arg (#39644)

* Newsletters: allow skipping modals with URL query param

* changelog

* More elegant by cleaning up the URL param

* Use replaceState instead of pushState to avoid leaving history

* Post-migration experience: Add domain DNS task (#39764)

* Add domain dns mapping task

* changelog

* Fix linter

* Try relative URL

* Remove calypso path callback

* Components: Migrate ThreatSeverityBadge from Jetpack Protect (#39758)

* Protect: Add a 30 second timeout argument to the threat history request (#39766)

* Protect: Convert useProtectData to TypeScript (#39778)

* Tests: Use Ubuntu 22.04 runner for PHP 7.0 tests (#39779)

* Pass runner from matrix to workflow

* Run PHP 7.0 tests on Ubuntu 22.04

* Map block: Do not render the actual map if in block preview mode (#39768)

* Map block: Use block editor store preview flag to determine whether or not to display the placeholder

* changelog

* Cover the map container with the preview image

* Update CHANGELOG wording

* Remove preview attribute in favor of flag coming from the block editor store

* Default to mapHeight and fall back to 400px

* Add attribute removal changelog entry

* Related Posts: only enable on all singular views in block themes (#39784)

Fixes #39783

This is a follow-up to #39730. Instead of enabling related posts in all singular views for every theme, keep relying on the `jetpack_relatedposts_filter_enabled_for_request` filter to enable theme in classic themes. Block themes will get them for every singular view by default, but classic themes will continue to only get them only for posts.

* Jetpack: Stats: Fix csv trailing newline handling (#39787)

When #39665 switched from incorrectly using `str_getcsv( $csv, "\n" )`
to `explode()`, a minor difference between the two was unnoticed: the
former does not produce an empty element at the end of the result on a
trailing newline, while the latter does.

Add an `rtrim` on the data to ensure there isn't a trailing newline.

* Post migration tasklist: Add/ssl provisioned task (#39776)

* add SSL provisioned task

* changelog

* check for slug ending to enable/disable the task

* add . to domain check

* add a better way to get the url

* remove is_visible_callback, since it defaults to true and add default check for task completion

---------

Co-authored-by: Andrés Blanco <[email protected]>

* Social: Fix OG tag conflicts with Jetpack Beta (#39792)

* Add Jetpack Beta's Jetpack slug to conflicting plugins

* changelog

* Add/newsletter preview menu item (#39782)

* Jetpack 14.0-a.5 (#39793)

* Changelog and readme.txt edits. (#39781)

* Post-migration Experience: Make the "Migrating the site" task complete by default (#39769)

* Make the Migrating the site task complete as default

* changelog

---------

Co-authored-by: Valter Lorran <[email protected]>

* Admin bar: Add reader icon tooltip (#39803)

* My Jetpack: fix the 'Missing site connection' notice (#39809)

My Jetpack will ask to establish user connection even if site connection is missing.
This PR will give the "missing site connection" notice more priority so it would show up on non-connected sites.

* WAF: Handle undefined entrypoint constant (#39812)

* SSO: optimize 'admin_notices' action callback (#39811)

Make SSO admin class only hook into `admin_notices` when necessary.

* Newsletter: Fix "subscription_emails_use_excerpt" api. (#39815)

* Social | Initial State: Migrate URLs on Social admin page (#39797)

* Pass the URLs from backend

* Install dependency

* Update URLs on Social admin page

* Add changelog

* Update pnpm-lock.yaml

* Clean up

* Changelog and readme.txt edits. (#39814)

* Social | Initial State: Migrate URLs in the editor (#39799)

* Install dependency

* Update pnpm-lock.yaml

* Update usePublicizeConfig hook

* Update connections management URL for broken connection

* Update connections management URL for Manage connections button in the editor

* Update connections management URL for unsupported connections in the editor

* Update the URL for user connection

* Clean up

* Add changelog

* Fix unit tests in Jetpack

* Tests: Fix block performance tests (#39790)

* Use CommonJS import of lodash module

* Wording tweak

* Try 2: swap lodash for lodash-es

* Jetpack outdated WP notices: avoid fatals on outdated WP versions (#39745)

* Story Block: be more defensive to avoid error in block previews (#39807)

Fixes #39694

* Protect: Add/apply shared AdminSectionHero component (#39702)

* Fix site specific features passed to front-end for simple sites (#39817)

* Add `Current_Plan::get_simple_site_specific_features()` method

* Pass the features for simple sites to the script data

* Create siteHasFeature utility

* Add changelog

* Boost: Remove unused setup prompt (#39831)

* Social | Fix Bluesky display name when it's not set in user profile (#39840)

* Story block: Prevent 'key is not a prop' warning in ProgressBullet component (#39822)

* Slideshow block: Modifying Slideshow block key indexes to prevent same key notice (#39821)

* Fix Jetpack AI features control types (#39826)

* add changelog

* fix types for featuresControl and add default value for logo-generator feature

* Added `studio-sync` WPCOM plan feature (#39843)

* Added studio-sync plan feature

* changelog

* Admin bar: Add help icon tooltip  (#39845)

* Protect: remove unused usePolling argument from credentials query hook (#39780)

* Subscriptions: add a floating subscribe button (#37722)

Co-authored-by: Przemek Kuliga <[email protected]>

* AI Client: fix default initial state setting (#39846)

* don't map/set initial state when fetch fails

* changelog

* use currentValue instead of current limit to assess for free users

* dont hide placeholder on focus when disabled

* Revert "Jetpack Sync: Add 'woocommerce_analytics_first_activation' in options' whitelist" (#39837)

* Revert "Jetpack Sync: Add 'woocommerce_analytics_first_activation' in options…"

This reverts commit 155c6a3ecddd9d016c19c864384bec12b2d7a3de.

* WPCOM_JSON_API_Upload_Media_v1_1_Endpoint: Fix Fatals from uploads with invalid media type (#39858)

* WPCOM_JSON_API_Upload_Media_v1_1_Endpoint: Fix Fatals from uploads with invalid media type

* Social | Fix reconnection for broken Bluesky connections (#39844)

* Social: Fix Bluesky profile URL (#39849)

* Add the Bluesky profile URL to the connection management

* changelog

* Initial State: Replace `isEnhancedPublishingEnabled` with `siteHasFeature` call (#39835)

* Replace isEnhancedPublishingEnabled with siteHasFeature call

* Use constants instead of strings

* Boost: Don't add a posts page if front page is set but not the posts page (#39862)

* Floating subscribe button: add source for stats (#39860)

* AI Client: make fetch error retry optional (#39848)

* make reload handler optional on fetch error notice

* changelog

* provide empty retry handler

* move condition process to modal initializer

* cleanup new open handler

* add test instructions for next release (#39866)

* Stats: optimize the Admin Bar hook (#39857)

Optimize the Stats Admin Bar hook by narrowing down the callback.

* Social: Fix Bluesky custom domain handle not being accepted (#39872)

* Backport changes for Jetpack 14.0-a.7 (#39855)

* Changelog and readme.txt edits.

* Update changelog entries for clarity

* Update readme.txt

* Boost: Remove URL override from image guide (#39874)

Co-authored-by: Peter Petrov <[email protected]>

* cli: Fix `jetpack changelog add` on a release branch (#39869)

When running `jetpack changelog add` while on a release branch, the
script should not throw an error about attempting to access `.length` on
`undefined`.

* changlogger: When amending, do not preserve default link (#39868)

When doing `changelogger write --amend`, we normally preserve the
prologue, epilogue, and link unless these are overridden on the command
line.

An edge case is when you're amending version 1.2.3-beta to turn it into
1.2.3 release, and the link is the default link like
`https://example.com/diff/1.2.2...1.2.3-beta`. In this situation we
don't want to keep that link, we want to replace it with the new default
`https://example.com/diff/1.2.2...1.2.3`.

Also, when building changelogger, we have to install before trying to run it.

* Stats: Use option value instead of transient for cache buster (#39887)

* Initial State: Migrate `hasPaidFeatures` with feature check on front-end (#39838)

* Initial State: Migrate `hasPaidFeatures` with feature check on front-end

* Replace hasPaidPlan by hasSocialPaidFeatures

* Initial State: Nuke hasPaidPlan flag (#39839)

* Social: Fix Bluesky profile name connection management (#39889)

* Default to external_name if display is not available

* changelog

* Hooks: Ensure translation loading is not triggered too early. (#39841)

* General: indicate compatibility with upcoming WP 6.7 (#39786)

* Blocks: initialize connection assets in Story block (#39870)

Initialize connection assets in the Story block to fix the block assets loading issue.

* Fix special chars display in SMP (#39756)

* Fix special chars display in SMP

The Site Management Panel may break when special chars are included in the blog's name (quotes, ampersands, etc.). This commit fixes that.

* Add ENT_QUOTES

* Changelog

* Use wp_specialchars_decode instead

* phan: Update wpcom stubs (#39795)

Co-authored-by: Phabricator Bot <[email protected]>

* Update to node 22 (#39886)

Calypso has updated to node 22, which means it's time for us to do so as
well.

* Contact Info: Rearranging how the Contact Info block register process is required. (#39892)

* Jetpack: Fix some minor eslint lints (#39753)

Should be no functionality changes, unless some of the `react-hooks/`
things were obscure bugs.

* `curly` × 2: Missing `{}` around `if` bodies.
* `eqeqeq` × 11: Use `===` and `!==` for comparisons.
* `no-case-declarations` × 8: If a `case` has `const` or `let` inside,
  wrap it in a block for scoping.
* `no-extra-boolean-cast` × 1: `if ( !! foo )` → `if ( foo )`.
* `no-redeclare` × 2: A few useless `/* global JSON */`.
* `no-undef` × 3: Remove some unused variables.
* `no-unused-expressions` × 7: All ignored by updating
  `projects/plugins/jetpack/modules/.eslintrc.js`.
* `no-useless-escape` × 4: Remove unnecessary `\`s in regexes.
* `react-hooks/exhaustive-deps` × 3: Added missing deps.
  * One case needed a bit of refactoring.
* `react-hooks/rules-of-hooks` × 5: Used `useSelect` and
  `useResizeObserver` unconditionally, and defined one that needed a
  conditional outside of `render()`.
* `valid-typeof` × 2: Broken `undefined !== typeof window` check,
  changed to just use `window?` in later conditionals.
* `@wordpress/no-global-active-element` × 2: Use `ownerDocument`.

* AI Assistant: Write Brief should not flag words like '2nd' and '100th' as spelling errors. (#39880)

* AI Assistant: Write Brief should not flag words like '2nd' and '100th' as spelling errors.

* changelog

* Typescript expects isNaN to be passed a number

* Update dependency svgicons2svgfont to v14 (#39893)

* Update dependency svgicons2svgfont to v14
* Update svg-to-font for new svgicons2svgfont version

---------

Co-authored-by: Renovate Bot <[email protected]>
Co-authored-by: Brad Jorsch <[email protected]>

* Verbum Comments: Fix iframe resize logic (#39791)

* Add changes to fix Verbum comments resize logic

* changelog

* Add `<9.12.0` to `.engines.pnpm` (#39897)

We're waiting on updating to pnpm 9.12+ due to the regression of
pnpm/pnpm#3935. Update `.engines.pnpm` so Renovate stops trying to use
9.12 and then failing the "Lock files are up to date" check.

* Initial State: Replace `isSocialImageGeneratorAvailable` with feature check (#39836)

* Initial State: Replace isSocialImageGeneratorAvailable with feature check

* Use constants instead of strings

* Changelog and readme.txt edits. (#39903)

* Update Eslint packages (#39898)

Co-authored-by: Renovate Bot <[email protected]>

* Jetpack AI: decouple modal prompt input for reusability (#39864)

* decouple prompt input from prompt component, export it to make it available for other modals

* allow passing down CTA button label as prop

* implement AiModalPromptInput on GP image generation modal

* changelog

* fix wee css issue

* required-review: Avoid requesting reviews from bots (#39895)

Attempting to request a review from a bot account will likely fail, as
bot accounts are not "collaborators".

Fortunately a bot account is probably going to look like
`@something[bot]`, so we can look for that to exclude them without
having to make extra API queries.

* Make suffix shorter

* Remove duplicate 'key´

* Leave old key as this is not a problem and removing it will make it a lot more difficult to fix the problem

---------

Co-authored-by: Brad Jorsch <[email protected]>
Co-authored-by: Ilyas Foo <[email protected]>
Co-authored-by: Dylan Munson <[email protected]>
Co-authored-by: Calypso Bot <[email protected]>
Co-authored-by: Phabricator Bot <[email protected]>
Co-authored-by: Matthew Reishus <[email protected]>
Co-authored-by: Brandon Kraft <[email protected]>
Co-authored-by: Nate Weller <[email protected]>
Co-authored-by: Luiz Kowalski <[email protected]>
Co-authored-by: Sergey Mitroshin <[email protected]>
Co-authored-by: Damien Alleyne <[email protected]>
Co-authored-by: Christian Gastrell <[email protected]>
Co-authored-by: dkmyta <[email protected]>
Co-authored-by: Ian Ramos <[email protected]>
Co-authored-by: Bryan Elliott <[email protected]>
Co-authored-by: Foteini Giannaropoulou <[email protected]>
Co-authored-by: Robert Sreberski <[email protected]>
Co-authored-by: Tony Arcangelini <[email protected]>
Co-authored-by: Aurorum <[email protected]>
Co-authored-by: Igor Zinovyev <[email protected]>
Co-authored-by: Manzoor Wani <[email protected]>
Co-authored-by: Gergely Márk Juhász <[email protected]>
Co-authored-by: Mikael Korpela <[email protected]>
Co-authored-by: Esteban Cairol <[email protected]>
Co-authored-by: mmtr <[email protected]>
Co-authored-by: Sebastián Barbosa <[email protected]>
Co-authored-by: Renovate Bot <[email protected]>
Co-authored-by: Brad Jorsch <[email protected]>
Co-authored-by: valterlorran <[email protected]>
Co-authored-by: Valter Lorran <[email protected]>
Co-authored-by: Grzegorz Chudzinski-Pawlowski <[email protected]>
Co-authored-by: Karen Attfield <[email protected]>
Co-authored-by: Candy Tsai <[email protected]>
Co-authored-by: Yuliyan Slavchev <[email protected]>
Co-authored-by: Nate Weller <[email protected]>
Co-authored-by: Osk <[email protected]>
Co-authored-by: Juanma Rodriguez Escriche <[email protected]>
Co-authored-by: Adnan Haque <[email protected]>
Co-authored-by: matticbot <[email protected]>
Co-authored-by: Jeremy Herve <[email protected]>
Co-authored-by: Tiago Ilieve <[email protected]>
Co-authored-by: Ashar Fuadi <[email protected]>
Co-authored-by: okmttdhr, tada <[email protected]>
Co-authored-by: Peter Petrov <[email protected]>
Co-authored-by: Douglas <[email protected]>
Co-authored-by: Kuba Birecki <[email protected]>
Co-authored-by: Jasper Kang <[email protected]>
Co-authored-by: Xavier Lozano Carreras <[email protected]>
Co-authored-by: Paulo Cruz <[email protected]>
Co-authored-by: Miguel Lezama <[email protected]>
Co-authored-by: Addison Stavlo <[email protected]>
Co-authored-by: arthur791004 <[email protected]>
Co-authored-by: Mike Watson <[email protected]>
Co-authored-by: Mike Watson <[email protected]>
Co-authored-by: Chris Jean <[email protected]>
Co-authored-by: Caroline Moore <[email protected]>
Co-authored-by: Michael Cain <[email protected]>
Co-authored-by: tbradsha <[email protected]>
Co-authored-by: Luis Felipe Zaguini <[email protected]>
Co-authored-by: Andrés Blanco <[email protected]>
Co-authored-by: Andrés Blanco <[email protected]>
Co-authored-by: Miroslav Mitev <[email protected]>
Co-authored-by: Fredrik Rombach Ekelund <[email protected]>
Co-authored-by: Przemek Kuliga <[email protected]>
Co-authored-by: Boro Sitnikovski <[email protected]>
Co-authored-by: Mike Watson <[email protected]>
Co-authored-by: Anthony Grullon <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants