diff --git a/changelog.md b/changelog.md index df6d80e40..db8d85766 100644 --- a/changelog.md +++ b/changelog.md @@ -1,11 +1,16 @@ # Stream Changelog -## Unreleased +## 4.2.0 - May 28, 2026 + +### 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. +- 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 @@ -13,6 +18,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..75e60a374 100644 --- a/readme.txt +++ b/readme.txt @@ -2,8 +2,8 @@ Contributors: xwp Tags: wp stream, stream, activity, logs, track Requires at least: 4.6 -Tested up to: 6.9 -Stable tag: 4.1.2 +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 @@ -134,6 +134,10 @@ Use only `$_SERVER['REMOTE_ADDR']` as the client IP address for event logs witho == Changelog == += 4.2.0 - May 28, 2026 = + +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 = 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+