All notable changes to this project are documented in this file by a CI job that runs on every NPM release. The file follows the Keep a Changelog format.
- [Breaking] Refactor PHP.ini management, remove php.setPhpIniPath() and php.setPhpIniEntry(). (#1423)
- CLI: Distinguish between mount and mountBeforeInstall options. (#1410)
- CLI: Support fetching WordPress zips from custom URLs. (#1415)
- Introduce a new @wp-playground/common package to avoid circular depencies. (#1387)
- Website: Ship the SQLite database integration plugin. (#1418)
- Playground CLI: Don't create /wordpress/wp-config.php on boot. (#1407)
- Define constants in auto_prepend_file, silence warnings related to redefining those constants. (#1400)
- Detect silent failures when activating plugins and theme. (#1436)
- Re-activate single-file plugins when enabling a multisite. (#1435)
- Throw an error when activating a theme or plugin that doesn't exist. (#1391)
- Write sunrise.php to /internal in enableMultisite step. (#1401)
- Unzip: Only delete a temporary zip file after unzipping, do not delete the original zip. (#1412)
- GitHub export: Create new commits in your fork when writing to the upstream repo isn't allowed. (#1392)
- Support wp_crop_image in import wxr. (#1357)
- Add puzzle API. (#1372)
- Docs: Use step function names instead of TypeScript type names. (#1373)
- Updated the GitHub issue link to open in a new tab. (#1353)
- Use step id name. (#1377)
- Explore: Setup SQLite database integration without creating wp-content/db.php. (#1382)
- Add shareable extension-to-MIME-type mapping. (#1355)
- Document php ini functions. (#1430)
- JSPI: Enable the origin trial on Chrome. (#1346)
- PHP: Add libjpeg and libwebp support. (#1393)
- PHP: Always set the auto_prepend_file php.ini entry, even when the auto_prepend_file.php file exists. (#1388)
- PHP: Move internal shared directories to /internal/shared. (#1386)
- PHP: Remove mentions of a custom PHP extension. (#1422)
- PHP: Remove the MODE_EVAL_CODE execution mode. (#1433)
- PHP: Support php.mv() between devices via recursive copy. (#1411)
- PHP: Use /internal/shared/php.ini by default. (#1419)
- PHP: Use auto_prepend_file to preload mu-plugins (instead of creating them in wp-content/mu-plugins). (#1366)
- Improve log modal styles, a11y, error message wording. (#1369)
- Move puzzle app to a Playground package. (#1385)
- Add secrets on-demand for more endpoints. (#1362)
- Boot: Move WordPress zip extraction logic to a common unzipWordPress() utility. (#1427)
- Derive MIME types for PHP served files from shared JSON. (#1360)
- Fix constant names for GH export oauth. (#1378)
- Playground Boot: Align the boot process between remote.html and CLI. (#1389)
- Remote.html: Install WordPress if it isn't installed yet. (#1425)
- Remote.html: Preload the SQLite database plugin, but only execute it if there's no custom db.php inside wp-content. (#1424)
- Simplify website deployment workflows. (#1404)
- Update rsync command to clean up more completely. (#1361)
- Provide non-gzipped wp-cli.phar file with website build. (#1406)
- Simplify runPhpWithZipFunctions() setup. (#1434)
- Fix changelog automation. (#1413)
- Add name to Puzzle package. (#1443)
- Fixed images not loading on the page. (#1352)
- Restore nightly wordpress build. (#1437)
- Disable console logging when running tests. (#1368)
- Lint: Disable console warnings for paths where they're not useful. (#1421)
- Add links to kitchen sink (PHP extensions), networking. (#1363)
- Reorganize and update documentation. (#1354)
The following contributors merged PRs in this release:
@adamziel @bgrgicak @brandonpayton @flexseth @ironnysh @josevarghese
- Avoid edge-caching conditionally redirected resources. (#1351)
- Fix deploy-time check for file with PHP-handled redirect. (#1350)
The following contributors merged PRs in this release:
@brandonpayton
- PHP.wasm Node: Revert a part of #1289, do not import a .wasm file. (#1348)
The following contributors merged PRs in this release:
@adamziel
- Meta: Move the minified WordPress to the new
@wp-playground/wordpress-builds
package. (#1343)
The following contributors merged PRs in this release:
@adamziel
- Playground CLI. (#1289)
The following contributors merged PRs in this release:
@adamziel
- PHP: Remove setSapiName, setPhpIniEntry, setPhpIniPath methods from the remote PHP API client. (#1321)
- Remove the wp-playground/node package. (#1323)
- Breaking: Loopback Request Support. (#1287)
- Centralize log storage. (#1315)
- Link to Installing Nx Globally in the README. (#1325)
- Add PHPResponse.forHttpCode() shorthand. (#1322)
- Asyncify: List ZEND_FETCH_OBJ_R_SPEC_CV_CV_HANDLER. (#1342)
- Curl extension for the Node.js build of PHP.wasm. (#1273)
- Explore curl support. (#1133)
- PHP Process Manager. (#1301)
- PHPProcessManager: Clear nextInstance when the concurrency limit is exhausted. (#1324)
- Spawn handler: Wrap the program call with try/catch, exit gracefully on error. (#1320)
- Add initial workflow for deploying the website to WP Cloud. (#1293)
- Eliminate 404s due to nested files-to-serve-via-php dir. (#1333)
- Stop WP rewrite rules from matching files like wp-admin.css. (#1317)
- Stop using PHP to serve most static files on WP Cloud. (#1331)
- WP Cloud: Relay secrets for error logger. (#1337)
- Document WP Cloud website setup. (#1338)
- Add log methods, log handlers, and separate log collection. (#1264)
The following contributors merged PRs in this release:
@adamziel @bgrgicak @brandonpayton @juanmaguitar @mho22
- Breaking: Remove PHPBrowser. (#1302)
- Blueprints builder: Support ?blueprint-url. (#1309)
- Use new learning resources in Playground documentation. (#1276)
- Browser: Remove setSpawnHandler function from the public API. (#1303)
- PHP: Add a cwd argument to hotSwapPHPRuntime(). (#1304)
- PHP: Remove addServerGlobalEntry() method, accept $_SERVER as php.run() property. (#1286)
- PHPRequestHandler: Add a generic PHP argument. (#1310)
- nit: Clean up after node PHP popen() test. (#1280)
- Add more info to crash reports. (#1253)
- Memoize fetch() responses when requesting php.wasm. (#1306)
- Progress monitoring: Use a custom instantiateWasm handler to avoid monkey-patching WebAssembly.instantiateStreaming. (#1305)
- Remove sandbox attribute from iframe. (#1313)
- Service Worker: Fetch credentialless to play more nicely with server caches (#1311). (#1311)
- Automate Changelog generation after each npm release. (#1312)
- CI: Fix intermittent documentation build failures. (#1307)
- Add styles to ensure
iframes
are responsive. (#1267) - Docs: Fix the Blueprint example of the Gutenberg PR preview. (#1268)
- Docs: Move Steps Shorthands to a separate page to fix Steps TOC. (#1265)
- Add PDF to infer mime type list. (#1298)
The following contributors merged PRs in this release:
@adamziel @bgrgicak @brandonpayton @ironnysh @peeranat-dan
- Replace set_current_user call with wp_set_current_user to fix a PHP notice. (#1262)
- Install themes and plugins using the ReadableStream API. (#919)
- Docs: Update WordPress versions used in the documentation, document using older releases. (#1235)
-
Filter Requests library to use the Fetch handler. (#1048)
-
PHP: Handle request errors in PHPRequestHandler, return response code 500. (#1249)
-
PHP: Reset exit code before dispatching a request. (#1251)
- Add documentation for
shorthand
alternatives of Blueprint steps. (#1261)
The following contributors merged PRs in this release:
@adamziel @dd32 @ironnysh @kozer
- Add ifAlreadyInstalled to installPlugin and installTheme steps. (#1244)
- Support a landingPage value without the initial slash. (#1227)
- Investigate OOB: Run unit tests with instrumented PHP 8.0 code. (#1220)
- Unit tests: Restore site-data.spec.ts. (#1194)
- Web PHP: Increase memory limit to 256 M. (#1232)
- Browser: Display PHP output when Fatal Error is trigerred. (#1234)
- Fix accessibility issues found by Axe. (#1246)
- Request Handler: Urldecode the requested path. (#1228)
- fix: Set required engine version to 18.18.0. (#1214)
- Blueprints/json example. (#1188)
- Doc: Update 01-index.md. (#1216)
- Move DefineSiteUrlStep doc warning so it displays in documentation. (#1245)
- Updated link to native WordPress importer. (#1243)
- documentation update proposal: Provide more info on features, extensions?. (#1208)
- php-wasm/node: Update express to newest version, and move it to devDependencies. (#1218)
The following contributors merged PRs in this release:
@adamziel @artpi @bph @brandonpayton @eliot-akira @flexseth @ironnysh @kirjavascript
- Revert changes to the documentation build. (#1226)
- Update error modal description label. (#1224)
- Try memory leak workaround with zeroed mem. (#1229)
The following contributors merged PRs in this release:
@adamziel @bgrgicak @brandonpayton
- Try to repro memory out of bounds errors in CI. (#1199)
- Fix docs-site build. (#1222)
The following contributors merged PRs in this release:
@bgrgicak @brandonpayton
- Avoid Service Worker update issues on localhost. (#1209)
- importWxr: Preserve backslashes in the imported content. (#1213)
-
Catch DNS errors to avoid unhandled exceptions. (#1215)
-
Revert "Avoid partial munmap memory leak". (#1195)
-
Try to repro memory out of bounds errors in CI. (#1198)
- Adjust link to LICENSE file. (#1210)
- Try to reproduce the memory access error with files from 096a017. (#1212)
The following contributors merged PRs in this release:
@adamziel @brandonpayton @emmanuel-ferdman @fluiddot
- Rename importFile to importWxr, switch to humanmade/WordPress importer. (#1192)
- Explorations: Stream API. (#851)
- Avoid partial munmap memory leak. (#1189)
- Make kitchen sink extension bundle the default. (#1191)
- Fix cross-device mv by switching to copy. (#846)
The following contributors merged PRs in this release:
@adamziel @brandonpayton @seanmorris
- Devex: Expose window.playground for quick testing and debugging. (#1125)
- Website: Query API options to preconfigure the GitHub export form. (#1174)
- Update the wp-cli step code example. (#1140)
- Add PHP iterator and yield support. (#1181)
- Fix fileinfo support. (#1179)
- Fix mbregex support. (#1155)
- PHP.run(): Throw JS exception on runtime error, remove throwOnError flag. (#1137)
- Add error report modal. (#1102)
- Ensure PromiseRejectionEvent has reason before logging it. (#1150)
- Request handler: Remove everything after # from the URL. (#1126)
- Web: Make the "Apply changes" button work in Playground settings form. (#1122)
- Allow requests to WordPress.org. (#1154)
- Refresh WordPress with the latest SQLite integration plugin. (#1151)
- Fix typo in blueprints/public/schema-readme.md. (#1134)
- Priority: Fix broken link to VS Code extension. (#1141)
- Docs/update - Add implied step. (#1144)
- Give brandonpayton permission to run Playground GH workflows. (#1139)
- Logger API: Add rate limiting. (#1142)
- Remove
--disable-all
configuration option in PHP compile process. (#1132)
The following contributors merged PRs in this release:
@adamziel @bgrgicak @brandonpayton @flexseth @jblz @mho22
- Allow optional metadata. (#1103)
- Add VSCode Chrome debugging support. (#1088)
- Website: Support Base64-encoding Blueprints passed in the URL. (#1091)
- Blueprints: Explore switching to the PHP implementation. (#1051)
- Explore weird register_shutdown_function behavior. (#1099)
- Fix post_message_to_js memory out of bounds. (#1114)
- Fix shutdown errors. (#1104)
- Fixing build regression [BISON COMPILE]. (#871)
- PHP : Set appropriate SCRIPT variables in $_SERVER superglobal. (#1092)
- Add logger API. (#1113)
- Add multisite rewrite rules. (#1083)
- Service worker: Improve error reporting in non-secure contexts. (#1098)
- Fix experimental notice in FF ESR. (#1117)
- Fix php bison dep for building on non-arm64 architectures. (#1115)
- Add fatal errror listener. (#1095)
- Update examples and demos in the documentation. (#1107)
The following contributors merged PRs in this release:
@0aveRyan @adamziel @bgrgicak @brandonpayton @ironnysh @mho22 @seanmorris @StevenDufresne
- Node polyfills: Only apply them in Node.js, not in web browsers. (#1089)
The following contributors merged PRs in this release:
@adamziel
- Comlink API: Pass the context argument to windowEndpoint, not wrap. (#1087)
- Fix: Playground not starting due to a race condition. (#1084)
- Hide the "This is experimental WordPress" notice on click. (#1082)
- Set the API context when using Comlink.wrap(). (#1085)
The following contributors merged PRs in this release:
@adamziel
- Add Sensei to the allowed repositories for plugin proxy. (#1079)
- Snapshot Import Protocol v1. (#1007)
- Build the php-wasm/util package as both ESM and CJS. (#1081)
- Add unit tests to the mkdir step. (#1029)
- Website query API: Continue plugin installs on error. (#605)
The following contributors merged PRs in this release:
@adamziel @eliot-akira @reimic @renatho
- Add logging support to Playground. (#1035)
- PHP Blueprints: Display progress. (#1077)
- Set progress caption and communicate failures in the import file step. (#1034)
- PHP Blueprints demo page. (#1070)
- PHP: Do not prepend a whitespace when encoding body as multipart form data. (#1033)
- Fix response header escaping. (#1050)
- Fix: Networking broken when extra PHP extensions are enabled. (#1045)
- PHP.wasm: Yield 0 bytes read on fd_read failure to improve PHP's fread() and feof() behavior. (#1053)
- PHP: Support $env and $cwd proc_open arguments. (#1064)
- Parse shell commands in createSpawnHandler. (#1065)
- Prototype: Spawning PHP sub-processes in Web Workers. (#1031)
- Spawning PHP sub-processes in Web Workers. (#1069)
- Rebuild WordPress every 20 minutes, short-circuit if no new version is found. (#1061)
- Rebuild WordPress within an hour of a beta release. (#1059)
- Fix the login message so it doesn't override another. (#1044)
- Add arguments to default node spawn method. (#1037)
- Add bgrgicak to deployment allowlists. (#1057)
- Allow for CORS requests to api.wordpress.org to pass. (#1009)
- Default URL rewrites to /index.php. (#1072)
- Remove repository specific Code of Conduct. (#1038)
- Ship WordPress 6.5 beta 1. (#1036)
The following contributors merged PRs in this release:
@adamziel @bgrgicak @dd32 @desrosj @johnbillion @mho22
- Wp-cli step. (#1017)
- Calls proc_open two times in a row. (#1012)
- Experiment: Build PHP with OPFS support. (#1030)
- PHP: Pass request body as UInt8Array. (#1018)
The following contributors merged PRs in this release:
@adamziel @mho22
- Networking: Swap Requests transports using the http_api_transports instead of patching the Requests library. (#1004)
- Remove
crypto.randomUUID
dependency in favor of a custom function. (#1016) - Remove x-request-issuer header on cross-origin requests. (#1010)
- Update wp_http_fetch.php. (#1002)
- Remote.html: Always install the playground mu-plugin. (#1005)
The following contributors merged PRs in this release:
@adamziel @bgrgicak @jdevalk @sejas @stoph
- Remove the applyWordPressPatches step, enable the Site Health Plugin. (#1001)
- Add
crypto
to Polyfills improving Blueprint compatibility for Node. (#1000)
The following contributors merged PRs in this release:
@adamziel @sejas
- Add wp-cli and code editor examples to the demos page. (#965)
- WordPress: Preserve PHP attributes and wp-config.php whitespace. (#964)
- Add enableMultisite step. (#888)
- Set_current_user to admin before activating plugins and themes. (#984)
- Use .zip files instead of .data files for loading WordPress. (#978)
- Throw on failure. (#982)
- Support wp-cli in the browser. (#957)
- Correcting OOB & Prevent Crash on Saving Large Post. (#870)
- Memory leak: Add rotatedPHP to kill and recreate PHP instances after a certain number of requests. (#990)
- PHP : Add args and descriptors dynamic arrays in proc open function. (#969)
- PHP.wasm: Fix stack overflow in wasm_set_request_body. (#993)
- Add .htaccess file to prevent caching of index.html and enable importing the client.js library. (#989)
- Add og meta tags and meta description. (#980)
- CORS headers for client/index.js. (#893)
- wp-cli: Respect quotes when parsing shell commands. (#966)
- Remove the interactive block playground. (#988)
- Fix "WP-CLI" typos. (#971)
- Fix footer styling issue in the "Code is Poetry" in wordpress.github.io/wordpress-playground. (#959)
- WordPress build: Add newlines after PHP annotations. (#986)
- Add a blueprint example. (#946)
- Add terminal to playground site. (#161)
- Match the .nvmrc node version to the changes made in commit ec2605b. (#972)
- PHP : Dispatch available descriptor specs in js_open_process function. (#963)
- PHP : Give access to command arguments if array type is given in php ^7.4 proc_open function. (#944)
- Rebuild WordPress. (#987)
- Update the networking disabled error messages in wp-admin for plugins and themes. (#936)
The following contributors merged PRs in this release:
@adamziel @bph @ironnysh @marcarmengou @mho22 @rowasc @seanmorris @swissspidy @tyrann0us
– Breaking: Remoddsaved the PHPBrowser class (##1302)
– Added CHANGELOG.md to keep track of notable changes (##1302)