From 807856589726bf311560656f7a88cc414f77ac7a Mon Sep 17 00:00:00 2001 From: Utkarsh Patel Date: Tue, 26 May 2026 13:31:49 +0530 Subject: [PATCH 1/4] chore(release): prepare 4.2.0 Bump plugin version to 4.2.0 across stream.php, Plugin::VERSION, and readme.txt Stable tag. Promote changelog Unreleased section to 4.2.0 and add notable items (Abilities API + MCP, HTTPS dev env, Playwright E2E in CI, Node v24, jQuery v4). --- changelog.md | 16 ++++++++++++++-- classes/class-plugin.php | 2 +- readme.txt | 6 +++++- stream.php | 2 +- 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/changelog.md b/changelog.md index df6d80e40..3ecd6f47f 100644 --- a/changelog.md +++ b/changelog.md @@ -1,10 +1,14 @@ # Stream Changelog -## Unreleased +## 4.2.0 - TBD + +### New Features + +- Expose Stream abilities via the WordPress MCP Adapter when present, enabling AI tools to query Stream records through the Abilities API (XWPENG-13, [#1859](https://github.com/xwp/stream/pull/1859)). ### Bug Fixes -- Fix unbounded growth of `stream` / `stream_meta` tables: the TTL-based auto-purge now runs via Action Scheduler with batched deletion (default 250,000 rows per batch via the existing `wp_stream_batch_size` filter), resolving database bloat on sites where the previous WP-Cron-driven purge silently failed or timed out on large tables (XWPENG-28). +- Fix unbounded growth of `stream` / `stream_meta` tables: the TTL-based auto-purge now runs via Action Scheduler with batched deletion (default 250,000 rows per batch via the existing `wp_stream_batch_size` filter), resolving database bloat on sites where the previous WP-Cron-driven purge silently failed or timed out on large tables (XWPENG-28, [#1882](https://github.com/xwp/stream/pull/1882)). - Fix orphan `stream_meta` rows accumulating across repeated purge cycles: a terminal orphan reaper now runs at the end of every auto-purge chain, healing installs that have residual orphans from historical interrupted purges. ### Enhancements @@ -13,6 +17,14 @@ - Replace the legacy `wp_stream_auto_purge` WP-Cron event with a recurring Action Scheduler action. Run history and failures are now visible under **Tools → Scheduled Actions**. - Auto-purge consults the existing `wp_stream_is_large_records_table` filter (default threshold: >1M rows) so small tables get a single inline DELETE while bloated tables go through the batched chain — same knob as the manual reset path. +### Development + +- Add HTTPS to the local dev environment via mkcert and an Apache SSL vhost; force HTTPS across local dev and tests. +- Add Playwright E2E job to CI; harden specs against activation races and add jQuery-dependent admin UI smoke spec (in [#1873](https://github.com/xwp/stream/pull/1873), [#1874](https://github.com/xwp/stream/pull/1874)). +- Update Node.js to v24 (in [#1867](https://github.com/xwp/stream/pull/1867), [#1883](https://github.com/xwp/stream/pull/1883)) and jQuery to v4 (in [#1834](https://github.com/xwp/stream/pull/1834)). +- Switch dev dependencies from WPackagist to WP Packages (in [#1858](https://github.com/xwp/stream/pull/1858)). +- Numerous dependency updates: `composer/composer`, `phpunit/phpunit`, `@playwright/test`, `@wordpress/scripts`, `@wordpress/e2e-test-utils-playwright`, `axios`, `tar-fs`, `http-proxy-middleware`, `copy-webpack-plugin`, `npm-run-all2`, `eslint-plugin-react-hooks`, `uuid` → native `crypto.randomUUID()`. + ### Notes - The `wp_stream_auto_purge` action continues to fire for backward compatibility, but its semantics have changed: previously it fired on every WP-Cron tick (~every 12 hours) regardless of whether work happened, so some integrators used it as a generic recurring timer. As of this release it fires only when a purge cycle is actually about to run — i.e. after the network-admin scope check, the `keep_records_indefinitely` check, the TTL-validity check, and the overlap guard all pass. Integrations that relied on the hook as a tick-rate timer should switch to `Admin::AUTO_PURGE_ACTION` (the recurring Action Scheduler action, hook name `stream_auto_purge_action`) which retains the "fires on every tick" semantics. diff --git a/classes/class-plugin.php b/classes/class-plugin.php index f8c9e0fe1..44e5c81ce 100755 --- a/classes/class-plugin.php +++ b/classes/class-plugin.php @@ -20,7 +20,7 @@ class Plugin { * * @const string */ - const VERSION = '4.1.2'; + const VERSION = '4.2.0'; /** * WP-CLI command diff --git a/readme.txt b/readme.txt index 3b9be53ef..e22a1eb31 100644 --- a/readme.txt +++ b/readme.txt @@ -3,7 +3,7 @@ Contributors: xwp Tags: wp stream, stream, activity, logs, track Requires at least: 4.6 Tested up to: 6.9 -Stable tag: 4.1.2 +Stable tag: 4.2.0 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html @@ -134,6 +134,10 @@ Use only `$_SERVER['REMOTE_ADDR']` as the client IP address for event logs witho == Changelog == += 4.2.0 - TBD = + +See: [https://github.com/xwp/stream/blob/develop/changelog.md#420---tbd](https://github.com/xwp/stream/blob/develop/changelog.md#420---tbd) + = 4.1.2 - February 19, 2026 = See: [https://github.com/xwp/stream/blob/develop/changelog.md#412---february-19-2026](https://github.com/xwp/stream/blob/develop/changelog.md#412---february-19-2026) diff --git a/stream.php b/stream.php index 790519121..36c7795c5 100644 --- a/stream.php +++ b/stream.php @@ -3,7 +3,7 @@ * Plugin Name: Stream * Plugin URI: https://xwp.co/work/stream/ * Description: Stream tracks logged-in user activity so you can monitor every change made on your WordPress site in beautifully organized detail. All activity is organized by context, action and IP address for easy filtering. Developers can extend Stream with custom connectors to log any kind of action. - * Version: 4.1.2 + * Version: 4.2.0 * Author: XWP * Author URI: https://xwp.co * License: GPLv2+ From f13fc6ae57d4467222a44f718218905c4ec0c2b2 Mon Sep 17 00:00:00 2001 From: Utkarsh Patel Date: Tue, 26 May 2026 13:39:44 +0530 Subject: [PATCH 2/4] chore(release): set 4.2.0 changelog date to May 28, 2026 --- changelog.md | 2 +- readme.txt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/changelog.md b/changelog.md index 3ecd6f47f..fdbe2b74d 100644 --- a/changelog.md +++ b/changelog.md @@ -1,6 +1,6 @@ # Stream Changelog -## 4.2.0 - TBD +## 4.2.0 - May 28, 2026 ### New Features diff --git a/readme.txt b/readme.txt index e22a1eb31..b5f0138ae 100644 --- a/readme.txt +++ b/readme.txt @@ -134,9 +134,9 @@ Use only `$_SERVER['REMOTE_ADDR']` as the client IP address for event logs witho == Changelog == -= 4.2.0 - TBD = += 4.2.0 - May 28, 2026 = -See: [https://github.com/xwp/stream/blob/develop/changelog.md#420---tbd](https://github.com/xwp/stream/blob/develop/changelog.md#420---tbd) +See: [https://github.com/xwp/stream/blob/develop/changelog.md#420---may-28-2026](https://github.com/xwp/stream/blob/develop/changelog.md#420---may-28-2026) = 4.1.2 - February 19, 2026 = From a8fcd0ec1430cb7788fa63865904c13d04be42ca Mon Sep 17 00:00:00 2001 From: Utkarsh Patel Date: Tue, 26 May 2026 18:26:01 +0530 Subject: [PATCH 3/4] docs(changelog): note skipped AS queries on front-end pageloads Adds an entry for #1885 / #1884 to the 4.2.0 changelog under Bug Fixes: front-end pageloads no longer issue Action Scheduler queries from the delete_all_records and clean_orphan_meta settings fields. --- changelog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.md b/changelog.md index fdbe2b74d..db8d85766 100644 --- a/changelog.md +++ b/changelog.md @@ -10,6 +10,7 @@ - Fix unbounded growth of `stream` / `stream_meta` tables: the TTL-based auto-purge now runs via Action Scheduler with batched deletion (default 250,000 rows per batch via the existing `wp_stream_batch_size` filter), resolving database bloat on sites where the previous WP-Cron-driven purge silently failed or timed out on large tables (XWPENG-28, [#1882](https://github.com/xwp/stream/pull/1882)). - Fix orphan `stream_meta` rows accumulating across repeated purge cycles: a terminal orphan reaper now runs at the end of every auto-purge chain, healing installs that have residual orphans from historical interrupted purges. +- Skip Action Scheduler "is running?" probes on front-end pageloads: the `delete_all_records` and `clean_orphan_meta` settings fields no longer issue Action Scheduler queries on every front-end request, eliminating 3-4 unnecessary queries per pageview on every Stream-active site ([#1884](https://github.com/xwp/stream/issues/1884), [#1885](https://github.com/xwp/stream/pull/1885)). ### Enhancements From f60a23074919e446bce8ee0f8dda146109c9ced2 Mon Sep 17 00:00:00 2001 From: Utkarsh Patel Date: Wed, 27 May 2026 11:48:20 +0530 Subject: [PATCH 4/4] chore(release): bump Tested up to 7.0 WordPress 7.0 is the current target release; the plugin has been smoke tested against it as part of the 4.2.0 release validation. Bump the readme.txt 'Tested up to' header so WP.org search and the plugin directory listing reflect the supported range. --- readme.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.txt b/readme.txt index b5f0138ae..75e60a374 100644 --- a/readme.txt +++ b/readme.txt @@ -2,7 +2,7 @@ Contributors: xwp Tags: wp stream, stream, activity, logs, track Requires at least: 4.6 -Tested up to: 6.9 +Tested up to: 7.0 Stable tag: 4.2.0 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html