Skip to content

Release May 18#4741

Merged
chickenn00dle merged 125 commits into
releasefrom
alpha
May 18, 2026
Merged

Release May 18#4741
chickenn00dle merged 125 commits into
releasefrom
alpha

Conversation

@chickenn00dle
Copy link
Copy Markdown
Contributor

A new release.

chickenn00dle and others added 21 commits May 5, 2026 15:28
…4705)

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
# [6.40.0-alpha.1](v6.39.1...v6.40.0-alpha.1) (2026-05-07)

### Bug Fixes

* **access-control:** allow `0` member limit values to be shown ([#4670](#4670)) ([b7ea1e3](b7ea1e3))
* **access-control:** allow access rules with `supports_anonymous` to evaluate anonymous readers ([#4695](#4695)) ([3219d63](3219d63))
* **access-control:** bump content rule suggestion limit to 100 ([#4669](#4669)) ([64629eb](64629eb))
* **access-control:** ignore content rules with empty value ([#4675](#4675)) ([c01e97d](c01e97d))
* add `use` statements for clarity ([b0074c0](b0074c0))
* add 30s timeout to v2 invisible token acquisition to prevent hang ([8fd1a17](8fd1a17))
* add isolated flag to v2 invisible widget to prevent interference ([9cfcc30](9cfcc30))
* address potential race condition on multiple registrations with same email ([4fbb990](4fbb990))
* **advertising:** toggle spacing under category autocomplete ([1c65593](1c65593))
* **block-theme:** ensure Overlay Menu block panel opens in editor after template part switch ([#4642](#4642)) ([e45cfd0](e45cfd0))
* **campaigns:** remove wrapper div around add campaign modal input ([#4705](#4705)) ([e04d4af](e04d4af))
* centralize, normalize definition of `$referer` ([e38a94f](e38a94f))
* condition config output on RAS ([22c87af](22c87af))
* condition reCAPTCHA v3 actions on their `ready()` ([a70d5ff](a70d5ff))
* **content-gate:** pass redirectToLayout explicitly on Save ([#4702](#4702)) ([a95cd4d](a95cd4d))
* ensure idempotency by making sure callers get current reader data for logged-in readers ([be59918](be59918))
* gracefully reject calls if essential config is missing ([dd4c46b](dd4c46b))
* **indesign:** exclude rich media blocks from export output ([#4614](#4614)) ([6e45232](6e45232))
* make endpoint available only when RAS is enabled, per Copilot ([18de923](18de923))
* **memberships:** prevent duplicate teams on stripped-meta renewals ([#4661](#4661)) ([84f6c99](84f6c99))
* merge into existing `reader` now that we are out of POC ([3200cc0](3200cc0))
* move grecaptcha.execute inside try block to prevent Promise leak ([f224df8](f224df8))
* move reCAPTCHA behind rate limiting to protect metered service from floods ([0ec69a2](0ec69a2))
* **recaptcha:** skip script registration on TEC Community Events pages ([#4666](#4666)) ([d9a57c5](d9a57c5))
* reject Promise and provide helpful error if reCAPTCHA not happy ([099a109](099a109))
* send nonce, if available, with registration request ([ab57d81](ab57d81))
* textarea support ([8676e2d](8676e2d))
* use returned status rather than hardcoded value ([ea9af30](ea9af30))
* use server-side email, not submitted email, for logged-in users ([56e699f](56e699f))

### Features

* **access-control:** add Specific posts content rule ([#4674](#4674)) ([6735309](6735309))
* **access-control:** auto-signup on renewal only for already subscribed lists ([#4621](#4621)) ([23934c6](23934c6))
* **access-control:** human-readable group subscription names ([#4667](#4667)) ([a817304](a817304))
* **access-control:** tweaks to Access Control UI components ([#4659](#4659)) ([3c08943](3c08943))
* add block theme support to lite site ([#4628](#4628)) ([71632b9](71632b9))
* add overridable registration key methods to Integration base class ([2b4d04f](2b4d04f))
* add reCAPTCHA v2 invisible support to register() ([60b0e77](60b0e77))
* **block-theme:** add size options to the Overlay Menu ([#4652](#4652)) ([3b11b75](3b11b75))
* **block-theme:** move co-authors RSS feed code to the Newspack Plugin ([#4629](#4629)) ([50a160c](50a160c))
* **co-authors:** support CAP core entity store alongside legacy store ([#4673](#4673)) ([b80c49a](b80c49a))
* **components:** addToolbarBackButton util in newspack-components ([#4619](#4619)) ([ec36aa3](ec36aa3))
* **content-gate:** expose institutional IP allowlist endpoint ([#4685](#4685)) ([c6a054a](c6a054a))
* **data-events:** woo transactional events ([#4687](#4687)) ([544d718](544d718))
* delegate key generation and validation to Integration instances ([6aba746](6aba746))
* initial reader registration API rollup from working branch ([0250b2a](0250b2a))
* **integrations:** add activity logs view ([#4671](#4671)) ([fb98062](fb98062))
* **integrations:** add content gate metadata ([#4605](#4605)) ([dcd2a09](dcd2a09))
* **integrations:** contact cron for push and pull ([#4608](#4608)) ([29e6668](29e6668))
* **integrations:** redesign configure view ([#4668](#4668)) ([472dd06](472dd06))
* **integrations:** redesign dashboard with CardFeature grid ([#4665](#4665)) ([d20aae8](d20aae8))
* localize reCAPTCHA site key and version for both v2 and v3 ([56ba6ea](56ba6ea))
* more options for registration ([4c23648](4c23648))
* **newspack-ui:** refactor newsletter signup form with Newspack UI utilities ([#4491](#4491)) ([1859473](1859473))
* **reader-activation:** configure ESP incoming fields from schema ([#4676](#4676)) ([8bc84cc](8bc84cc))
* **reader-activation:** frontend registration API for integrations ([2d7a1bc](2d7a1bc))
* **settings:** Experimental Tools framework (NPPM-2692) ([#4591](#4591)) ([5a300eb](5a300eb))
* trigger a hook and invoke an integration callback when logged in user registers ([167383a](167383a))
# [6.40.0-alpha.2](v6.40.0-alpha.1...v6.40.0-alpha.2) (2026-05-11)

### Bug Fixes

* add spce above 'save' button in ad settings ([#4710](#4710)) ([01bcd34](01bcd34))
* **subscriptions:** allow migrated subs to resubscribe ([#4706](#4706)) ([05095d4](05095d4))
* feat(group-subs): add invite-link constants

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(group-subs): add get_link_invite helper

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(group-subs): add get_link_invite_url helper

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(group-subs): add generate_link_invite

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(group-subs): add validate_link_invite

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* refactor(group-subs): allow custom redirect target in invite flow

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(group-subs): map link-invite result codes to notices

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(group-subs): process invite-link clicks via template_redirect

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(group-subs): avoid double-encoding redirect on auth bounce

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(group-subs): rest endpoint to generate invite links

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(ui): add copy icon

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(ui): use recognizable copy icon SVG

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(group-subs): render invite-link UI in members modal

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(group-subs): handle copy/create invite-link flows in JS

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(group-subs): self-managed snackbar animation in invite-link UI

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(group-subs): guard already-member, gate on active, use redirect_to

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(group-subs): correctly encode invite-link redirect bounce URL

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(group-subs): set REST status on invite-link WP_Errors

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix(group-subs): show invite-link notices on non-WC pages

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(access-control): ensure notices appear on both accound and non-account pages

* fix: adjust UI for invite links

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* fix: copilot review feedback

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* refactor(group-subs): reuse Newspack UI notices for invite-link snackbars

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs(group-subs): explain rawurlencode on invite-link redirect

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* style(group-subs): use spacer token for invite-link input margin

* refactor: remove expirations from invite links

* refactor: move link result message handling to existing scope

* feat: rebuild invite link UI around single button

* fix(group-subs): address PR review blockers and dead code

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* refactor(group-subs): clean up notices, JS polish, test fixtures

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* test(group-subs): integration tests for process_link_invite_request

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* refactor: dropdown-based UI for invite links

* fix: js improvements

* fix: code review feedback

* chore: bail early if no meta update needed

* test(group-subs): coverage for delete_link_invite endpoint

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(group-subs): address round-3 review blockers and bugs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* test(group-subs): cover remaining process_link_invite_request branches

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(group-subs): isolate invite-link from email-invite state

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* refactor(group-subs): unify invite flows, drop deferred state

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* test(group-subs): sweep tests after invite-flow refactor

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* refactor(group-subs): drop $message param from redirect_with_result

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: default redirect to `edit-account` endpoint to avoid double redirect

* chore: add logging for errors

* test(group-subs): integration coverage for invite request flows

Adds 7 PHPUnit tests filling the gaps flagged in the round-5 review:

- process_invite_request(): invalid-link, Case 1 happy path, Case 1
  email mismatch, Case 2 existing-user bounce, Case 3 new-user
  registration.
- process_link_invite_request(): invalid-subscription-id error path.
- accept_invite(): short-circuit-to-true for an already-member visitor
  who re-clicks a stale/invalid invite key.

All 95 group-subscription tests pass.

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Thomas Guillot <thomas@automattic.com>
# [6.40.0-alpha.3](v6.40.0-alpha.2...v6.40.0-alpha.3) (2026-05-12)

### Features

* **group-subs:** shareable invite links ([#4704](#4704)) ([f5cafdb](f5cafdb))
* feat(group-subs): polish invite-links UX in My Account

* fix(group-subs): align empty-state row height in invite tables

* fix(group-subs): address review feedback on invite-links polish

* fix(group-subs): floor sub-minute expiration to avoid overstating

* fix(group-subs): no-JS panel fallback and i18n number formatting

* test(group-subs): guard expiration-label tests with try/finally

* fix(group-subs): reduced-motion support and performance.now fallback

* fix(ui): add ARIA tab semantics and keyboard nav to segmented-control

* fix(group-subs): address invite-links review feedback

* test(group-subs): cover negative and i18n cases for expiration label

* refactor(group-subs): simplify clipboard failure to a plain snackbar
# [6.40.0-alpha.4](v6.40.0-alpha.3...v6.40.0-alpha.4) (2026-05-14)

### Features

* **group-subs:** polish invite-links UX in My Account ([#4719](#4719)) ([4044541](4044541))
Copilot AI review requested due to automatic review settings May 18, 2026 17:09
@chickenn00dle chickenn00dle requested a review from a team as a code owner May 18, 2026 17:09
@chickenn00dle chickenn00dle added the [Status] Needs Review The issue or pull request needs to be reviewed label May 18, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This “Release May 18” PR bundles a broad set of plugin updates across Reader Activation, Audience Integrations, Content Gates, UI components, blocks, mocks/tests, and dependency cleanup.

Changes:

  • Adds/expands Audience Integrations UI (card-based settings, configure view, logs view) and corresponding REST API endpoints.
  • Enhances Reader Activation UX/APIs (frontend register() with reCAPTCHA v2/v3 support, newsletter signup UI tweaks, TEC Community Events reCAPTCHA compatibility).
  • Extends UI/block capabilities (Overlay Menu panel width/full-screen options, segmented-control a11y, utility classes, editor toolbar back button) and removes php-loremipsum dependency by generating lipsum internally.

Reviewed changes

Copilot reviewed 124 out of 127 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
tests/unit-tests/recaptcha.php Adds unit tests for reCAPTCHA script enqueue + TEC Community Events bail-out.
tests/unit-tests/reader-activation-sync/class-test-grouped-metadata.php Adds unit tests for grouped metadata field output and filters.
tests/unit-tests/plugins/teams-for-memberships.php Adds tests for Teams renewal meta restoration behavior.
tests/unit-tests/plugins/co-authors-plus-rss-feed.php Adds tests for Co-Authors Plus author output in feeds.
tests/unit-tests/integrations/class-test-promoted-fields.php Adds tests for ActiveCampaign pipe-delimited multiselect parsing.
tests/unit-tests/class-test-overlay-menu-panel-block.php Adds tests for overlay menu panel render classes (direction/width/fullscreen/injection).
tests/mocks/wc-mocks.php Extends WC mocks for order/subscription fields and WCS helpers.
tests/mocks/tec-community-events-mocks.php Adds TEC Community Events helper mock for tests.
tests/mocks/teams-for-memberships-skyverge-subscriptions-mock.php Adds SkyVerge Teams Subscriptions integration mock.
tests/mocks/teams-for-memberships-mocks.php Adds mocks for Teams renewal meta restoration tests.
tests/mocks/newsletters-mocks.php Extends newsletters mock to support fixtures, return overrides, and throws.
tests/mocks/co-authors-plus-mocks.php Adds get_coauthors() mock for feed tests.
src/wizards/wizards-tab.tsx Makes title optional and conditionally renders <h1>.
src/wizards/newspack/views/settings/sections.tsx Registers “experimental-tools” settings section when present.
src/wizards/newspack/views/settings/experimental-tools/types.ts Defines types for experimental tools UI.
src/wizards/newspack/views/settings/experimental-tools/style.scss Adds styling for experimental tools configuration + logs UI.
src/wizards/newspack/views/settings/experimental-tools/index.tsx Implements Experimental Tools list + configure routing and API calls.
src/wizards/newspack/views/settings/experimental-tools/enable-modal.tsx Adds confirmation modal for enabling a tool.
src/wizards/audience/views/integrations/style.scss Styles integrations logs DataViews controls.
src/wizards/audience/views/integrations/settings-section.js Reworks integrations settings landing UI to CardFeature grid + setup flow.
src/wizards/audience/views/integrations/settings-field.js Normalizes metadata options shape; uses TextareaControl for textarea fields.
src/wizards/audience/views/integrations/logs-view.js Adds logs table view backed by REST endpoint.
src/wizards/audience/views/integrations/index.js Adds routing for configure and logs views; refactors shared props.
src/wizards/audience/views/integrations/configure-view.scss Adds configure view alignment and accordion border overrides.
src/wizards/audience/views/integrations/configure-view.js Adds configure view layout + header state handling and grouped settings.
src/wizards/audience/views/content-gates/edit/registration.tsx Reorders verification toggle relative to metering UI.
src/wizards/audience/views/content-gates/edit/index.tsx Adds “Edit layout” actions (with create+redirect flow) and header click behavior.
src/wizards/audience/views/content-gates/edit/custom-access.tsx Reorders access rules vs metering block.
src/wizards/audience/views/content-gates/edit/content-rule-control-tokenfield.tsx Increases suggestions/hydration page size; improves warning messages.
src/wizards/audience/views/content-gates/content-gate-settings.tsx Moves layout edit links into action menu groups.
src/wizards/audience/views/campaigns/campaigns/index.js Replaces ref-based focus with deterministic id lookup for modal input.
src/wizards/advertising/style.scss Adds spacing rule between category autocomplete and toggle control.
src/reader-activation/index.js Adds frontend register() API and v2 invisible token acquisition helper.
src/reader-activation-newsletters/style.scss Removes/relies less on legacy styling for newsletter list/see-all/button overrides.
src/reader-activation-newsletters/newsletters-modal.js Updates selector for displaying populated email in modal (strong.email).
src/reader-activation-newsletters/newsletters-form.js Updates “See all” behavior to hide divider/button via hidden class.
src/newspack-ui/UTILITY_CLASSES.md Documents Newspack UI utility classes.
src/newspack-ui/scss/variables/_colors.scss Adds divider gradient CSS variables.
src/newspack-ui/scss/elements/misc/_visibility.scss Adds .hidden and .overflow-hidden utility classes under .newspack-ui.
src/newspack-ui/scss/elements/misc/_position.scss Adds position utility classes under .newspack-ui.
src/newspack-ui/scss/elements/misc/_index.scss Registers new misc utility partials.
src/newspack-ui/scss/elements/misc/_dividers.scss Adds .newspack-ui__gradient-divider element styling.
src/newspack-ui/scss/elements/forms/_buttons.scss Tweaks icon spacing for additional svg icons.
src/newspack-ui/scss/elements/_notices.scss Raises snackbar z-index.
src/newspack-ui/scss/elements/_layout.scss Adjusts loading overlay selector formatting.
src/newspack-ui/js/segmented-control/index.js Improves tablist ARIA + keyboard navigation.
src/newspack-ui/js/notices.js Avoids AJAX dismissal without noticeId; adds dynamic snackbar createNotice().
src/my-account/v1/_subscriptions.scss Removes responsive width override for action buttons.
src/my-account/v1/_group-subscriptions.scss Reworks group subscription UI styles, adds enter animation + empty-state sizing.
src/content-gate/editor/post-settings.js Mirrors PHP evaluator including specific_posts override and postId-aware matching.
src/content-gate/editor/editor.js Adds editor toolbar back button via shared utils.
src/blocks/overlay-menu/trigger/edit.js Keys preview toggle/subscription by parent clientId instead of inner traversal.
src/blocks/overlay-menu/trigger/block.json Enables block lock support flag.
src/blocks/overlay-menu/style.scss Adds panel width modifiers, fullscreen mode, breakpoint variable usage, max-width cap.
src/blocks/overlay-menu/preview-refs.js Documents and updates Map keying to parent clientId.
src/blocks/overlay-menu/panel/edit.js Adds fullscreen + width controls; improves toggle registration resiliency.
src/blocks/overlay-menu/panel/class-overlay-menu-panel-block.php Adds server-side allowlisting for width/fullscreen classes.
src/blocks/overlay-menu/panel/block.json Adds enums for direction/width, fullscreen attr, and lock support.
src/blocks/overlay-menu/edit.js Subscribes/toggles preview using parent clientId.
src/admin/style.scss Updates wizard header spacing and audience integrations section styling.
packages/components/src/utils/style.scss Styles editor toolbar wrapper for the back button.
packages/components/src/utils/index.js Exports addToolbarBackButton utility.
packages/components/src/utils/editor-toolbar-back-button.tsx Implements editor toolbar back button injector.
packages/components/src/card/style-core.scss Adjusts core card header layout and action styling.
packages/components/src/card/core-card.js Supports grouped actions and adds headerAction button.
packages/components/src/card-settings-group/index.tsx Adds header action support + separate header click vs toggle behavior.
packages/components/src/card-feature/style.scss Makes CardFeature fill height and pushes actions to bottom of card.
packages/components/src/accordion/index.js Improves accessibility by using details open + onToggle and adds defaultOpen.
newspack.php Bumps plugin version to 6.40.0-alpha.4.
includes/wizards/newspack/class-newspack-settings.php Adds “Experimental tools” tab data when tools exist.
includes/wizards/audience/class-audience-integrations.php Adds REST endpoint to fetch integration logs.
includes/wizards/audience/class-audience-content-gates.php Adds REST endpoint for cross-post-type post search for gating UI.
includes/starter_content/class-starter-content-generated.php Replaces external lipsum generator with internal random words/paragraphs.
includes/reader-activation/sync/contact-metadata/class-content-gate.php Adds content-access metadata fields based on custom-access gate evaluations.
includes/reader-activation/sync/class-metadata.php Adds grouped default fields API + filter.
includes/reader-activation/sync/class-contact-sync.php Adds sync payload logging and pending-retry helper methods.
includes/reader-activation/integrations/class-esp.php Updates ESP integration naming/setup readiness + incoming field schema mapping.
includes/reader-activation/class-reader-activation.php Adds registration script data, new newsletter signup markup, and divider/see-all UI.
includes/reader-activation/class-promoted-fields.php Parses ActiveCampaign pipe-delimited list values.
includes/reader-activation/class-integrations.php Adds scheduled action counting + setup metadata and existing-user registration hook.
includes/plugins/woocommerce/my-account/class-my-account-ui-v1.php Adds invite-link copy strings and REST config to localized script data.
includes/plugins/woocommerce-subscriptions/group-subscription/class-group-subscription-api.php Adds REST endpoints to create/delete invite links.
includes/plugins/co-authors-plus/class-co-authors-plus-rss-feed.php Adds feed author filter to output all co-authors.
includes/plugins/class-teams-for-memberships.php Adds filter to restore stripped team meta on renewal orders.
includes/optional-modules/indesign-export/class-indesign-converter.php Adds excluded block allowlist + recursive stripping and filter for InDesign export.
includes/lite-site/class-lite-site.php Uses global palette for primary color in block themes.
includes/data-events/README.md Documents deprecations and adds v2 Woo order/subscription events.
includes/data-events/listeners.php Dispatches new Woo order/subscription events per line item.
includes/data-events/class-utils.php Adds payload builders for new Woo order/subscription events.
includes/content-gate/class-user-gate-access.php Makes evaluate_gate_for_user public.
includes/content-gate/class-institution.php Uses cookie helper for cache-safety check and expands inline explanation.
includes/content-gate/class-content-rules.php Adds specific_posts rule and filters empty-value rules from gate meta.
includes/content-gate/class-content-restriction-control.php Implements specific_posts override and fixes per-user cache keying.
includes/content-gate/class-content-gate.php Redirects both gate CPT and layout CPT; adjusts redirect target based on memberships.
includes/content-gate/class-access-rules.php Documents supports_anonymous and adds anonymous rule evaluator helper.
includes/configuration_managers/class-newspack-newsletters-configuration-manager.php Adds centralized newsletters settings URL getter.
includes/class-recaptcha.php Skips Newspack reCAPTCHA enqueue on TEC community submission pages.
includes/class-newspack.php Includes reader registration + experimental tools + CAP RSS feed integration.
includes/class-newspack-ui.php Updates demo content to match newsletters signup form markup.
composer.lock Updates lockfile after dependency change.
composer.json Removes joshtronic/php-loremipsum dependency.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread includes/reader-activation/class-reader-activation.php
Comment thread includes/reader-activation/sync/class-contact-sync.php
Comment on lines +454 to +483
public static function get_pending_retry_user_ids() {
if ( ! function_exists( 'as_get_scheduled_actions' ) ) {
return [];
}
$actions = \as_get_scheduled_actions(
[
'hook' => self::RETRY_HOOK,
'status' => \ActionScheduler_Store::STATUS_PENDING,
'per_page' => -1,
]
);
$user_ids = [];
foreach ( $actions as $action ) {
$args = $action->get_args();
if ( ! empty( $args[0]['user_id'] ) ) {
$user_ids[ (int) $args[0]['user_id'] ] = true;
}
}
return $user_ids;
}

/**
* Check if a user has any pending sync retries in ActionScheduler.
*
* @param int $user_id WordPress user ID.
* @return bool True if there are pending retries.
*/
public static function has_pending_retries( $user_id ) {
return isset( self::get_pending_retry_user_ids()[ (int) $user_id ] );
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@miguelpeixe looks like this feedback relates to #4608—feel free to resolve the thread or address in a follow-up PR if needed.

Copy link
Copy Markdown
Contributor

@dkoo dkoo left a comment

Choose a reason for hiding this comment

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

Approving with acknowledgement of Copilot's review feedback. Pinged each PR's owner in the respective threads in case we want to tackle those in follow-up hotfixes.

@chickenn00dle chickenn00dle merged commit f484d0b into release May 18, 2026
2 checks passed
@github-actions
Copy link
Copy Markdown

🎉 This PR is included in version 6.40.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

[Status] Needs Review The issue or pull request needs to be reviewed

Projects

None yet

Development

Successfully merging this pull request may close these issues.