Changelog
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.
[v3.1.46] (2026-07-20)
Blueprints
- Declare v2 schema constraints beside their types. (#4077)
Documentation
- [Docs] Describe Playground tools with the Dock UI. (#4085)
- [Docs] Document Dock paths in Blueprint and API documentation. (#4083)
PHP WebAssembly
- [CLI] Use preferredVersions.wp in Playground CLI. (#4075)
- Harden non-streaming fallback tests for fetchWithCorsProxy. (#3495)
- [PHP-WASM] Expose recursive cp through PHPWorker. (#4061)
Website
- Add a square mobile Dock with a tools toggle. (#4088)
- Add end-to-end coverage for playground-zip import regressions. (#3874)
- Align mobile Dock pane titles, toolbars, and forms. (#4084)
- Anchor the autosave nudge to the Playgrounds Dock button. (#4096)
- Ask before reloading edited Blueprint fragments. (#4089)
- Clarify New Playground action labels. (#4090)
- Decode JSON-encoded <php-snippet> child payloads. (#4101)
- Keep the file editor Save control stable during autosave. (#4073)
- Make Playgrounds pane rows span the Dock width. (#4086)
- Match local-directory status to the autosave callout. (#4100)
- Name Dock pane state after the Dock. (#4080)
- Place Dock panes above the visible collapsed row. (#4112)
- Render error dialogs as Quiet Paper sheets. (#4102)
- Restyle the GitHub connect prompt to match the Dock. (#4094)
- Use outward glyph for Dock Export. (#4091)
Contributors
The following contributors merged PRs in this release:
@adamziel @ashfame
[v3.1.45] (2026-07-16)
Enhancements
- [Website] Add a file editor end-to-end test harness. (#3978)
Blueprints
- Add compiler support for more v2 data declarations. (#3967)
- Add runtime coverage for supported v2 declarations. (#3968)
- Add runtime tests for v2 post imports and post types. (#3982)
- Align Blueprint v2 schema types. (#3932)
- Compile Blueprint v2 declarations from raw JSON. (#3933)
- Execute every v2 schema variant in CI. (#4014)
- Ignore credential rewrites in git resource test. (#3941)
- Import nested WordPress file ZIPs. (#3986)
- Lower Blueprint v2 mysql-dump content to runSql. (#3944)
- Lower more Blueprint v2 declarations to v1 steps. (#3949)
- Point unsupported v2 execution errors at declaration fields. (#3940)
- Reject malformed v2 declarations before runtime setup. (#3998)
- Report progress for v2 compiler steps. (#3970)
- Support Blueprint v2 runSQL steps. (#3943)
- Support v2 WXR URL maps. (#3974)
- Support v2 WXR author options. (#3975)
- Test v2 login, language, mu-plugins, fonts, SQL, and PHP. (#4002)
Tools
Website
- [Website] Reuse FilePickerTree imports in the shared explorer. (#3973)
Documentation
- [docs] Adding manifest.json for handbook structure. (#3267)
PHP WebAssembly
- [CLI] Accept Blueprint v2 modes without an experimental flag. (#3993)
- Wire SMTP sink into PHP runtimes. (#3955)
- [CLI] Remove process.exit() from library APIs. (#3478)
- [PHP-WASM] Add per-command spawn handlers. (#3995)
- [PHP-WASM] Close child stdin when proc_open omits descriptor 0. (#4055)
- [PHP-WASM] Expose sendmail stdin as a live event stream. (#3996)
- [PHP-WASM] Route PHP popen through wasm wrappers. (#3951)
- [PHP-WASM] Transfer event stdin streams across workers. (#4060)
- [PHP-WASM] Transfer marked event stdin streams to every listener. (#4064)
- [PHP] Harden file writes and directory mounts. (#3917)
- [PHP] Keep OPFS mounts attached when final journal flushes fail. (#4003)
- [PHP] Normalize ZIP entries in unzipFile(). (#3923)
Blueprints
- [Blueprints] Add native Blueprint v2 CLI flow. (#3915)
- [Blueprints] Default v2 network access to disabled. (#3983)
- [Blueprints] Expand v2 with WP-less installs, baseline content policy, site resources, and multisite. (#4026)
- [Blueprints] Load v2 WordPress data-reference sources. (#4005)
- [Blueprints] Resolve v2 runtime WordPress versions. (#3987)
- [Blueprints] Stop shipping the PHP v2 runner. (#4011)
- [Blueprints] Stop using v2 WordPress max bounds as archive names. (#3992)
- [Blueprints] Test v2 runtime entry points. (#3985)
Website
- [Blueprints] Remove v2 experimental compatibility aliases. (#4007)
- [CLI] Add concurrent SQLite publish regression test. (#3920)
- [PHP] Add streaming tar.zst WordPress bundle extraction. (#3925)
Website
- Hide database tools until Playground is ready. (#4076)
- API for exporting saved OPFS Playground files as ZIP. (#3959)
- Add Blueprint bundle resource path helper. (#3966)
- Add an inert state and listbox navigation to the address bar. (#4058)
- Add reusable Playground export panel. (#4041)
- Add reusable Playground management and creation panels. (#4040)
- Add reusable dock pane primitives. (#3961)
- Animate the entire Dock pane when closing. (#4066)
- Autosave after dismissing restore prompts. (#4035)
- Center the Playground file-loading message. (#4072)
- Center the modal loading spinner over the page. (#4050)
- Create blueprint.json for editable Blueprints that have none. (#4052)
- Create stored Playgrounds from URLs or bundles. (#4025)
- Define Dock pane and notice positioning. (#4056)
- Define mysqli stub before custom db.php guard. (#3592)
- Delay autosave nudge until dismissal can save the new Playground. (#3823)
- Detect incomplete OPFS saves before boot. (#3962)
- Extract saved Playground state helpers. (#3989)
- Keep Adminer and phpMyAdmin checks on their related Playground and show download errors. (#4049)
- Keep autosave progress out of live announcements. (#3817)
- Keep pending file edits with their filesystem owner. (#4008)
- Keep the Dock corner launcher clickable after dragging. (#4059)
- Keep the current WordPress version in the settings dropdown. (#4051)
- Let Dock buttons be disabled and pane subtitles contain links. (#4054)
- Let the Blueprint editor show Dock controls. (#4053)
- Let the Playground save form render inside a Dock pane. (#4043)
- Mark Playground as persisted in the Redux store only after it is actually persisted. (#3960)
- Match the Blueprint URL export item height. (#4074)
- Move Playground tools into the bottom Dock. (#4009)
- Parse GitHub inputs before import, export, and preview. (#3945)
- Persist the Dock full-width preference. (#4046)
- Preserve stored boot settings when modifying settings of an autosaved Playground. (#3772)
- Push GitHub export updates to pull request head branches. (#3948)
- Put the Blueprint URL export hint inside the disabled item. (#4070)
- Read SQLite size without copying its contents. (#4033)
- Refine PWA launches on iOS. (#3742)
- Remove obsolete Site Manager UI scaffolding. (#4078)
- Remove same-site autosave recreation API. (#4069)
- Rename Site Settings and defer settings action choices. (#4071)
- Render Playground logs as escaped text. (#4031)
- Reuse GitHub import details in the export form. (#4045)
- Run edited Blueprints in fresh Playgrounds. (#4067)
- Save pending Blueprint edits before Run. (#4022)
- Separate Site Manager tool panels from its header. (#4057)
- Separate in-place and fresh-site settings actions. (#4034)
- Show Playground names in the startup progress bar. (#4029)
- Show export text in the GitHub login prompt. (#4048)
- Show the current boot stage in startup progress. (#4062)
- Stop booting interrupted browser-stored Playground saves. (#3787)
- Stop default WordPress tests from checking version classes. (#3984)
- Store setup params in OPFS site metadata. (#3958)
- Use graphite icons for dock pane actions. (#4068)
- Use the shared file explorer in the Blueprint editor. (#3990)
- Wrap YouHaveAutosaveNudge with RecentAutosaveNudge context for Dock. (#4047)
- [Blueprints] Support v2 in the browser without ?experimental-blueprints-v2-runner=yes. (#3997)
- [Dock UI] Add dock tabs and pane state primitives. (#3988)
- [PHP] Add streaming tar parser for WordPress bundles. (#3926)
- [PHP] Add zstd decoder stream for tar bundles. (#3927)
- [PHP] Preserve empty directories in tar.zst core bundles. (#3972)
- [PHP] Remove redundant static ZIP from core bundles. (#3916)
- [PHP] Replace WordPress core bundles with tar.zst. (#3919)
- [Web] Capture sendmail stdin in remote Playground instances. (#4063)
Blueprints
- Keep ZIP imports running during overlay close attempts. (#3979)
- Report Blueprint v2 analytics events. (#4006)
- [Blueprints] Publish v2 in the Blueprint schema. (#3999)
Internal
- [CI] Disable unrelated Microsoft apt feeds before runner dependency installs. (#3931)
- [CI] Schedule asset refreshes before weekly deploy. (#4065)
- [PHP] Add path containment resolver. (#3921)
Bug Fixes
- [CI] Fix NPM package publishing error. (#4079)
Various
- [PHP] Expose more metadata about each WordPress zip bundle. (#3924)
- [Web] Harden remote access relay signals. (#3922)
- [Website] Add an opt-in Dock presentation to the file editor. (#4042)
- [Website] Bound file editor inline reads. (#3980)
Contributors
The following contributors merged PRs in this release:
@adamziel @ashfame @bgrgicak @brandonpayton @fellyph @gcsecsey
[v3.1.44] (2026-07-06)
Blueprints
- Add Blueprint execution compile facade. (#3902)
- Add TypeScript Blueprint v2 runner skeleton. (#3906)
- Allow WXR imports to choose default author. (#3887)
- Allow WXR imports to preserve source URLs. (#3877)
- Allow WXR imports to skip attachment fetching. (#3878)
- Allow WXR imports to skip comments. (#3880)
- Allow skipping plugin install failures. (#3853)
- Allow skipping theme install failures. (#3854)
- Compile Blueprint v2 declarations into an execution plan. (#3908)
- Document valid Blueprint v2 schema examples. (#3873)
- Fix package typecheck target. (#3859)
- Flush rewrite rules after setting permalink structure. (#3851)
- Lower Blueprint v2 plan items to step records. (#3910)
- Reject unsatisfied Blueprint v2 PHP constraints. (#3898)
- Reject unsupported Blueprint v2 execution input. (#3904)
- Remove WXR site options from Blueprint v2 schema. (#3884)
- Require WXR author maps in Blueprint v2 types. (#3869)
- Resolve Blueprint v2 PHP version constraints. (#3897)
- Resolve Blueprint v2 network runtime option. (#3889)
- Resolve Blueprint v2 runtime constants. (#3892)
- Resolve exact Blueprint v2 PHP versions. (#3890)
- Resolve latest Blueprint v2 PHP label. (#3896)
- Resolve preferred Blueprint v2 WordPress versions. (#3894)
- Resolve recommended Blueprint v2 PHP versions. (#3895)
- Resolve simple Blueprint v2 WordPress versions. (#3891)
- Restrict Blueprint v2 file references. (#3860)
- Run lowered Blueprint v2 steps. (#3911)
- Share Git repository URL detection logic. (#3858)
- Support bundled Blueprint v2 resources. (#3912)
- Support bundled Blueprints in execution compile facade. (#3900)
- Support plugin
activationOptions. (#3852) - Test Blueprint v2 runtime defaults. (#3888)
- Type Blueprint v2 WXR author maps. (#3863)
- Type Blueprint v2 WXR source lists. (#3868)
- Type Blueprint v2 plugin collision handling. (#3865)
- Type Blueprint v2 runtime version labels. (#3864)
- Type Blueprint v2 theme collision handling. (#3867)
- Type Blueprint v2 theme install failures. (#3866)
- Type Blueprint v2 version constraints. (#3870)
- Type nested Blueprint v2 inline directories. (#3861)
- [installTheme step] Honor ifAlreadyInstalled for directory themes. (#3855)
Experiments
Website
- [Storage] Replace isomorphic-git submodule with local adapter. (#3841)
GitHub integration
- [Storage] Lazy-load git API modules. (#3840)
PHP WebAssembly
- [Blueprints] Add Blueprint v2 web declarations. (#3850)
- [Blueprints] Keep directory theme writes inside the target folder. (#3857)
- [CLI] Avoid port conflicts when starting PHP-WASM network proxies. (#3722)
Website
- Disable admin view transitions in Chromium. (#3886)
- Fixed file browser covering the navigation. (#3829)
- Resolve isomorphic-git browser entry without dependency lists. (#3885)
- Track blueprint resource type if the resource doesn't have a theme/plugin slug. (#3862)
- [E2E] Stabilize legacy boot and recreation checks. (#3901)
- [E2E] Use routed CURLFile upload fixture. (#3893)
- [PHP] Default Playground SQLite journal mode to DELETE. (#3909)
- [Tests] Fix legacy WP plugin activation selector. (#3825)
Blueprints
- Delay .zip Playground imports until OPFS sync is finished. (#3847)
Internal
- [GitHub Actions] Fix empty changelog entries since v3.1.35. (#3800)
Contributors
The following contributors merged PRs in this release:
@adamziel @akirk @ashfame @bgrgicak @chubes4 @dhruvang21 @mho22
[v3.1.43] (2026-06-29)
[v3.1.42] (2026-06-26)
[v3.1.41] (2026-06-22)
[v3.1.40] (2026-06-19)
[v3.1.39] (2026-06-15)
[v3.1.38] (2026-06-08)
[v3.1.37] (2026-06-08)
[v3.1.36] (2026-06-01)
[v3.1.35] (2026-05-25)
[v3.1.34] (2026-05-18)
PHP WebAssembly
- [PHP.wasm] Fix sqlite_markdown extension loading. (#3650)
- [PHP.wasm] Support web JSPI side module ABI exports. (#3647)
- [codex] Use wp-extensions markdown editor release. (#3648)
- [website] Add php-extension query parameter. (#3645)
Various
Personal Playground
- Personal WP: Improve app install dialog. (#3652)
Contributors
The following contributors merged PRs in this release:
@adamziel @akirk
[v3.1.33] (2026-05-14)
PHP WebAssembly
- [PHP.wasm] Export filesystem symbols for PHP side modules. (#3643)
Website
- [php-snippet] Simplify PHP snippet pointer handling. (#3640)
Contributors
The following contributors merged PRs in this release:
@adamziel
[v3.1.32] (2026-05-14)
PHP WebAssembly
- Expose SQLite auto-extension symbols to JS ABI. (#3641)
Various
- Export SQLite auto-extension symbols in Node PHP 8.4 JSPI artifact. (#3642)
Contributors
The following contributors merged PRs in this release:
@adamziel
[v3.1.31] (2026-05-14)
PHP WebAssembly
- Export SQLite auto-extension symbols for PHP.wasm side modules. (#3524)
- [CLI] Load custom PHP.wasm extensions. (#3616)
- [CLI] Support staged PHP.wasm side modules. (#3620)
Website
- Fix PHP snippet Run button pointer activation. (#3639)
- Fix PHP snippet run controls. (#3636)
- Polish PHP snippet run UI. (#3638)
Various
- Simplify personal WP app installer. (#3623)
- [DOCS] Running PHPUnit tests using the Playground CLI. (#3487)
- [docs] Adding reference to awesome playground page. (#3499)
Contributors
The following contributors merged PRs in this release:
@adamziel @akirk @bgrgicak @fellyph
[v3.1.30] (2026-05-11)
Bug Fixes
- Fix PHP-WASM node rebuild Docker context. (#3608)
Various
- Serve index fallback on my.wordpress.net. (#3611)
Contributors
The following contributors merged PRs in this release:
@akirk @chubes4
[v3.1.29] (2026-05-07)
Blueprints
- Personal WP: Remove fake browser chrome, improve dependent tab handling. (#3601)
Tools
PHP WebAssembly
- [Package] Exclude unused dependencies when building
package.jsonfiles. (#3232)
PHP WebAssembly
- [PHP][Node] Export more side-module symbols to support the SQLite WASM extension (#3605). (#3605)
Contributors
The following contributors merged PRs in this release:
@adamziel @akirk @mho22
[v3.1.28] (2026-05-05)
PHP WebAssembly
Website
- Escape TinyMCE inline CSS in WP editor init. (#3597)
Internal
- [Repo] Cap package labels and infer type labels. (#3574)
Contributors
The following contributors merged PRs in this release:
@adamziel @ashfame @JanJakes
[v3.1.27] (2026-05-04)
[v3.1.26] (2026-05-03)
Documentation
- [Docs] how to use @php-wasm/compile-extension from a downstream repo. (#3595)
PHP WebAssembly
- [PHP] Support
extraFilesfor custom PHP extensions. (#3580) - [compile-extension] Emit the new PHPExtensionManifest shape, add --extra-files. (#3596)
Website
- [php-snippet] Highlight PHP snippet reruns. (#3594)
Contributors
The following contributors merged PRs in this release:
@adamziel
[v3.1.25] (2026-05-03)
Tools
Website
- [Networking] Set curl.cainfo alongside openssl.cafile. (#3583)
Documentation
- [Docs] Treat documentation changelog as CommonMark. (#3586)
PHP WebAssembly
- [PHP.wasm] Export Zend symbols for compiling PHP extensions. (#3584)
- [PHP] Limit external extensions to JSPI. (#3587)
- [PHP]
@php-wasm/compile-extension– a workflow for building custom extensions. (#3582)
Website
- [PHP] Don't call prefetchUpdateChecks() when WordPress is disabled. (#3589)
Contributors
The following contributors merged PRs in this release:
@adamziel
[v3.1.24] (2026-05-01)
[v3.1.23] (2026-05-01)
Public API
Blueprints
- [Client] Restore bundled type declarations. (#3576)
Contributors
The following contributors merged PRs in this release:
@adamziel
[v3.1.22] (2026-05-01)
Blueprints
Tools
- [CLI-util] Replace Xdebug console logs with CLI output. (#3460)
PHP WebAssembly
GitHub integration
- [GitHub Actions] Fix GitHub release missing changelog. (#3502)
- [Github actions] Modify the time slot of the
refresh-sqlite-integrationworkflow. (#3510)
Documentation
- Docs: Treat changelog as a markdown file. (#3531)
- Update documentation blueprint supporting encodeURIComponent URL fragments. (#3556)
- [Docs] Link PR preview guide to canonical GitHub plugin pattern; refresh WP alias list. (#3548)
- [Docs] Remove GitHub proxy mentions from active documentation. (#3540)
- [PHP.wasm] Document bundler configuration for the .dat file import in
@php-wasm/web. (#2776) - [docs] Replacing info component by compatible handbook element. (#3496)
PHP WebAssembly
- [Asyncify] Fix
fix-asyncifycommand. (#3509) - [CLI] Stabilize phpMyAdmin CLI tests. (#3554)
- Stabilize file lock test cleanup. (#3552)
- [Node] Handle symlinked directories in Node FS mounts. (#3551)
- [PHP] Hold pooled workers until streamed responses finish. (#3553)
- [PHP] Add
TSRMLS_CCfallback defines for PHP versions above 7. (#3512) - [PHP] Fix MEMFS symlink crash during PHP runtime rotation. (#3500)
- [Web] Fix non-deterministic TLS bridge failures from non-minimal DER serial numbers. (#3550)
Website
- Add legacy WordPress support on PHP 5.2. (#3490)
Website
- Embeddable PHP code snippets via <php-snippet>. (#3528)
- <php-snippet> setup blueprints via