Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
113 commits
Select commit Hold shift + click to select a range
786e930
Comments Connector: Avoid a PHP Warning on pingbacks.
dd32 Feb 13, 2025
413bb30
Respect the comment_author_email user details if set
dd32 Mar 26, 2025
96e7290
chore(deps): update dependency @types/node to ^22.19.12 (#1845)
renovate[bot] Feb 26, 2026
e762a93
chore(deps): update dependency @types/node to ^22.19.13 (#1846)
renovate[bot] Feb 27, 2026
fc0ab69
chore(deps): update node.js to ^22.22.1 (#1848)
renovate[bot] Mar 5, 2026
ce4d3e3
chore(deps): update dependency @types/node to ^22.19.15 (#1849)
renovate[bot] Mar 6, 2026
cef44af
chore(deps): update node.js to ^22.22.2 (#1850)
renovate[bot] Mar 25, 2026
bdea35e
chore(deps): update dependency @playwright/test to ^1.59.0 (#1851)
renovate[bot] Apr 1, 2026
befdb9b
chore(deps): update dependency @playwright/test to ^1.59.1 (#1852)
renovate[bot] Apr 1, 2026
379f3a3
add missing workflow trigger
bartoszgadomski Apr 2, 2026
5d4af8e
Merge pull request #1853 from xwp/fix/deploy-workflow-release-trigger
bartoszgadomski Apr 2, 2026
e4b186c
chore(deps): update dependency @types/node to ^22.19.17 (#1854)
renovate[bot] Apr 3, 2026
5ee75eb
Scaffold Stream Abilities API loader
PatelUtkarsh May 4, 2026
f3fa8ea
Add read-only Stream abilities
PatelUtkarsh May 4, 2026
632bfda
Add Stream write abilities
PatelUtkarsh May 4, 2026
d13db68
Add destructive Stream abilities
PatelUtkarsh May 4, 2026
4ad8722
Add Abilities loader and base class tests
PatelUtkarsh May 4, 2026
938a6ae
Fix lint errors in abilities tests and purge ability
PatelUtkarsh May 4, 2026
1da702d
Register stream ability category and fix get-record lookup
PatelUtkarsh May 4, 2026
561073f
Add ability instructions, REST integration tests, fix HTTP routing
PatelUtkarsh May 4, 2026
aeb4ff5
Default $input to null in Ability::execute() signatures
PatelUtkarsh May 4, 2026
8a270ec
Harden Abilities API against critical CR findings
PatelUtkarsh May 4, 2026
16ffa0f
Extract Trait_View_Stream_Permission for read abilities
PatelUtkarsh May 4, 2026
009f5b5
Tighten get-records schema: orderby enum, __in maxItems
PatelUtkarsh May 4, 2026
929f4e7
create-alert: validate alert_type, set real post_title, split connect…
PatelUtkarsh May 4, 2026
2709f9b
Fix Abilities is_enabled() to honor network option on network-activat…
PatelUtkarsh May 4, 2026
1c81298
Fix PHPCS errors in CR-fix tests
PatelUtkarsh May 4, 2026
6e4153f
Correct misleading comment on IP validation in create-exclusion-rule
PatelUtkarsh May 4, 2026
2d0fb73
chore(deps): update dependency uuid to ^11.1.1 (#1860)
renovate[bot] May 5, 2026
816ffc5
Fix PHPCS: add @param tags to execute/permission_callback, whitelist …
PatelUtkarsh May 6, 2026
b770d5c
Address Copilot review: multisite purge scope, alert_meta shape, orde…
PatelUtkarsh May 6, 2026
e6f625d
Address Copilot follow-up: REST scoping on network-activated multisit…
PatelUtkarsh May 6, 2026
f21ea46
Address Copilot follow-up: combine stream + meta deletion into one st…
PatelUtkarsh May 7, 2026
a0e4c42
Address Copilot follow-up: refresh settings via get_options() and tig…
PatelUtkarsh May 7, 2026
5117ef1
Fix alert_meta JSON shape for empty meta in stream/get-alerts
PatelUtkarsh May 7, 2026
ac3c1c1
Add docblocks to REST integration test methods to satisfy PHPCS
PatelUtkarsh May 7, 2026
4b2616e
Address Copilot follow-up: bool checkboxes, purge error surfacing, id…
PatelUtkarsh May 7, 2026
6c859ad
chore(deps): update dependency @types/node to ^22.19.18 (#1862)
renovate[bot] May 8, 2026
6a6866c
chore(deps): update dependency @playwright/test to ^1.60.0 (#1863)
renovate[bot] May 12, 2026
8ef2b3d
chore(deps): update dependency @types/node to ^22.19.19 (#1864)
renovate[bot] May 12, 2026
62aad85
Bump tar-fs from 3.0.6 to 3.0.9 (#1754)
dependabot[bot] May 12, 2026
e8d6ba3
Bump http-proxy-middleware from 2.0.6 to 2.0.9 (#1729)
dependabot[bot] May 12, 2026
25c14f1
Bump axios from 1.7.9 to 1.8.4 (#1723)
dependabot[bot] May 12, 2026
a2ab87e
chore(deps): update dependency npm-run-all2 to v8 (#1735)
renovate[bot] May 12, 2026
477d9f8
chore(deps): update dependency copy-webpack-plugin to v14 (#1847)
renovate[bot] May 12, 2026
8d4ce21
chore: replace uuid dependency with native crypto.randomUUID() (#1866)
PatelUtkarsh May 12, 2026
7eab754
chore(deps): update dependency eslint-plugin-react-hooks to v7 (#1802)
renovate[bot] May 12, 2026
733f929
chore(deps): update dependency @wordpress/e2e-test-utils-playwright t…
renovate[bot] May 12, 2026
bb2c290
chore(deps): update Node.js to v24 (#1867)
PatelUtkarsh May 12, 2026
7e8a23e
chore(deps): update wordpress monorepo (major) (#1868)
PatelUtkarsh May 13, 2026
f0c6398
fix(e2e): repair new-post spec and add Playwright E2E job to CI (#1873)
PatelUtkarsh May 13, 2026
0f60e06
chore(deps): update dependency jquery to v4 (#1834)
renovate[bot] May 13, 2026
3d28981
test(e2e): add admin UI smoke spec for jQuery-dependent widgets (#1874)
PatelUtkarsh May 13, 2026
43b69ce
chore(deps): bump composer/installers to v2 and mercator to dev-maste…
PatelUtkarsh May 13, 2026
8e4637a
Address review feedback: route abilities through existing classes
PatelUtkarsh May 13, 2026
aa92715
Merge branch 'develop' into feature/XWPENG-13-abilities-api
PatelUtkarsh May 13, 2026
807224e
chore(deps): update wordpress monorepo (#1880)
renovate[bot] May 14, 2026
71d6443
Address second-round review feedback: multisite scoping and option ro…
PatelUtkarsh May 15, 2026
0f8e5a0
Expose admin-only connectors to abilities
PatelUtkarsh May 15, 2026
9f5fc08
Route ability reads through the network option on network-activated m…
PatelUtkarsh May 15, 2026
d1fc2e0
Address review-body nits: defensive output coercion and test cleanup
PatelUtkarsh May 15, 2026
a65b9cf
Centralize Trait_View_Stream_Permission loading
PatelUtkarsh May 15, 2026
a5731ed
feat(purge): add Action Scheduler constants for auto-purge migration
PatelUtkarsh May 19, 2026
f53d64e
feat(purge): wire Admin to AS-based auto-purge callbacks
PatelUtkarsh May 19, 2026
42a92ed
feat(purge): schedule auto-purge via Action Scheduler
PatelUtkarsh May 19, 2026
1acd832
feat(purge): replace inline DELETE with AS chain enqueue
PatelUtkarsh May 19, 2026
e08d680
feat(purge): add batched auto_purge_batch worker
PatelUtkarsh May 19, 2026
dafcbdd
feat(purge): add terminal orphan reaper to auto-purge chain
PatelUtkarsh May 19, 2026
a5641a6
feat(purge): add manual 'Clean Orphaned Meta' link on Settings \u2192…
PatelUtkarsh May 19, 2026
86a31bf
test(e2e): cover manual orphan-meta cleanup link
PatelUtkarsh May 19, 2026
afa5ec5
fix(purge): ensure forward progress on tables with concurrent writes
PatelUtkarsh May 19, 2026
31e3366
style: address PHPCS findings in auto-purge implementation
PatelUtkarsh May 19, 2026
185fab8
docs(changelog): note XWPENG-28 auto-purge migration
PatelUtkarsh May 19, 2026
ea7911b
fix(purge): harden missing-option fallback against filtered defaults
PatelUtkarsh May 19, 2026
0c18b4b
feat(purge): consult wp_stream_is_large_records_table for small-table…
PatelUtkarsh May 19, 2026
735a4b4
feat(purge): expose Admin::is_running_auto_purge() state probe
PatelUtkarsh May 19, 2026
c6546ec
feat(purge): hide manual Clean Orphaned Meta link while chain is running
PatelUtkarsh May 19, 2026
9d6e0ea
test(e2e): cover purge-active and purge-idle UI states
PatelUtkarsh May 19, 2026
b4c8f28
test(e2e): harden orphan-cleanup spec against activation races
PatelUtkarsh May 19, 2026
19b5db3
docs(changelog): note small-table fast path + running-state UX
PatelUtkarsh May 19, 2026
7324212
fix(e2e): drop unused catch binding for ESLint
PatelUtkarsh May 19, 2026
b7e433a
test: drop two low-value auto-purge unit tests
PatelUtkarsh May 19, 2026
e1779d3
review: address code review feedback
PatelUtkarsh May 19, 2026
d48efb6
Expose Stream abilities via MCP when the WordPress MCP Adapter is pre…
PatelUtkarsh May 19, 2026
1d13d4f
Add HTTPS to the local dev environment via mkcert and an Apache SSL v…
PatelUtkarsh May 19, 2026
f3b7667
Publish the mkcert helper image via docker-images.yml
PatelUtkarsh May 19, 2026
12f1fbd
Extract mcp-adapter post-install hook into a dedicated PHP script
PatelUtkarsh May 19, 2026
a609c1e
Force HTTPS across the local dev environment and tests
PatelUtkarsh May 19, 2026
530dd7b
Rebuild the WordPress image in CI so branch Dockerfile changes apply
PatelUtkarsh May 19, 2026
c44aca1
Simplify the Enable Abilities API setting description
PatelUtkarsh May 19, 2026
1d0a454
review: address second round of code review feedback
PatelUtkarsh May 20, 2026
e7524fc
review: address third round of code review feedback
PatelUtkarsh May 20, 2026
1a48b49
fix(e2e): pass --user www-data to docker compose exec
PatelUtkarsh May 20, 2026
50b7376
Merge pull request #1859 from xwp/feature/XWPENG-13-abilities-api
PatelUtkarsh May 20, 2026
367bebb
chore(deps-dev): bump johnbillion/query-monitor from 3.16.3 to 3.20.4…
dependabot[bot] May 20, 2026
2b4f0a4
Merge pull request #1878 from xwp/dependabot/composer/symfony/process…
dependabot[bot] May 20, 2026
e2adc0c
Merge remote-tracking branch 'origin/develop' into feature/XWPENG-28-…
PatelUtkarsh May 20, 2026
dacd2c6
Bump phpunit/phpunit from 9.6.20 to 9.6.33 (#1876)
dependabot[bot] May 20, 2026
0a79a9f
Merge pull request #1697 from dd32/patch-2
PatelUtkarsh May 20, 2026
67e3d56
Merge pull request #1869 from xwp/dependabot/npm_and_yarn/axios-1.16.0
dependabot[bot] May 20, 2026
3e8b36b
chore(deps-dev): bump composer/composer from 2.7.7 to 2.9.8 (#1877)
dependabot[bot] May 20, 2026
a65ab24
chore(deps): update dependency npm-run-all2 to v9 (#1881)
renovate[bot] May 20, 2026
f81ac45
refactor(e2e): use Playwright baseURL for admin URLs
PatelUtkarsh May 20, 2026
1dc4372
Switch dev dependencies from WPackagist to WP Packages (#1858)
retlehs May 21, 2026
eb67bd1
Update Node.js to ^24.16.0 (#1883)
renovate[bot] May 21, 2026
0ca85ac
Update dependency npm-run-all2 to ^9.0.1 (#1886)
renovate[bot] May 23, 2026
b6dacf3
review: address fourth round of code review feedback
PatelUtkarsh May 25, 2026
59b4c19
test(phpunit): load Trait_View_Stream_Permission in bootstrap (#1888)
PatelUtkarsh May 25, 2026
d1ca929
Merge remote-tracking branch 'origin/develop' into feature/XWPENG-28-…
PatelUtkarsh May 25, 2026
0199310
Migrate auto-purge to Action Scheduler with batched deletion (#1882)
PatelUtkarsh May 26, 2026
b1ac65a
Skip async deletion AS query outside admin (#1885)
dd32 May 26, 2026
7bc3ca2
Update dependency select2 to ^4.1.0 (#1890)
renovate[bot] May 27, 2026
79c3a2e
Release 4.2.0 (#1889)
PatelUtkarsh May 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions .eslintignore

This file was deleted.

26 changes: 0 additions & 26 deletions .eslintrc.js

This file was deleted.

2 changes: 2 additions & 0 deletions .github/workflows/deploy-to-stream-dist.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ on:
branches:
- master
- develop
release:
types: [published]

jobs:
lint_and_test:
Expand Down
123 changes: 122 additions & 1 deletion .github/workflows/lint-and-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,16 @@ name: Lint and Test

on: [push, workflow_call]

env:
# Opt into Node.js 24 for JavaScript actions that still ship a Node 20 runtime.
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: 'true'

jobs:

lint:
name: Lint and Test
runs-on: ubuntu-22.04
timeout-minutes: 10
permissions:
contents: read
packages: read
Expand Down Expand Up @@ -39,7 +44,7 @@ jobs:
restore-keys: ${{ runner.os }}-php-

- name: Log in to the Container registry
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
Expand All @@ -62,3 +67,119 @@ jobs:

- name: Test
run: npm run test

e2e:
name: E2E
runs-on: ubuntu-22.04
timeout-minutes: 12
needs: lint
permissions:
contents: read
packages: read
steps:

- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
cache: 'npm'

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.1'
tools: composer:v2

- name: Get Composer cache directory
id: composer-cache
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT

- name: Cache Composer packages
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-php-${{ hashFiles( 'composer.lock' ) }}
restore-keys: ${{ runner.os }}-php-

- name: Map stream.wpenv.net to localhost
run: echo "127.0.0.1 stream.wpenv.net" | sudo tee -a /etc/hosts

- name: Log in to the Container registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Install NPM dependencies
run: npm install

- name: Install Composer dependencies
run: composer install

- name: Install Playwright browsers
run: npx playwright install --with-deps chromium

- name: Build
run: npm run build

- name: Pull custom Docker images
# `--ignore-pull-failures` so the first push of this branch (before
# docker-images.yml has published ghcr.io/xwp/stream-mkcert) still
# passes CI. Docker Compose then falls back to the local build:
# context for any image it couldn't pull, keeping the workflow
# green while a master push backfills the registry.
run: docker compose pull --ignore-pull-failures wordpress mkcert

- name: Rebuild WordPress image on top of the pulled base
# The published ghcr.io/xwp/stream-wordpress image is updated only by
# docker-images.yml on master pushes. When this branch changes
# local/docker/wordpress/Dockerfile (e.g. to enable mod_ssl), the
# pulled image lags behind the branch's intent and Apache rejects
# :443 with ERR_CONNECTION_CLOSED. Build locally so the branch's
# Dockerfile actually applies; Docker layer caching keeps this cheap
# when the Dockerfile hasn't changed since the last published build.
run: docker compose build wordpress

- name: Start WordPress
run: npm run start

- name: Wait for MySQL (from inside the wordpress container)
run: |
npm run cli -- php -r '
require "/var/www/html/wp-content/plugins/stream-src/vendor/autoload.php";
( new XWP\Wait_For\Tcp_Connection( "mysql", 3306 ) )->connect( 120 );
echo "MySQL is accepting connections on mysql:3306.\n";
'

- name: Wait for WordPress (from the runner)
run: |
php -r '
require "vendor/autoload.php";
( new XWP\Wait_For\Tcp_Connection( "127.0.0.1", 443 ) )->connect( 60 );
echo "WordPress is accepting HTTPS connections on 127.0.0.1:443.\n";
'

- name: Install WordPress multisite
run: npm run install-wordpress

- name: Run E2E tests
run: npm run test-e2e

- name: Dump container state on failure
if: failure()
run: |
docker compose ps || true
docker compose logs --tail=80 mysql || true
docker compose logs --tail=80 wordpress || true

- name: Upload Playwright report
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: playwright-report
path: playwright-report
retention-days: 7
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ debug.log
package.lock
.phpunit.result.cache

# Locally-generated TLS cert + key for the dev environment HTTPS vhost.
# Created by local/scripts/setup-https.sh via mkcert.
/local/certs/

# Generated test data
/artifacts/
tests/data/tmp/*
Expand Down
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
22
24
Loading
Loading