Connectors: Add is_active callback support to plugin registration#77897
Conversation
Backports the WP Core changes from WordPress/wordpress-develop#11565 so that AI provider connectors (and Akismet) report the correct plugin status. Without an explicit `is_active` callback the registry's new `__return_true` default made every pre-registered connector appear active even when the underlying plugin was not installed, so the Connectors screen showed a "Set up" button instead of "Install" whenever Gutenberg was active. - Mirror the registry's `__return_true` default and the simplified is_installed/is_activated derivation in the script module data. - Wire AI providers to `$ai_registry->hasProvider( $id )` so their status reflects whether the provider plugin is actually available. - Set Akismet's `is_active` to `is_plugin_active( 'akismet/akismet.php' )` since Gutenberg pre-registers it (Core does not), and the new default would otherwise mark it as always installed.
The previous client-side workaround hid Akismet entirely whenever the plugin was not installed, because the server could not report Akismet's install status reliably. With the new `is_active` callback wired up on the server side, `isInstalled` is now accurate, so Akismet can be rendered like any other default connector and offer an Install button when the plugin is missing.
Re-adds the test that was removed when Akismet was hidden client-side in #76962. Now that the server reports Akismet's install status correctly and the JS hide logic is gone, the screen should render the Akismet card with an Install button when the plugin is not installed — make sure that's covered.
|
Size Change: 0 B Total Size: 7.95 MB ℹ️ View Unchanged
|
|
The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message. To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook. |
peterwilsoncc
left a comment
There was a problem hiding this comment.
I've added a few notes inline.
Two of them because I wasn't thinking a couple of weeks ago. Sorry.
|
Flaky tests detected in adc2600. 🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/25479552346
|
All pre-registered connectors now supply their own `is_active` callback, so the `__return_true` default is no longer needed. Removing it aligns the registry with the upstream WP Core PR and avoids silently masking connectors that forget to declare an `is_active` callback. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Now that the registry no longer injects a default `__return_true` for `is_active`, a connector registered with a `plugin.file` but without an `is_active` callback would trigger an undefined-index warning. Treat that case as active on the assumption the plugin only registers the connector when it is loaded. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Switch the Akismet `is_active` callback from `is_plugin_active()` to a `defined( 'AKISMET_VERSION' )` check so it does not have to load `wp-admin/includes/plugin.php`. This keeps the callback safe to invoke in non-admin requests where pulling in the admin plugin helpers would be unnecessary overhead. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
This PR removes the setting of the default value for |
The default `__return_true` fallback was dropped from the registry, but the docblock still advertised it. Remove the stale line so callers do not assume a default exists.
jorgefilipecosta
left a comment
There was a problem hiding this comment.
The changes look good just left a comment regarding the Akismet hiding when not installed other that than everything looks as expected.
Replace the AI/non-AI branch in _gutenberg_register_default_connector_settings() with a single plugin.is_active check, matching core's _wp_register_default_connector_settings() (wordpress-develop PR 11564, commit d141ecb7a7). Drop the now-unused $ai_registry local; iterate values only since $connector_id is no longer referenced. Depends on the registry/AI-provider is_active wiring in #77897 (backport of wordpress-develop PR 11565): without that, default AI providers have no plugin.is_active and would be silently skipped here. Add backport-changelog/7.0/11564.md.
|
Thanks for the review!
Regarding this feedback, I have addressed it with 9f687dc. Please let me know if my understanding is correct. |
After the registry now always initializes `plugin` and defaults `is_active` to `__return_true`, mark `plugin` as required and `file` as optional in the @phpstan-type so static analysis matches what `register()` actually returns. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
| * plugin: array{ | ||
| * file?: non-empty-string, | ||
| * is_active: callable(): bool | ||
| * } |
There was a problem hiding this comment.
jorgefilipecosta
left a comment
There was a problem hiding this comment.
The changes look good 👍
| $connector['plugin'] = array(); | ||
|
|
||
| if ( ! empty( $args['plugin'] ) && is_array( $args['plugin'] ) ) { | ||
| if ( ! empty( $args['plugin']['file'] ) ) { |
There was a problem hiding this comment.
It's possible here that $args['plugin']['file'] is not a string. Not likely, but just wanted to point that this is not validated here. If that validation is added here, it should be added as well to the core PR.
This comment was marked as off-topic.
This comment was marked as off-topic.
|
Although the core PR includes various additional fixes for PHPStan, let's merge this PR for now. Otherwise, the scope will become too large compared to the original purpose. Let's apply the PHPStan fixes that will be made in the core to Gutenberg in a later follow-up. |
…es is installed and active. (#77273) * Connectors: Gate non-AI default setting auto-registration * Connectors: Unify default setting auto-registration gate Replace the AI/non-AI branch in _gutenberg_register_default_connector_settings() with a single plugin.is_active check, matching core's _wp_register_default_connector_settings() (wordpress-develop PR 11564, commit d141ecb7a7). Drop the now-unused $ai_registry local; iterate values only since $connector_id is no longer referenced. Depends on the registry/AI-provider is_active wiring in #77897 (backport of wordpress-develop PR 11565): without that, default AI providers have no plugin.is_active and would be silently skipped here. Add backport-changelog/7.0/11564.md. --------- Co-authored-by: jorgefilipecosta <jorgefilipecosta@git.wordpress.org> Co-authored-by: t-hamano <wildworks@git.wordpress.org> Co-authored-by: gziolo <gziolo@git.wordpress.org>
…es is installed and active. (#77273) * Connectors: Gate non-AI default setting auto-registration * Connectors: Unify default setting auto-registration gate Replace the AI/non-AI branch in _gutenberg_register_default_connector_settings() with a single plugin.is_active check, matching core's _wp_register_default_connector_settings() (wordpress-develop PR 11564, commit d141ecb7a7). Drop the now-unused $ai_registry local; iterate values only since $connector_id is no longer referenced. Depends on the registry/AI-provider is_active wiring in #77897 (backport of wordpress-develop PR 11565): without that, default AI providers have no plugin.is_active and would be silently skipped here. Add backport-changelog/7.0/11564.md. --------- Co-authored-by: jorgefilipecosta <jorgefilipecosta@git.wordpress.org> Co-authored-by: t-hamano <wildworks@git.wordpress.org> Co-authored-by: gziolo <gziolo@git.wordpress.org>
…7897) * Connectors: Add is_active callback support to plugin registration Backports the WP Core changes from WordPress/wordpress-develop#11565 so that AI provider connectors (and Akismet) report the correct plugin status. Without an explicit `is_active` callback the registry's new `__return_true` default made every pre-registered connector appear active even when the underlying plugin was not installed, so the Connectors screen showed a "Set up" button instead of "Install" whenever Gutenberg was active. - Mirror the registry's `__return_true` default and the simplified is_installed/is_activated derivation in the script module data. - Wire AI providers to `$ai_registry->hasProvider( $id )` so their status reflects whether the provider plugin is actually available. - Set Akismet's `is_active` to `is_plugin_active( 'akismet/akismet.php' )` since Gutenberg pre-registers it (Core does not), and the new default would otherwise mark it as always installed. * Connectors: Show Akismet with Install button when not installed The previous client-side workaround hid Akismet entirely whenever the plugin was not installed, because the server could not report Akismet's install status reliably. With the new `is_active` callback wired up on the server side, `isInstalled` is now accurate, so Akismet can be rendered like any other default connector and offer an Install button when the plugin is missing. * Connectors: Restore E2E coverage for Akismet Install button Re-adds the test that was removed when Akismet was hidden client-side in #76962. Now that the server reports Akismet's install status correctly and the JS hide logic is gone, the screen should render the Akismet card with an Install button when the plugin is not installed — make sure that's covered. * Connectors: Update E2E test to expect Install button label * Connectors: Drop default is_active fallback in registry All pre-registered connectors now supply their own `is_active` callback, so the `__return_true` default is no longer needed. Removing it aligns the registry with the upstream WP Core PR and avoids silently masking connectors that forget to declare an `is_active` callback. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Connectors: Guard against missing is_active in script module data Now that the registry no longer injects a default `__return_true` for `is_active`, a connector registered with a `plugin.file` but without an `is_active` callback would trigger an undefined-index warning. Treat that case as active on the assumption the plugin only registers the connector when it is loaded. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Connectors: Detect Akismet via AKISMET_VERSION constant Switch the Akismet `is_active` callback from `is_plugin_active()` to a `defined( 'AKISMET_VERSION' )` check so it does not have to load `wp-admin/includes/plugin.php`. This keeps the callback safe to invoke in non-admin requests where pulling in the admin plugin helpers would be unnecessary overhead. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * ADd backport changelog * Connectors: Remove outdated is_active default from docblock The default `__return_true` fallback was dropped from the registry, but the docblock still advertised it. Remove the stale line so callers do not assume a default exists. * Connectors: Restore Akismet hide-when-not-installed special case Bring back the JS-side guard that hides Akismet when the plugin is not installed. Akismet is bundled with WordPress and the product decision is to keep it out of the connectors list when missing — other connectors remain visible because plugins like Woo or SEO suites benefit from the auto-install/activate flow for their own third-party integrations. Also drop the E2E test that asserted the inverse (Install button visible for Akismet), since it conflicts with the restored behavior. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Connectors: Document default is_active behavior in docblock When the is_active callback is omitted and a file is provided, the connector is treated as active under the assumption that the plugin must be loaded in order to register itself. Spell that out so callers do not mistake the omission for a no-op. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Connectors: Use validate_plugin() to detect installed plugin file Switch the install probe from a raw file_exists() to validate_plugin(), which adds path traversal protection and confirms the file is a recognised plugin (not just any file at that path). Restores the require_once for wp-admin/includes/plugin.php that this function needs. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Connectors: Default plugin is_active to __return_true Align with WordPress core, which sets is_active to '__return_true' when omitted at registration. This lets the rendering site call is_active unconditionally instead of branching on whether it was provided. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Connectors: Align phpstan type with stored connector shape After the registry now always initializes `plugin` and defaults `is_active` to `__return_true`, mark `plugin` as required and `file` as optional in the @phpstan-type so static analysis matches what `register()` actually returns. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: t-hamano <wildworks@git.wordpress.org> Co-authored-by: peterwilsoncc <peterwilsoncc@git.wordpress.org> Co-authored-by: mukeshpanchal27 <mukesh27@git.wordpress.org> Co-authored-by: jorgefilipecosta <jorgefilipecosta@git.wordpress.org> Co-authored-by: westonruter <westonruter@git.wordpress.org>
|
I just cherry-picked this PR to the wp/7.0 branch to get it included in the next release: 051e6c3 |
|
I am facing a critical error on the Connectors page: Can someone else also verify it? I can open a new issue of needed but not sure right now. |
|
@coderGtm, can you initialize your local WordPress environment? The WordPress core version might be a bit outdated. |
You mean something other than the Docker build? I was working on the connectors page for #77521 when I saw this. |
|
@coderGtm Try |
|
Resolved. Thanks @t-hamano for the prompt help! |
…es is installed and active. (#77273) * Connectors: Gate non-AI default setting auto-registration * Connectors: Unify default setting auto-registration gate Replace the AI/non-AI branch in _gutenberg_register_default_connector_settings() with a single plugin.is_active check, matching core's _wp_register_default_connector_settings() (wordpress-develop PR 11564, commit d141ecb7a7). Drop the now-unused $ai_registry local; iterate values only since $connector_id is no longer referenced. Depends on the registry/AI-provider is_active wiring in WordPress/gutenberg#77897 (backport of wordpress-develop PR 11565): without that, default AI providers have no plugin.is_active and would be silently skipped here. Add backport-changelog/7.0/11564.md. --------- Co-authored-by: jorgefilipecosta <jorgefilipecosta@git.wordpress.org> Co-authored-by: t-hamano <wildworks@git.wordpress.org> Co-authored-by: gziolo <gziolo@git.wordpress.org> Source: WordPress/gutenberg@13267df
…es is installed and active. (#77273) * Connectors: Gate non-AI default setting auto-registration * Connectors: Unify default setting auto-registration gate Replace the AI/non-AI branch in _gutenberg_register_default_connector_settings() with a single plugin.is_active check, matching core's _wp_register_default_connector_settings() (wordpress-develop PR 11564, commit d141ecb7a7). Drop the now-unused $ai_registry local; iterate values only since $connector_id is no longer referenced. Depends on the registry/AI-provider is_active wiring in WordPress/gutenberg#77897 (backport of wordpress-develop PR 11565): without that, default AI providers have no plugin.is_active and would be silently skipped here. Add backport-changelog/7.0/11564.md. --------- Co-authored-by: jorgefilipecosta <jorgefilipecosta@git.wordpress.org> Co-authored-by: t-hamano <wildworks@git.wordpress.org> Co-authored-by: gziolo <gziolo@git.wordpress.org> Source: WordPress/gutenberg@0d27bd5
This updates the pinned hash from the `gutenberg` from `e2970ba736edb99e08fb369d4fb0c378189468ee ` to `c15cef1d6b07f666df28dac0383bafb0edfe0914`. The following changes are included: - RTC: Predefined retry schedules for disconnect dialog, make more lenient (WordPress/gutenberg#76966) - Block Editor: Prevent Enter key from inserting paragraphs in contentOnly sections (WordPress/gutenberg#76989) - Cover block: fix embed video background Error 153 in editor (WordPress/gutenberg#76904) - Restore original template registration tests alongside activation variants (WordPress/gutenberg#77068) - Avoid stale values in core/cover block for RTC compatibility (WordPress/gutenberg#76916) - Bump oras-project/setup-oras (WordPress/gutenberg#77096) (WordPress/gutenberg#77110) - RTC: Change SyncConnectionModal to isSyncConnectionErrorHandled filter and drop IS_GUTENBERG_PLUGIN check (WordPress/gutenberg#76853) - contentOnly template lock: Fix block insertion and removal rules (WordPress/gutenberg#77119) - Global Styles Revisions: Fix footer overflow (WordPress/gutenberg#77103) - Revision: Fix 'Show changes' button reset state (WordPress/gutenberg#77122) - Link picker: Decode HTML entities in link preview title (WordPress/gutenberg#77170) - Connectors: don't clobber third-party custom render in registerDefaultConnectors (WordPress/gutenberg#77116) - Connectors: Replace speak() with notice store for state changes (WordPress/gutenberg#77174) - Core Data: Fix 'useEntityProp' for raw attributes (WordPress/gutenberg#77120) - Fix PatternsActions prop name from postType to type (WordPress/gutenberg#77251) - Fix: restore editor canvas padding in classic themes (WordPress/gutenberg#76864) - RTC: Add filterable flag for meta box RTC compatibility (WordPress/gutenberg#76939) - Fix failing 'WP_HTTP_Polling_Sync_Server' unit test (WordPress/gutenberg#77025) (WordPress/gutenberg#77325) - Edit Post: Fix warning in 'useMetaBoxInitialization' hook (WordPress/gutenberg#77311) - Update the page slug we link to for the AI plugin after the plugin has been installed and activated (WordPress/gutenberg#77336) - Test: Connectors Point to the righ page. (WordPress/gutenberg#77272) - Post Editor: Store metaboxes RTC-compatible flag on location entries (WordPress/gutenberg#77361) - Core Abilities: Export initialization promise as `ready` (WordPress/gutenberg#77254) - Block Editor: Strip per-block custom CSS on save for users without edit_css (WordPress/gutenberg#76650) - Add heading level 1 for the fonts page (WordPress/gutenberg#77482) - Connectors: Treat network-active plugins as active in plugin status check (WordPress/gutenberg#77661) - RTC: Fix disconnect dialog due to uneditable entity (WordPress/gutenberg#77242) - RTC: Fix "Connection Lost" dialog when too many entities are loaded (WordPress/gutenberg#77631) - RTC: Fix "Edit as HTML" content reset during collaboration (WordPress/gutenberg#77043) - RTC: Add optional `shouldSync` function to entity sync config (WordPress/gutenberg#76947) - RTC: Fixed orphaned meta causing dirty editor state (WordPress/gutenberg#77529) - Ensure "Retry" button is stable during retries (WordPress/gutenberg#77234) - Patterns: add confirmation dialog before disconnecting/detaching (WordPress/gutenberg#75713) - Template parts: make 'Detach' context menu item consistent across patterns and template parts (WordPress/gutenberg#77581) - Remove sandbox `allow-same-origin` for core/html blocks (Merge WordPress/gutenberg#77212 to `wp/7.0`) (WordPress/gutenberg#77699) - Added Context for Next/Prev Enlarge Image (WordPress/gutenberg#76967) - Backport: Writing Flow: fix arrow keys skipping paragraph containing link (WordPress/gutenberg#77478) - Revisions: Improve screen reader accessibility for diff markers region and slider (WordPress/gutenberg#77660) - Connectors: Add role="list" wrapper to connector cards for valid ARIA structure (WordPress/gutenberg#77689) - Command Palette: Fix macOs label for sites unable to determine UA via PHP (WordPress/gutenberg#77638) - RTC: Fix inline inserter reset on update sync (WordPress/gutenberg#76980) (WordPress/gutenberg#77706) - Connectors: keep focus on action Button during install (WordPress/gutenberg#77544) - Added Translator Context for Reply (WordPress/gutenberg#77891) - Editor: Improve revisions diff pairing performance (WordPress/gutenberg#77126) - Core Data: Treat single-item responses specially (WordPress/gutenberg#76318) - Site editor: preserve non-global styles in pattern previews (WordPress/gutenberg#77957) - RTC: Fix divergence when two offline users reconnect (WordPress/gutenberg#77980) - RTC: Fix compaction unit test (WordPress/gutenberg#77986) - Connectors: Stop e2e capability restriction from leaking across specs (WordPress/gutenberg#77857) - Connectors: Clarify AI plugin callout copy (WordPress/gutenberg#78043) - Fix: Only auto register settings if the plugin the connector references is installed and active. (WordPress/gutenberg#77273) - Connectors: Add is_active callback support to plugin registration (WordPress/gutenberg#77897) - RTC: Fix race condition on room creation which can cause a split update log (WordPress/gutenberg#77675) - RTC: Fix find_canonical_storage_post_id() always returning null (WordPress/gutenberg#78053) - i18n: add context to scale (WordPress/gutenberg#76917) - Revisions: Simplify fetching (WordPress/gutenberg#77086) - e2e: Add e2e tests for template and template part revisions (WordPress/gutenberg#76923) - Editor: Paginate revisions slider by 100 per page (WordPress/gutenberg#77200) (WordPress/gutenberg#78070) - Revisions: Add diagonal stripe patterns to diff markers to avoid color-only distinction (WordPress/gutenberg#77904) - Revision: Fix failing e2e test (WordPress/gutenberg#78079) - Real-time collaboration: Bundle @wordpress/sync instead of exposing as wp.sync (WordPress/gutenberg#78085) A full list of changes can be found on GitHub: https://github.com/WordPress/gutenberg/compare/e2970ba736edb99e08fb369d4fb0c378189468ee…c15cef1d6b07f666df28dac0383bafb0edfe0914. Log created with: git log --reverse --format="- %s" e2970ba736edb99e08fb369d4fb0c378189468ee..c15cef1d6b07f666df28dac0383bafb0edfe0914 | sed 's|#\([0-9][0-9]*\)|https://github.com/WordPress/gutenberg/pull/\1|g; /github\.com\/WordPress\/gutenberg\/pull/!d' | pbcopy See #64595. git-svn-id: https://develop.svn.wordpress.org/trunk@62333 602fd350-edb4-49c9-b593-d223f7449a82
This updates the pinned hash from the `gutenberg` from `e2970ba736edb99e08fb369d4fb0c378189468ee ` to `c15cef1d6b07f666df28dac0383bafb0edfe0914`. The following changes are included: - RTC: Predefined retry schedules for disconnect dialog, make more lenient (WordPress/gutenberg#76966) - Block Editor: Prevent Enter key from inserting paragraphs in contentOnly sections (WordPress/gutenberg#76989) - Cover block: fix embed video background Error 153 in editor (WordPress/gutenberg#76904) - Restore original template registration tests alongside activation variants (WordPress/gutenberg#77068) - Avoid stale values in core/cover block for RTC compatibility (WordPress/gutenberg#76916) - Bump oras-project/setup-oras (WordPress/gutenberg#77096) (WordPress/gutenberg#77110) - RTC: Change SyncConnectionModal to isSyncConnectionErrorHandled filter and drop IS_GUTENBERG_PLUGIN check (WordPress/gutenberg#76853) - contentOnly template lock: Fix block insertion and removal rules (WordPress/gutenberg#77119) - Global Styles Revisions: Fix footer overflow (WordPress/gutenberg#77103) - Revision: Fix 'Show changes' button reset state (WordPress/gutenberg#77122) - Link picker: Decode HTML entities in link preview title (WordPress/gutenberg#77170) - Connectors: don't clobber third-party custom render in registerDefaultConnectors (WordPress/gutenberg#77116) - Connectors: Replace speak() with notice store for state changes (WordPress/gutenberg#77174) - Core Data: Fix 'useEntityProp' for raw attributes (WordPress/gutenberg#77120) - Fix PatternsActions prop name from postType to type (WordPress/gutenberg#77251) - Fix: restore editor canvas padding in classic themes (WordPress/gutenberg#76864) - RTC: Add filterable flag for meta box RTC compatibility (WordPress/gutenberg#76939) - Fix failing 'WP_HTTP_Polling_Sync_Server' unit test (WordPress/gutenberg#77025) (WordPress/gutenberg#77325) - Edit Post: Fix warning in 'useMetaBoxInitialization' hook (WordPress/gutenberg#77311) - Update the page slug we link to for the AI plugin after the plugin has been installed and activated (WordPress/gutenberg#77336) - Test: Connectors Point to the righ page. (WordPress/gutenberg#77272) - Post Editor: Store metaboxes RTC-compatible flag on location entries (WordPress/gutenberg#77361) - Core Abilities: Export initialization promise as `ready` (WordPress/gutenberg#77254) - Block Editor: Strip per-block custom CSS on save for users without edit_css (WordPress/gutenberg#76650) - Add heading level 1 for the fonts page (WordPress/gutenberg#77482) - Connectors: Treat network-active plugins as active in plugin status check (WordPress/gutenberg#77661) - RTC: Fix disconnect dialog due to uneditable entity (WordPress/gutenberg#77242) - RTC: Fix "Connection Lost" dialog when too many entities are loaded (WordPress/gutenberg#77631) - RTC: Fix "Edit as HTML" content reset during collaboration (WordPress/gutenberg#77043) - RTC: Add optional `shouldSync` function to entity sync config (WordPress/gutenberg#76947) - RTC: Fixed orphaned meta causing dirty editor state (WordPress/gutenberg#77529) - Ensure "Retry" button is stable during retries (WordPress/gutenberg#77234) - Patterns: add confirmation dialog before disconnecting/detaching (WordPress/gutenberg#75713) - Template parts: make 'Detach' context menu item consistent across patterns and template parts (WordPress/gutenberg#77581) - Remove sandbox `allow-same-origin` for core/html blocks (Merge WordPress/gutenberg#77212 to `wp/7.0`) (WordPress/gutenberg#77699) - Added Context for Next/Prev Enlarge Image (WordPress/gutenberg#76967) - Backport: Writing Flow: fix arrow keys skipping paragraph containing link (WordPress/gutenberg#77478) - Revisions: Improve screen reader accessibility for diff markers region and slider (WordPress/gutenberg#77660) - Connectors: Add role="list" wrapper to connector cards for valid ARIA structure (WordPress/gutenberg#77689) - Command Palette: Fix macOs label for sites unable to determine UA via PHP (WordPress/gutenberg#77638) - RTC: Fix inline inserter reset on update sync (WordPress/gutenberg#76980) (WordPress/gutenberg#77706) - Connectors: keep focus on action Button during install (WordPress/gutenberg#77544) - Added Translator Context for Reply (WordPress/gutenberg#77891) - Editor: Improve revisions diff pairing performance (WordPress/gutenberg#77126) - Core Data: Treat single-item responses specially (WordPress/gutenberg#76318) - Site editor: preserve non-global styles in pattern previews (WordPress/gutenberg#77957) - RTC: Fix divergence when two offline users reconnect (WordPress/gutenberg#77980) - RTC: Fix compaction unit test (WordPress/gutenberg#77986) - Connectors: Stop e2e capability restriction from leaking across specs (WordPress/gutenberg#77857) - Connectors: Clarify AI plugin callout copy (WordPress/gutenberg#78043) - Fix: Only auto register settings if the plugin the connector references is installed and active. (WordPress/gutenberg#77273) - Connectors: Add is_active callback support to plugin registration (WordPress/gutenberg#77897) - RTC: Fix race condition on room creation which can cause a split update log (WordPress/gutenberg#77675) - RTC: Fix find_canonical_storage_post_id() always returning null (WordPress/gutenberg#78053) - i18n: add context to scale (WordPress/gutenberg#76917) - Revisions: Simplify fetching (WordPress/gutenberg#77086) - e2e: Add e2e tests for template and template part revisions (WordPress/gutenberg#76923) - Editor: Paginate revisions slider by 100 per page (WordPress/gutenberg#77200) (WordPress/gutenberg#78070) - Revisions: Add diagonal stripe patterns to diff markers to avoid color-only distinction (WordPress/gutenberg#77904) - Revision: Fix failing e2e test (WordPress/gutenberg#78079) - Real-time collaboration: Bundle @wordpress/sync instead of exposing as wp.sync (WordPress/gutenberg#78085) A full list of changes can be found on GitHub: https://github.com/WordPress/gutenberg/compare/e2970ba736edb99e08fb369d4fb0c378189468ee…c15cef1d6b07f666df28dac0383bafb0edfe0914. Log created with: git log --reverse --format="- %s" e2970ba736edb99e08fb369d4fb0c378189468ee..c15cef1d6b07f666df28dac0383bafb0edfe0914 | sed 's|#\([0-9][0-9]*\)|https://github.com/WordPress/gutenberg/pull/\1|g; /github\.com\/WordPress\/gutenberg\/pull/!d' | pbcopy See #64595. Built from https://develop.svn.wordpress.org/trunk@62333 git-svn-id: http://core.svn.wordpress.org/trunk@61614 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This updates the pinned hash from the `gutenberg` from `e2970ba736edb99e08fb369d4fb0c378189468ee ` to `c15cef1d6b07f666df28dac0383bafb0edfe0914`. The following changes are included: - RTC: Predefined retry schedules for disconnect dialog, make more lenient (WordPress/gutenberg#76966) - Block Editor: Prevent Enter key from inserting paragraphs in contentOnly sections (WordPress/gutenberg#76989) - Cover block: fix embed video background Error 153 in editor (WordPress/gutenberg#76904) - Restore original template registration tests alongside activation variants (WordPress/gutenberg#77068) - Avoid stale values in core/cover block for RTC compatibility (WordPress/gutenberg#76916) - Bump oras-project/setup-oras (WordPress/gutenberg#77096) (WordPress/gutenberg#77110) - RTC: Change SyncConnectionModal to isSyncConnectionErrorHandled filter and drop IS_GUTENBERG_PLUGIN check (WordPress/gutenberg#76853) - contentOnly template lock: Fix block insertion and removal rules (WordPress/gutenberg#77119) - Global Styles Revisions: Fix footer overflow (WordPress/gutenberg#77103) - Revision: Fix 'Show changes' button reset state (WordPress/gutenberg#77122) - Link picker: Decode HTML entities in link preview title (WordPress/gutenberg#77170) - Connectors: don't clobber third-party custom render in registerDefaultConnectors (WordPress/gutenberg#77116) - Connectors: Replace speak() with notice store for state changes (WordPress/gutenberg#77174) - Core Data: Fix 'useEntityProp' for raw attributes (WordPress/gutenberg#77120) - Fix PatternsActions prop name from postType to type (WordPress/gutenberg#77251) - Fix: restore editor canvas padding in classic themes (WordPress/gutenberg#76864) - RTC: Add filterable flag for meta box RTC compatibility (WordPress/gutenberg#76939) - Fix failing 'WP_HTTP_Polling_Sync_Server' unit test (WordPress/gutenberg#77025) (WordPress/gutenberg#77325) - Edit Post: Fix warning in 'useMetaBoxInitialization' hook (WordPress/gutenberg#77311) - Update the page slug we link to for the AI plugin after the plugin has been installed and activated (WordPress/gutenberg#77336) - Test: Connectors Point to the righ page. (WordPress/gutenberg#77272) - Post Editor: Store metaboxes RTC-compatible flag on location entries (WordPress/gutenberg#77361) - Core Abilities: Export initialization promise as `ready` (WordPress/gutenberg#77254) - Block Editor: Strip per-block custom CSS on save for users without edit_css (WordPress/gutenberg#76650) - Add heading level 1 for the fonts page (WordPress/gutenberg#77482) - Connectors: Treat network-active plugins as active in plugin status check (WordPress/gutenberg#77661) - RTC: Fix disconnect dialog due to uneditable entity (WordPress/gutenberg#77242) - RTC: Fix "Connection Lost" dialog when too many entities are loaded (WordPress/gutenberg#77631) - RTC: Fix "Edit as HTML" content reset during collaboration (WordPress/gutenberg#77043) - RTC: Add optional `shouldSync` function to entity sync config (WordPress/gutenberg#76947) - RTC: Fixed orphaned meta causing dirty editor state (WordPress/gutenberg#77529) - Ensure "Retry" button is stable during retries (WordPress/gutenberg#77234) - Patterns: add confirmation dialog before disconnecting/detaching (WordPress/gutenberg#75713) - Template parts: make 'Detach' context menu item consistent across patterns and template parts (WordPress/gutenberg#77581) - Remove sandbox `allow-same-origin` for core/html blocks (Merge WordPress/gutenberg#77212 to `wp/7.0`) (WordPress/gutenberg#77699) - Added Context for Next/Prev Enlarge Image (WordPress/gutenberg#76967) - Backport: Writing Flow: fix arrow keys skipping paragraph containing link (WordPress/gutenberg#77478) - Revisions: Improve screen reader accessibility for diff markers region and slider (WordPress/gutenberg#77660) - Connectors: Add role="list" wrapper to connector cards for valid ARIA structure (WordPress/gutenberg#77689) - Command Palette: Fix macOs label for sites unable to determine UA via PHP (WordPress/gutenberg#77638) - RTC: Fix inline inserter reset on update sync (WordPress/gutenberg#76980) (WordPress/gutenberg#77706) - Connectors: keep focus on action Button during install (WordPress/gutenberg#77544) - Added Translator Context for Reply (WordPress/gutenberg#77891) - Editor: Improve revisions diff pairing performance (WordPress/gutenberg#77126) - Core Data: Treat single-item responses specially (WordPress/gutenberg#76318) - Site editor: preserve non-global styles in pattern previews (WordPress/gutenberg#77957) - RTC: Fix divergence when two offline users reconnect (WordPress/gutenberg#77980) - RTC: Fix compaction unit test (WordPress/gutenberg#77986) - Connectors: Stop e2e capability restriction from leaking across specs (WordPress/gutenberg#77857) - Connectors: Clarify AI plugin callout copy (WordPress/gutenberg#78043) - Fix: Only auto register settings if the plugin the connector references is installed and active. (WordPress/gutenberg#77273) - Connectors: Add is_active callback support to plugin registration (WordPress/gutenberg#77897) - RTC: Fix race condition on room creation which can cause a split update log (WordPress/gutenberg#77675) - RTC: Fix find_canonical_storage_post_id() always returning null (WordPress/gutenberg#78053) - i18n: add context to scale (WordPress/gutenberg#76917) - Revisions: Simplify fetching (WordPress/gutenberg#77086) - e2e: Add e2e tests for template and template part revisions (WordPress/gutenberg#76923) - Editor: Paginate revisions slider by 100 per page (WordPress/gutenberg#77200) (WordPress/gutenberg#78070) - Revisions: Add diagonal stripe patterns to diff markers to avoid color-only distinction (WordPress/gutenberg#77904) - Revision: Fix failing e2e test (WordPress/gutenberg#78079) - Real-time collaboration: Bundle @wordpress/sync instead of exposing as wp.sync (WordPress/gutenberg#78085) A full list of changes can be found on GitHub: https://github.com/WordPress/gutenberg/compare/e2970ba736edb99e08fb369d4fb0c378189468ee…c15cef1d6b07f666df28dac0383bafb0edfe0914. Log created with: git log --reverse --format="- %s" e2970ba736edb99e08fb369d4fb0c378189468ee..c15cef1d6b07f666df28dac0383bafb0edfe0914 | sed 's|#\([0-9][0-9]*\)|https://github.com/WordPress/gutenberg/pull/\1|g; /github\.com\/WordPress\/gutenberg\/pull/!d' | pbcopy Reviewed by desrosj. Merges [62333] to the 7.0 branch. Props ellatrix, desrosj. See #64595. git-svn-id: https://develop.svn.wordpress.org/branches/7.0@62335 602fd350-edb4-49c9-b593-d223f7449a82
This updates the pinned hash from the `gutenberg` from `e2970ba736edb99e08fb369d4fb0c378189468ee ` to `c15cef1d6b07f666df28dac0383bafb0edfe0914`. The following changes are included: - RTC: Predefined retry schedules for disconnect dialog, make more lenient (WordPress/gutenberg#76966) - Block Editor: Prevent Enter key from inserting paragraphs in contentOnly sections (WordPress/gutenberg#76989) - Cover block: fix embed video background Error 153 in editor (WordPress/gutenberg#76904) - Restore original template registration tests alongside activation variants (WordPress/gutenberg#77068) - Avoid stale values in core/cover block for RTC compatibility (WordPress/gutenberg#76916) - Bump oras-project/setup-oras (WordPress/gutenberg#77096) (WordPress/gutenberg#77110) - RTC: Change SyncConnectionModal to isSyncConnectionErrorHandled filter and drop IS_GUTENBERG_PLUGIN check (WordPress/gutenberg#76853) - contentOnly template lock: Fix block insertion and removal rules (WordPress/gutenberg#77119) - Global Styles Revisions: Fix footer overflow (WordPress/gutenberg#77103) - Revision: Fix 'Show changes' button reset state (WordPress/gutenberg#77122) - Link picker: Decode HTML entities in link preview title (WordPress/gutenberg#77170) - Connectors: don't clobber third-party custom render in registerDefaultConnectors (WordPress/gutenberg#77116) - Connectors: Replace speak() with notice store for state changes (WordPress/gutenberg#77174) - Core Data: Fix 'useEntityProp' for raw attributes (WordPress/gutenberg#77120) - Fix PatternsActions prop name from postType to type (WordPress/gutenberg#77251) - Fix: restore editor canvas padding in classic themes (WordPress/gutenberg#76864) - RTC: Add filterable flag for meta box RTC compatibility (WordPress/gutenberg#76939) - Fix failing 'WP_HTTP_Polling_Sync_Server' unit test (WordPress/gutenberg#77025) (WordPress/gutenberg#77325) - Edit Post: Fix warning in 'useMetaBoxInitialization' hook (WordPress/gutenberg#77311) - Update the page slug we link to for the AI plugin after the plugin has been installed and activated (WordPress/gutenberg#77336) - Test: Connectors Point to the righ page. (WordPress/gutenberg#77272) - Post Editor: Store metaboxes RTC-compatible flag on location entries (WordPress/gutenberg#77361) - Core Abilities: Export initialization promise as `ready` (WordPress/gutenberg#77254) - Block Editor: Strip per-block custom CSS on save for users without edit_css (WordPress/gutenberg#76650) - Add heading level 1 for the fonts page (WordPress/gutenberg#77482) - Connectors: Treat network-active plugins as active in plugin status check (WordPress/gutenberg#77661) - RTC: Fix disconnect dialog due to uneditable entity (WordPress/gutenberg#77242) - RTC: Fix "Connection Lost" dialog when too many entities are loaded (WordPress/gutenberg#77631) - RTC: Fix "Edit as HTML" content reset during collaboration (WordPress/gutenberg#77043) - RTC: Add optional `shouldSync` function to entity sync config (WordPress/gutenberg#76947) - RTC: Fixed orphaned meta causing dirty editor state (WordPress/gutenberg#77529) - Ensure "Retry" button is stable during retries (WordPress/gutenberg#77234) - Patterns: add confirmation dialog before disconnecting/detaching (WordPress/gutenberg#75713) - Template parts: make 'Detach' context menu item consistent across patterns and template parts (WordPress/gutenberg#77581) - Remove sandbox `allow-same-origin` for core/html blocks (Merge WordPress/gutenberg#77212 to `wp/7.0`) (WordPress/gutenberg#77699) - Added Context for Next/Prev Enlarge Image (WordPress/gutenberg#76967) - Backport: Writing Flow: fix arrow keys skipping paragraph containing link (WordPress/gutenberg#77478) - Revisions: Improve screen reader accessibility for diff markers region and slider (WordPress/gutenberg#77660) - Connectors: Add role="list" wrapper to connector cards for valid ARIA structure (WordPress/gutenberg#77689) - Command Palette: Fix macOs label for sites unable to determine UA via PHP (WordPress/gutenberg#77638) - RTC: Fix inline inserter reset on update sync (WordPress/gutenberg#76980) (WordPress/gutenberg#77706) - Connectors: keep focus on action Button during install (WordPress/gutenberg#77544) - Added Translator Context for Reply (WordPress/gutenberg#77891) - Editor: Improve revisions diff pairing performance (WordPress/gutenberg#77126) - Core Data: Treat single-item responses specially (WordPress/gutenberg#76318) - Site editor: preserve non-global styles in pattern previews (WordPress/gutenberg#77957) - RTC: Fix divergence when two offline users reconnect (WordPress/gutenberg#77980) - RTC: Fix compaction unit test (WordPress/gutenberg#77986) - Connectors: Stop e2e capability restriction from leaking across specs (WordPress/gutenberg#77857) - Connectors: Clarify AI plugin callout copy (WordPress/gutenberg#78043) - Fix: Only auto register settings if the plugin the connector references is installed and active. (WordPress/gutenberg#77273) - Connectors: Add is_active callback support to plugin registration (WordPress/gutenberg#77897) - RTC: Fix race condition on room creation which can cause a split update log (WordPress/gutenberg#77675) - RTC: Fix find_canonical_storage_post_id() always returning null (WordPress/gutenberg#78053) - i18n: add context to scale (WordPress/gutenberg#76917) - Revisions: Simplify fetching (WordPress/gutenberg#77086) - e2e: Add e2e tests for template and template part revisions (WordPress/gutenberg#76923) - Editor: Paginate revisions slider by 100 per page (WordPress/gutenberg#77200) (WordPress/gutenberg#78070) - Revisions: Add diagonal stripe patterns to diff markers to avoid color-only distinction (WordPress/gutenberg#77904) - Revision: Fix failing e2e test (WordPress/gutenberg#78079) - Real-time collaboration: Bundle @wordpress/sync instead of exposing as wp.sync (WordPress/gutenberg#78085) A full list of changes can be found on GitHub: https://github.com/WordPress/gutenberg/compare/e2970ba736edb99e08fb369d4fb0c378189468ee…c15cef1d6b07f666df28dac0383bafb0edfe0914. Log created with: git log --reverse --format="- %s" e2970ba736edb99e08fb369d4fb0c378189468ee..c15cef1d6b07f666df28dac0383bafb0edfe0914 | sed 's|#\([0-9][0-9]*\)|https://github.com/WordPress/gutenberg/pull/\1|g; /github\.com\/WordPress\/gutenberg\/pull/!d' | pbcopy Reviewed by desrosj. Merges [62333] to the 7.0 branch. Props ellatrix, desrosj. See #64595. Built from https://develop.svn.wordpress.org/branches/7.0@62335 git-svn-id: http://core.svn.wordpress.org/branches/7.0@61616 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Related to:
What?
Backports the WP Core changes from WordPress/wordpress-develop#11565 so the Gutenberg plugin reports the correct install/activation status for default connectors on the Connectors screen.
Why?
With the Gutenberg plugin active, every default AI provider and Akismet showed a "Set up" button instead of "Install" even when the connector's underlying plugin was not installed.
The new
WP_Connector_Registryin WP Core defaultsplugin.is_activeto__return_truewhen no callback is provided. Gutenberg pre-registers connectors without anis_activecallback, so all connectors are unintentionally considered active.How?
Backport WordPress/wordpress-develop#11565 to Gutenberg in its entirety.
As a special process for Gutenberg, Akismet is registered as an additional default connector. Unlike the other three default connectors, this connector does not automatically register the
is_activefield, so it was explicitly added.Testing Instructions
Screenshots or screencast
Use of AI Tools
AI assistance: Yes
Tool(s): Claude Code
Model(s): Claude Opus 4.7
Used for: Investigating the root cause of the wrong button label and aligning the Gutenberg-side code with the upstream WP Core PR. Final implementation reviewed and edited by me.