-
Notifications
You must be signed in to change notification settings - Fork 51
Bump the wp-playground-php-wasm group with 17 updates #2043
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: trunk
Are you sure you want to change the base?
Bump the wp-playground-php-wasm group with 17 updates #2043
Conversation
📊 Performance Test ResultsComparing 013bb25 vs trunk site-editor
site-startup
Results are median values from multiple test runs. Legend: 🟢 Improvement (faster) | 🔴 Regression (slower) | ⚪ No change |
|
@dependabot rebase |
ab79ffd to
a4ae477
Compare
|
Claude encountered an error —— View job I'll analyze this and get back to you. |
Bumps the wp-playground-php-wasm group with 17 updates: | Package | From | To | | --- | --- | --- | | [@php-wasm/node](https://github.com/WordPress/wordpress-playground) | `3.0.19` | `3.0.20` | | [@php-wasm/scopes](https://github.com/WordPress/wordpress-playground) | `3.0.19` | `3.0.20` | | [@php-wasm/universal](https://github.com/WordPress/wordpress-playground) | `3.0.19` | `3.0.20` | | @wp-playground/blueprints | `3.0.19` | `3.0.20` | | [@wp-playground/cli](https://github.com/WordPress/wordpress-playground) | `3.0.19` | `3.0.20` | | [@wp-playground/wordpress](https://github.com/WordPress/wordpress-playground) | `3.0.19` | `3.0.20` | | [@php-wasm/fs-journal](https://github.com/WordPress/wordpress-playground) | `3.0.19` | `3.0.20` | | [@php-wasm/logger](https://github.com/WordPress/wordpress-playground) | `3.0.19` | `3.0.20` | | [@php-wasm/node-polyfills](https://github.com/WordPress/wordpress-playground) | `3.0.19` | `3.0.20` | | [@php-wasm/stream-compression](https://github.com/WordPress/wordpress-playground) | `3.0.19` | `3.0.20` | | [@php-wasm/progress](https://github.com/WordPress/wordpress-playground) | `3.0.19` | `3.0.20` | | @php-wasm/util | `3.0.19` | `3.0.20` | | [@php-wasm/web](https://github.com/WordPress/wordpress-playground) | `3.0.19` | `3.0.20` | | [@php-wasm/web-service-worker](https://github.com/WordPress/wordpress-playground) | `3.0.19` | `3.0.20` | | [@php-wasm/xdebug-bridge](https://github.com/WordPress/wordpress-playground) | `3.0.19` | `3.0.20` | | [@wp-playground/common](https://github.com/common/common-playground) | `3.0.19` | `3.0.20` | | [@wp-playground/storage](https://github.com/WordPress/wordpress-playground) | `3.0.19` | `3.0.20` | Updates `@php-wasm/node` from 3.0.19 to 3.0.20 - [Changelog](https://github.com/WordPress/wordpress-playground/blob/trunk/CHANGELOG.md) - [Commits](WordPress/wordpress-playground@v3.0.19...v3.0.20) Updates `@php-wasm/scopes` from 3.0.19 to 3.0.20 - [Changelog](https://github.com/WordPress/wordpress-playground/blob/trunk/CHANGELOG.md) - [Commits](WordPress/wordpress-playground@v3.0.19...v3.0.20) Updates `@php-wasm/universal` from 3.0.19 to 3.0.20 - [Changelog](https://github.com/WordPress/wordpress-playground/blob/trunk/CHANGELOG.md) - [Commits](WordPress/wordpress-playground@v3.0.19...v3.0.20) Updates `@wp-playground/blueprints` from 3.0.19 to 3.0.20 Updates `@wp-playground/cli` from 3.0.19 to 3.0.20 - [Changelog](https://github.com/WordPress/wordpress-playground/blob/trunk/CHANGELOG.md) - [Commits](WordPress/wordpress-playground@v3.0.19...v3.0.20) Updates `@wp-playground/wordpress` from 3.0.19 to 3.0.20 - [Changelog](https://github.com/WordPress/wordpress-playground/blob/trunk/CHANGELOG.md) - [Commits](WordPress/wordpress-playground@v3.0.19...v3.0.20) Updates `@php-wasm/fs-journal` from 3.0.19 to 3.0.20 - [Changelog](https://github.com/WordPress/wordpress-playground/blob/trunk/CHANGELOG.md) - [Commits](WordPress/wordpress-playground@v3.0.19...v3.0.20) Updates `@php-wasm/logger` from 3.0.19 to 3.0.20 - [Changelog](https://github.com/WordPress/wordpress-playground/blob/trunk/CHANGELOG.md) - [Commits](WordPress/wordpress-playground@v3.0.19...v3.0.20) Updates `@php-wasm/node-polyfills` from 3.0.19 to 3.0.20 - [Changelog](https://github.com/WordPress/wordpress-playground/blob/trunk/CHANGELOG.md) - [Commits](WordPress/wordpress-playground@v3.0.19...v3.0.20) Updates `@php-wasm/stream-compression` from 3.0.19 to 3.0.20 - [Changelog](https://github.com/WordPress/wordpress-playground/blob/trunk/CHANGELOG.md) - [Commits](WordPress/wordpress-playground@v3.0.19...v3.0.20) Updates `@php-wasm/progress` from 3.0.19 to 3.0.20 - [Changelog](https://github.com/WordPress/wordpress-playground/blob/trunk/CHANGELOG.md) - [Commits](WordPress/wordpress-playground@v3.0.19...v3.0.20) Updates `@php-wasm/util` from 3.0.19 to 3.0.20 Updates `@php-wasm/web` from 3.0.19 to 3.0.20 - [Changelog](https://github.com/WordPress/wordpress-playground/blob/trunk/CHANGELOG.md) - [Commits](WordPress/wordpress-playground@v3.0.19...v3.0.20) Updates `@php-wasm/web-service-worker` from 3.0.19 to 3.0.20 - [Changelog](https://github.com/WordPress/wordpress-playground/blob/trunk/CHANGELOG.md) - [Commits](WordPress/wordpress-playground@v3.0.19...v3.0.20) Updates `@php-wasm/xdebug-bridge` from 3.0.19 to 3.0.20 - [Changelog](https://github.com/WordPress/wordpress-playground/blob/trunk/CHANGELOG.md) - [Commits](WordPress/wordpress-playground@v3.0.19...v3.0.20) Updates `@wp-playground/common` from 3.0.19 to 3.0.20 - [Commits](https://github.com/common/common-playground/commits) Updates `@wp-playground/storage` from 3.0.19 to 3.0.20 - [Changelog](https://github.com/WordPress/wordpress-playground/blob/trunk/CHANGELOG.md) - [Commits](WordPress/wordpress-playground@v3.0.19...v3.0.20) --- updated-dependencies: - dependency-name: "@php-wasm/node" dependency-version: 3.0.20 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: wp-playground-php-wasm - dependency-name: "@php-wasm/scopes" dependency-version: 3.0.20 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: wp-playground-php-wasm - dependency-name: "@php-wasm/universal" dependency-version: 3.0.20 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: wp-playground-php-wasm - dependency-name: "@wp-playground/blueprints" dependency-version: 3.0.20 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: wp-playground-php-wasm - dependency-name: "@wp-playground/cli" dependency-version: 3.0.20 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: wp-playground-php-wasm - dependency-name: "@wp-playground/wordpress" dependency-version: 3.0.20 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: wp-playground-php-wasm - dependency-name: "@php-wasm/fs-journal" dependency-version: 3.0.20 dependency-type: indirect update-type: version-update:semver-patch dependency-group: wp-playground-php-wasm - dependency-name: "@php-wasm/logger" dependency-version: 3.0.20 dependency-type: indirect update-type: version-update:semver-patch dependency-group: wp-playground-php-wasm - dependency-name: "@php-wasm/node-polyfills" dependency-version: 3.0.20 dependency-type: indirect update-type: version-update:semver-patch dependency-group: wp-playground-php-wasm - dependency-name: "@php-wasm/stream-compression" dependency-version: 3.0.20 dependency-type: indirect update-type: version-update:semver-patch dependency-group: wp-playground-php-wasm - dependency-name: "@php-wasm/progress" dependency-version: 3.0.20 dependency-type: indirect update-type: version-update:semver-patch dependency-group: wp-playground-php-wasm - dependency-name: "@php-wasm/util" dependency-version: 3.0.20 dependency-type: indirect update-type: version-update:semver-patch dependency-group: wp-playground-php-wasm - dependency-name: "@php-wasm/web" dependency-version: 3.0.20 dependency-type: indirect update-type: version-update:semver-patch dependency-group: wp-playground-php-wasm - dependency-name: "@php-wasm/web-service-worker" dependency-version: 3.0.20 dependency-type: indirect update-type: version-update:semver-patch dependency-group: wp-playground-php-wasm - dependency-name: "@php-wasm/xdebug-bridge" dependency-version: 3.0.20 dependency-type: indirect update-type: version-update:semver-patch dependency-group: wp-playground-php-wasm - dependency-name: "@wp-playground/common" dependency-version: 3.0.20 dependency-type: indirect update-type: version-update:semver-patch dependency-group: wp-playground-php-wasm - dependency-name: "@wp-playground/storage" dependency-version: 3.0.20 dependency-type: indirect update-type: version-update:semver-patch dependency-group: wp-playground-php-wasm ... Signed-off-by: dependabot[bot] <[email protected]>
a4ae477 to
94d0427
Compare
|
Claude finished @dependabot[bot]'s task —— View job Code Review CompleteSummaryThis PR updates 17 WordPress Playground PHP WASM packages from 3.0.19 to 3.0.21. The changes are dependency updates only with no code modifications required. However, there are significant performance concerns that need attention before merging. Critical Issues🔴 Performance RegressionThe performance tests show severe regressions:
The 151.5% regression in site startup time is particularly concerning - this represents a 2.5x slowdown in restarting sites, which directly impacts user experience. Affected Code Paths
Changelog AnalysisVersion 3.0.20 ChangesBased on the PR description, version 3.0.20 includes:
Version 3.0.21 ChangesThe changelog for 3.0.21 is not provided in the PR description, but the package.json shows the final version is 3.0.21, not 3.0.20. Code Quality Assessment✅ Positive Findings
|
|
Claude finished @dependabot[bot]'s task —— View job Code Review CompleteSummaryThis PR updates 17 WordPress Playground PHP WASM packages from version 3.0.19 to 3.0.21. The changes include both dependency updates and code modifications to migrate from the deprecated 🔴 Critical IssuesPerformance Regression (BLOCKING)The performance tests reveal severe degradation that must be addressed before merging:
The 123.3% regression in site startup is unacceptable - this represents more than 2x slowdown when restarting existing sites. This directly impacts the core user experience of WordPress Studio. Potential Root CausesBased on the changelog analysis:
RecommendationDO NOT MERGE until performance is investigated and resolved. Consider:
✅ Code Quality AssessmentPositive Findings1. Clean API MigrationThe migration from // Before (deprecated)
skipWordpressSetup: boolean
// After (proper enum)
wordpressInstallMode: WordPressInstallMode
// Values: 'download-and-install' | 'install-from-existing-files' | 'install-from-existing-files-if-needed'Benefits:
2. Consistent Changes Across CodebaseAll 4 affected files updated correctly:
3. Proper Logic Translation// Old boolean logic
skipWordpressSetup: hasWordPress
// New enum logic (more precise)
wordpressInstallMode: hasWordPress
? 'install-from-existing-files-if-needed'
: 'download-and-install'This correctly translates the intent:
4. Patch File UpdateThe patch for
Cross-Platform Compatibility ✅No cross-platform issues introduced:
Security Assessment ✅No security concerns identified:
Testing & Documentation ✅Documentation
Testing Considerations
Additional Observations1. Type Safety ImprovementThe migration improves type safety by using the import { WordPressInstallMode } from '@wp-playground/wordpress';This ensures compile-time checking of valid installation modes. 2. Error HandlingThe new API should provide better error messages when WordPress installation fails, as the mode is more explicit about what should happen. 3. Backward CompatibilityThis is a breaking change in the Playground API, but handled correctly:
No backward compatibility layer needed as this is a major version bump (3.0.x). 4. Dependency TreePackage-lock.json shows proper hoisting:
Recommendations🚫 Blocking Issues
✅ Non-Blocking Improvements
Verdict❌ DO NOT MERGE - The 123.3% site startup regression is a blocking issue that must be investigated and resolved. What's Good
What's Blocking
Next Steps
Files Reviewed
|
|
Claude finished @dependabot[bot]'s task —— View job Code Review CompleteI've reviewed the updated PR that bumps WordPress Playground PHP WASM packages from 3.0.19 to 3.0.21. SummaryThis PR contains:
Key Changes1. Patch File Update (Critical)File: The patch removes the hardcoded Why this matters: The empty constants object ✅ Verdict: Patch correctly maintains the required behavior for Studio. 2. Code Changesa)
|
| Metric | Baseline (trunk) | This PR (7e4eedc) | Regression |
|---|---|---|---|
| Site Editor Load | 15,543 ms | 16,107 ms | +564 ms (+3.6%) ✅ |
| Site Creation | 30,406 ms | 31,477 ms | +1,071 ms (+3.5%) ✅ |
| Site Startup | 9,064 ms | 20,239 ms | +11,175 ms (+123.3%) |
Analysis
Good news: The site editor load and site creation regressions are much lower than before (~3-4% vs 8-12%).
Remaining concern: Site startup still shows +123% regression, but this appears to be comparing against a different baseline than the previous review:
- Previous baseline: 5,982 ms
- Current baseline: 9,064 ms (+52% higher)
This suggests the baseline trunk branch has already incorporated some changes, or test conditions differ. The absolute regression (11,175ms) is similar to the previous test (9,062ms), indicating the slowdown is consistent with the earlier findings.
Architecture Impact Assessment
Per the custom instructions, I checked if architecture documentation needs updating:
Changes Review
✅ WordPress Provider: Changes are parameter-level only (wordpressInstallMode vs skipWordPressSetup)
✅ Provider Interface: No interface signature changes
✅ Redux Store: No changes
✅ Build Config: No changes
✅ Process Architecture: No changes
✅ IPC/Main Process: No changes
Verdict
❌ No architecture documentation updates needed - The changes are implementation details (parameter names) that don't affect the architectural patterns described in CLAUDE.md. The behavior remains the same, just expressed more explicitly.
Security Review
✅ No security concerns identified:
- Dependency updates from trusted upstream (WordPress Playground)
- Patch maintains safe database configuration behavior
- Sentry sanitization properly includes new field
- No changes to IPC, sandboxing, or CSP
Code Quality
✅ Strengths
- API Clarity:
wordpressInstallModeis more descriptive thanskipWordPressSetup - Type Safety: Properly typed as
WordPressInstallModeenum - Documentation: Workflow diagram updated to match code
- Consistency: Changes propagated through all layers (provider → process → child)
- Debugging: Sentry sanitization includes new field
⚠️ Considerations
- Performance: Site startup regression remains significant (+123%)
- Testing: No unit tests updated (may not be necessary if behavior is unchanged)
Recommendations
🟡 Conditional Approval
This PR is functionally correct and maintains compatibility, but the performance regression needs consideration:
Option 1: Merge if regression is acceptable
- If 11-second site startup overhead is acceptable for the benefits of the new Playground CLI version (ImageMagick support, improved Xdebug, better error messages)
- The regression appears to be intrinsic to Playground CLI 3.0.20-3.0.21
- Consider documenting the known performance tradeoff
Option 2: Investigate and optimize before merging
- Profile the site startup path to identify the bottleneck
- Check if the regression is due to the
wordpressInstallModeimplementation - Consider reaching out to WordPress Playground maintainers
- Test intermediate versions (3.0.20 only) to isolate the issue
📋 Suggested Next Steps
- Decision: Determine if the performance tradeoff is acceptable for your users
- Testing: Manually test site startup on both macOS and Windows
- Profiling (if pursuing optimization): Use Chrome DevTools to profile the startup sequence
- Communication: If merging with known regression, update release notes
Files Changed
- ✅
package.json- 5 dependencies updated - ✅
package-lock.json- 17 packages updated, dep tree restructured - ✅
patches/@wp-playground+wordpress+3.0.21.patch- Patch migrated correctly - ✅
src/lib/wordpress-provider/playground-cli/playground-cli-provider.ts- Proper API usage - ✅
src/lib/wordpress-provider/playground-cli/playground-server-process-child.ts- Correct propagation - ✅
src/lib/sentry-sanitizer.ts- Appropriate logging - ✅
docs/design-docs/playground-cli-workflow.md- Documentation in sync
Final Verdict
Code Quality: ✅ Excellent
Security: ✅ No concerns
Compatibility: ✅ Maintained
Documentation: ✅ Up to date
Performance:
The code changes are high quality and correct. The decision to merge depends on whether the performance-functionality tradeoff aligns with your product priorities.
|
I'll analyze this and get back to you. |
|
Claude finished @dependabot[bot]'s task —— View job Code Review CompleteThis PR updates 17 WordPress Playground PHP WASM packages from 3.0.19 to 3.0.21 and migrates the codebase to use the new SummaryChanges:
Code Quality: Excellent - clean migration with proper type safety 🔴 Critical Issue: Performance RegressionThe performance tests show a significant regression in site startup time:
Impact AnalysisThe 123% regression in site startup means that restarting an existing WordPress site now takes more than twice as long (20 seconds vs 9 seconds). This directly impacts core user workflows:
Root Cause InvestigationBased on the changelog for Playground 3.0.20, the likely culprit is:
This was a complete rewrite of how PHP.wasm handles URL rewriting and Additional factors:
✅ Code Quality Assessment1. Clean API MigrationThe migration from Before (deprecated in 3.0.20): skipWordpressSetup: boolean // true = skip, false = installAfter (3.0.20+): wordpressInstallMode: WordPressInstallMode // Enum with 3 valuesBenefits:
2. Proper Logic TranslationThe boolean logic was correctly translated: // Old logic (playground-cli-provider.ts:74-76)
skipWordpressSetup: hasWordPress // If WP exists, skip setup
// New logic (same file)
wordpressInstallMode: hasWordPress
? 'install-from-existing-files-if-needed' // WP exists: only install if needed
: 'download-and-install' // No WP: download and installThis correctly preserves the intent:
The third mode 3. Consistent Updates Across CodebaseAll 4 affected files were updated correctly:
No files were missed. The changes are minimal and surgical. 4. Patch File CorrectnessThe patch for Purpose: Removes hardcoded Why Studio needs this: The empty constants object Verification: - DB_NAME: "wordpress" // Removed from line 22
+ // Empty objectThe patch applies cleanly to 3.0.21 and preserves the required behavior. Cross-Platform Compatibility ✅No cross-platform issues introduced:
Security Assessment ✅No security concerns:
Architecture Documentation ReviewPer the custom instructions, I reviewed whether architecture documentation needs updating: Files Changed in This PR:
Architecture Impact:
Conclusion:No architecture documentation updates needed. The changes are implementation details (parameter names and types) that don't affect the architectural patterns described in The existing documentation in Recommendations🚫 DO NOT MERGE - Performance Regression BlockingThe 123% site startup regression is unacceptable for production use and must be investigated before merging. Investigation Steps:1. Profile the Startup SequenceAdd timing logs to identify the bottleneck: // In playground-server-process-child.ts, startServer() function
console.time('runCLI initialization');
server = await runCLI(args);
console.timeEnd('runCLI initialization');
console.time('setAdminPassword');
await setAdminPassword(server, serverOptions.adminPassword);
console.timeEnd('setAdminPassword');2. Test Intermediate VersionsTo isolate which version introduced the regression:
3. Engage UpstreamIf regression is confirmed to be upstream:
4. Consider Alternatives
Testing ChecklistBefore merging (after performance is resolved):
What's Good ✅
What's Blocking 🔴
Files Reviewed
Verdict❌ NEEDS WORK - The code changes are excellent, but the 123% site startup regression is a blocking issue. Next Steps:
When performance is resolved, this PR will be ready to merge. |
|
Claude finished @dependabot[bot]'s task —— View job Comprehensive Code Review CompleteI've completed a thorough review of this WordPress Playground dependency update PR (3.0.19 → 3.0.21) with a focus on cross-platform compatibility, code quality, security, performance, testing, and documentation. SummaryThis PR updates 17 WordPress Playground PHP WASM packages and migrates the codebase to use the new Key Changes:
🔴 CRITICAL ISSUE: Performance Regression (BLOCKING)The performance tests reveal an unacceptable degradation in site startup time:
Impact AssessmentThe 32.2% regression in site startup means restarting an existing WordPress site now takes 10+ seconds longer. This directly impacts core user workflows:
Root Cause AnalysisBased on the Playground 3.0.20 changelog, the likely culprit is:
This was a fundamental rewrite of how PHP.wasm handles URL rewriting and Additional factors:
Recommendation: DO NOT MERGE until the performance regression is investigated and resolved. ✅ Code Quality Assessment1. Clean API MigrationThe migration from Before (3.0.19): skipWordpressSetup: boolean // true = skip installation, false = installAfter (3.0.20+): wordpressInstallMode: WordPressInstallMode // Enum with explicit installation modes
// Values: 'download-and-install' | 'install-from-existing-files' | 'install-from-existing-files-if-needed'Benefits:
Affected Files ( wordpressInstallMode: hasWordPress
? 'install-from-existing-files-if-needed' // WordPress exists: only install if needed
: 'download-and-install' // Empty directory: download and installThis correctly preserves the original intent:
2. Consistent Updates Across CodebaseAll affected files were updated correctly with no inconsistencies:
No files were missed. The changes are surgical and minimal. 3. Patch File CorrectnessFile: The patch removes the hardcoded - const i = {
- DB_NAME: "wordpress" // ❌ Hardcoded database name removed
- };
+ const i = {}; // ✅ Empty constants objectWhy this matters: The empty constants object ✅ Verdict: Patch correctly maintains the required behavior for Studio. 🛡️ Cross-Platform Compatibility (macOS & Windows)Status: ✅ EXCELLENT - No cross-platform issues identified Path Handling✅ All path operations use // Examples from playground-cli-provider.ts
nodePath.join(getServerFilesPath(), this.SQLITE_FILENAME) // Line 110
nodePath.join(getResourcesPath(), 'wp-files', 'latest', 'wordpress') // Line 188
nodePath.join(path, 'wp-content', 'database', '.ht.sqlite') // Line 234No Platform-Specific Code✅ No new Process Management✅ Uses existing Line Endings✅ No changes to files that would affect CRLF/LF handling 🔒 Security Assessment (OWASP Top 10)Status: ✅ NO SECURITY CONCERNS Dependency Security✅ All packages from trusted WordPress Playground repository Input Validation & Sanitization✅ Sentry Sanitization Maintained ( wordpressInstallMode: args.wordpressInstallMode, // New field properly includedThe sanitizer correctly includes the new field in telemetry data sent to Sentry (safe metadata for debugging). Secrets Management✅ No hardcoded secrets introduced Electron Security✅ No changes to IPC validation ( SQL Injection & XSS✅ No new database queries or user input handling 🚀 Performance ReviewKnown Regression (see critical issue above)
Code-Level Performance✅ No inefficient algorithms introduced Bundle Size ImpactThe dependency updates add the following to the bundle:
Recommendation: If ImageMagick is not actively used by Studio, consider requesting an upstream flag to disable it. 🧪 Testing CoverageAutomated Tests✅ No test files require updates - Grep search confirms only source files reference the new API Missing Test Coverage
// Example test (not required for this PR, but would improve coverage)
describe('PlaygroundCliProvider', () => {
it('should use install-from-existing-files-if-needed when WordPress exists', () => {
// Test hasWordPress === true case
});
it('should use download-and-install when directory is empty', () => {
// Test hasWordPress === false case
});
});Manual Testing NeededBefore merging (after performance is resolved):
E2E Tests✅ No changes needed to existing E2E tests (behavior unchanged) 📚 Documentation ReviewUpdated Documentation✅ - skipWordPressSetup: true
+ wordpressInstallMode: install-from-existing-files-if-neededThe workflow diagram accurately reflects the code changes in both the site creation and startup flows. Architecture Documentation (CLAUDE.md)✅ No architecture updates needed - Per CLAUDE.md guidelines, I reviewed whether architecture documentation requires updates: Changes Review:
Conclusion: These are implementation details (parameter names/types) that don't affect the architectural patterns described in CLAUDE.md. The WordPress Provider abstraction remains unchanged. Code Comments✅ Existing comments remain accurate Missing Documentation### Dependency Updates
- Updated WordPress Playground packages from 3.0.19 to 3.0.21
- Migrated from deprecated `skipWordPressSetup` to `wordpressInstallMode` API
- Note: Performance regression in site startup time (to be addressed)🏗️ Code Quality Best PracticesTypeScript Best Practices✅ Proper type imports: Clean Code Principles✅ Single Responsibility: Each file has a clear purpose (no scope creep) Error Handling✅ Existing error handling patterns preserved Readability✅ Variable names are clear and descriptive ( 📋 Detailed File-by-File Review1.
|
| Risk Category | Level | Mitigation |
|---|---|---|
| Performance Regression | 🔴 CRITICAL | Investigate root cause, profile startup sequence, engage upstream |
| Breaking Changes | 🟢 LOW | API migration handled correctly, backward compatible via enum |
| Security | 🟢 LOW | No new attack surface, dependencies from trusted source |
| Cross-Platform | 🟢 LOW | No platform-specific code, path handling correct |
| Data Loss | 🟢 LOW | No database migrations, file operations unchanged |
🎯 Recommendations
🚫 DO NOT MERGE (Blocking Issues)
The 32.2% site startup regression is unacceptable for production use and must be investigated before merging.
Investigation Steps
1. Profile the Startup Sequence
Add timing logs to identify the bottleneck:
// In playground-server-process-child.ts, startServer() function (line 150)
console.time('Total server startup');
console.time('runCLI initialization');
server = await runCLI(args);
console.timeEnd('runCLI initialization');
console.time('Set admin password');
await setAdminPassword(server, serverOptions.adminPassword);
console.timeEnd('Set admin password');
console.timeEnd('Total server startup');2. Test Intermediate Versions
To isolate which version introduced the regression:
- Test with 3.0.20 only (the version documented in PR description)
- Compare against 3.0.19 (current baseline)
- Test 3.0.21 separately
3. Engage Upstream
If regression is confirmed to be in WordPress Playground:
- Open issue at WordPress/wordpress-playground
- Reference PR #2864 (URL rewriting overhaul)
- Include profiling data and performance impact measurements
- Ask about ImageMagick extension disable flag
4. Consider Alternatives
- Stay on 3.0.19 until performance improves
- Wait for 3.0.22 with potential performance fixes
- Add loading indicators to manage user expectations during longer startup
- Feature flag the new version for gradual rollout
✅ When Performance is Resolved
Once the performance regression is addressed:
-
Run Full Test Suite
npm test npm run e2e npm run test:metrics -
Manual Cross-Platform Testing
- Test all scenarios on both macOS and Windows
- Verify empty directory and existing WordPress workflows
-
Update Release Notes
### v1.6.4 - Updated WordPress Playground packages from 3.0.19 to 3.0.21 - Improved WordPress installation API with explicit installation modes - Added ImageMagick support for image processing - Enhanced Xdebug integration for debugging
-
Monitor Sentry
- Watch for errors related to
wordpressInstallMode - Verify telemetry is being collected correctly
- Watch for errors related to
✅ What's Good
- Code Quality: Excellent API migration with proper type safety
- Consistency: All affected files updated correctly (no missed spots)
- Documentation: Workflow diagrams kept in sync with code
- Security: No concerns identified, sanitization maintained
- Cross-Platform: No compatibility issues introduced
- Type Safety: Enum-based API is more robust than boolean flag
- Future-Proof: Extensible design supports new installation modes
🔴 What's Blocking
- CRITICAL: 10+ second increase in site startup time (32.2% regression)
- CRITICAL: 22+ second increase in site creation time (24.9% regression)
- Root cause unknown (likely URL rewriting overhaul in Playground 3.0.20)
- Unacceptable performance degradation for production environment
Summary Table
| Category | Status | Notes |
|---|---|---|
| Code Quality | ✅ Excellent | Clean API migration, type-safe, well-structured |
| Cross-Platform | ✅ Excellent | No platform-specific issues |
| Security | ✅ No Concerns | Trusted dependencies, proper sanitization |
| Documentation | ✅ Complete | All docs updated correctly |
| Testing | ✅ Adequate | Existing tests sufficient, manual testing needed |
| Performance | 🔴 CRITICAL | 32.2% site startup regression MUST be resolved |
Final Verdict
❌ NEEDS WORK - The code changes are high quality and correct, but the 32.2% site startup regression is a blocking issue that prevents merging.
Action Items
⚠️ Profile startup sequence to identify bottleneck⚠️ Test 3.0.20 vs 3.0.21 in isolation⚠️ Engage WordPress Playground maintainers about performance⚠️ Consider staying on 3.0.19 or waiting for 3.0.22
When to Merge
This PR will be ready to merge when:
- Site startup regression is resolved or deemed acceptable
- Full testing completed on both macOS and Windows
- Team has decided whether the new features justify the performance cost
|
Dependabot tried to update this pull request, but something went wrong. We're looking into it, but in the meantime you can retry the update by commenting |
|
Claude finished @dependabot[bot]'s task —— View job Code Review CompleteSummaryThis PR updates 17 WordPress Playground PHP WASM packages from 3.0.19 to 3.0.21 and migrates the codebase to use the new ✅ Code Quality AssessmentClean API MigrationThe migration from Changes:
Benefits:
Logic Translation: // Old: skipWordpressSetup: hasWordPress
// New:
wordpressInstallMode: hasWordPress
? 'install-from-existing-files-if-needed' // Only install if needed
: 'download-and-install' // Download and install freshThis correctly preserves the original intent while being more explicit. 🔒 Security ReviewStatus: ✅ NO CONCERNS
🛡️ Cross-Platform CompatibilityStatus: ✅ EXCELLENT
📋 Patch File AnalysisFile: The patch removes the hardcoded - const i = { DB_NAME: "wordpress" };
+ const i = {};Why this matters: The empty constants object allows WordPress Playground to skip database name configuration, which is essential for Studio's SQLite-based setup. Without this patch, Studio's database integration would fail. ✅ Verdict: Patch correctly maintains required behavior. 🏗️ Architecture Documentation ReviewPer the custom instructions, I reviewed whether Analysis:Files Changed:
Architecture Patterns:
Conclusion:❌ No architecture documentation updates needed. The changes are implementation details (parameter names and types) that don't affect the architectural patterns described in The design documentation in
|
| Review Date | Site Startup Regression | Site Creation Regression |
|---|---|---|
| Nov 10 | +1,084ms (+8.1%) | +2,142ms (+12.5%) |
| Nov 11 | +11,175ms (+123.3%) | +1,071ms (+3.5%) |
| Nov 12 | +10,188ms (+32.2%) | +22,421ms (+24.9%) |
Root Cause (per changelog):
- Major URL rewriting overhaul in Playground 3.0.20 (#2864)
- ImageMagick extension adding initialization overhead (#2834)
Current Status:
No performance test results are available for the latest commit (30debb4). The most recent performance test in the comments is from an older commit (63ae6ae).
Recommendation:
- The regression persists
- The regression has been mitigated
- The performance tradeoff is acceptable for the new features (ImageMagick, improved Xdebug, better error messages)
📦 Dependency Updates
Updated Packages:
@php-wasm/node: 3.0.19 → 3.0.21@php-wasm/scopes: 3.0.19 → 3.0.21@php-wasm/universal: 3.0.19 → 3.0.21@wp-playground/blueprints: 3.0.19 → 3.0.21@wp-playground/cli: 3.0.19 → 3.0.21@wp-playground/wordpress: 3.0.14 → 3.0.21
Lock File Changes:
- 17 total packages updated (including transitive dependencies)
@php-wasm/progressmoved from nested to root node_modules (good for deduplication)- No conflicting peer dependencies ✅
📝 What Changed in Playground 3.0.20-3.0.21
Version 3.0.20:
- --wordpress-install-mode flag (#2803) - New API this PR migrates to
- ImageMagick extension (#2834) - Image processing capabilities
- Major URL rewriting overhaul (#2864) - Complete rewrite of
$_SERVERhandling - Xdebug improvements (#2869) - Better error messaging
Version 3.0.21:
✅ Strengths
- Type Safety: Proper enum-based API improves compile-time checking
- Code Quality: Clean migration with consistent updates across all files
- Documentation: Workflow diagrams updated to match code
- Security: No concerns identified, proper sanitization maintained
- Cross-Platform: No platform-specific issues introduced
- Future-Proof: Extensible design supports new installation modes
🎯 Recommendations
Before Merging:
-
✅ Run Performance Tests on current commit (30debb4)
- Compare site startup, site creation, and editor load times
- Determine if regression is acceptable for new features
- Document performance tradeoff in release notes if needed
-
✅ Manual Testing (after performance validation):
- Test site creation from empty directory
- Test site creation from existing WordPress files
- Test site restart
- Verify on both macOS and Windows
-
✅ Monitor After Merge:
- Watch Sentry for errors related to
wordpressInstallMode - Monitor user feedback on startup times
- Consider filing upstream issues if performance is problematic
- Watch Sentry for errors related to
Optional Improvements:
- Add unit tests for the new
wordpressInstallModeparameter (not blocking) - Document the API migration in changelog/release notes
Final Verdict
🟡 Conditional Approval - The code changes are high quality and correct, but the performance impact must be assessed before merging.
What's Good:
- ✅ Excellent code quality with proper type safety
- ✅ Clean API migration with consistent updates
- ✅ Documentation in sync with code
- ✅ No security or cross-platform concerns
- ✅ Architecture patterns unchanged (no docs update needed)
What Needs Verification:
⚠️ Performance regression - Previous reviews showed 32-123% site startup slowdown⚠️ Current performance - No test results for latest commit⚠️ Risk assessment - Determine if tradeoff is acceptable
Decision Point:
This PR should be merged only if:
- Performance tests show acceptable results on current commit, OR
- Team has decided the new features justify the performance cost
Files Reviewed
| File | Status | Notes |
|---|---|---|
package.json |
✅ | Dependencies updated correctly |
package-lock.json |
✅ | Lock file synchronized |
playground-cli-provider.ts |
✅ | Clean API migration |
playground-server-process-child.ts |
✅ | Correct parameter propagation |
sentry-sanitizer.ts |
✅ | Telemetry properly updated |
playground-cli-workflow.md |
✅ | Documentation accurate |
@wp-playground+wordpress+3.0.21.patch |
✅ | Patch maintains required behavior |
bcotrim
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tested different site creation scenarios:
latestWordPress version- specific WordPress version
- offline (
latest) - from a folder with WordPress
6.8unzipped files
Didn't find any issues.
LGTM 👍
There is some code cleanup we can do, but I'm happy to address it with STU-873.
|
@dependabot rebase |
|
Looks like this PR has been edited by someone other than Dependabot. That means Dependabot can't rebase it - sorry! If you're happy for Dependabot to recreate it from scratch, overwriting any edits, you can request |
…arn/wp-playground-php-wasm-af3fda6833
…arn/wp-playground-php-wasm-af3fda6833

Bumps the wp-playground-php-wasm group with 17 updates:
3.0.193.0.203.0.193.0.203.0.193.0.203.0.193.0.203.0.193.0.203.0.193.0.203.0.193.0.203.0.193.0.203.0.193.0.203.0.193.0.203.0.193.0.203.0.193.0.203.0.193.0.203.0.193.0.203.0.193.0.203.0.193.0.203.0.193.0.20Updates
@php-wasm/nodefrom 3.0.19 to 3.0.20Changelog
Sourced from
@php-wasm/node's changelog.Commits
8fb1044v3.0.209db2812[PHP.wasm] ImageMagick extension (#2834)897f782[PHP.wasm] Major overhaul of URL rewriting and setting $_SERVER variables (#2...347e136Refresh WordPress Nightlyc91de71[Docs] Add xdebug testing page (#2840)5c6a849[CLI] Make messaging clearer for errors and Xdebug IDE integration (#2869)11fb6b1Refresh SQLite integration plugin7a93a68Refresh WordPress Nightlycae150a[CLI] Add --wordpress-install-mode flag (#2803)2c0cf55Recompile WordPress major and beta versionsUpdates
@php-wasm/scopesfrom 3.0.19 to 3.0.20Changelog
Sourced from
@php-wasm/scopes's changelog.Commits
8fb1044v3.0.209db2812[PHP.wasm] ImageMagick extension (#2834)897f782[PHP.wasm] Major overhaul of URL rewriting and setting $_SERVER variables (#2...347e136Refresh WordPress Nightlyc91de71[Docs] Add xdebug testing page (#2840)5c6a849[CLI] Make messaging clearer for errors and Xdebug IDE integration (#2869)11fb6b1Refresh SQLite integration plugin7a93a68Refresh WordPress Nightlycae150a[CLI] Add --wordpress-install-mode flag (#2803)2c0cf55Recompile WordPress major and beta versionsUpdates
@php-wasm/universalfrom 3.0.19 to 3.0.20Changelog
Sourced from
@php-wasm/universal's changelog.Commits
8fb1044v3.0.209db2812[PHP.wasm] ImageMagick extension (#2834)897f782[PHP.wasm] Major overhaul of URL rewriting and setting $_SERVER variables (#2...347e136Refresh WordPress Nightlyc91de71[Docs] Add xdebug testing page (#2840)5c6a849[CLI] Make messaging clearer for errors and Xdebug IDE integration (#2869)11fb6b1Refresh SQLite integration plugin7a93a68Refresh WordPress Nightlycae150a[CLI] Add --wordpress-install-mode flag (#2803)2c0cf55Recompile WordPress major and beta versionsUpdates
@wp-playground/blueprintsfrom 3.0.19 to 3.0.20Updates
@wp-playground/clifrom 3.0.19 to 3.0.20Changelog
Sourced from
@wp-playground/cli's changelog.Commits
8fb1044v3.0.209db2812[PHP.wasm] ImageMagick extension (#2834)897f782[PHP.wasm] Major overhaul of URL rewriting and setting $_SERVER variables (#2...347e136Refresh WordPress Nightlyc91de71[Docs] Add xdebug testing page (#2840)5c6a849[CLI] Make messaging clearer for errors and Xdebug IDE integration (#2869)11fb6b1Refresh SQLite integration plugin7a93a68Refresh WordPress Nightlycae150a[CLI] Add --wordpress-install-mode flag (#2803)2c0cf55Recompile WordPress major and beta versionsUpdates
@wp-playground/wordpressfrom 3.0.19 to 3.0.20Changelog
Sourced from
@wp-playground/wordpress's changelog.Commits
8fb1044v3.0.209db2812[PHP.wasm] ImageMagick extension (#2834)897f782[PHP.wasm] Major overhaul of URL rewriting and setting $_SERVER variables (#2...347e136Refresh WordPress Nightlyc91de71[Docs] Add xdebug testing page (#2840)5c6a849[CLI] Make messaging clearer for errors and Xdebug IDE integration (#2869)11fb6b1Refresh SQLite integration plugin7a93a68Refresh WordPress Nightlycae150a[CLI] Add --wordpress-install-mode flag (#2803)2c0cf55Recompile WordPress major and beta versionsUpdates
@php-wasm/fs-journalfrom 3.0.19 to 3.0.20Changelog
Sourced from
@php-wasm/fs-journal's changelog.Commits
8fb1044v3.0.209db2812[PHP.wasm] ImageMagick extension (#2834)897f782[PHP.wasm] Major overhaul of URL rewriting and setting $_SERVER variables (#2...347e136Refresh WordPress Nightlyc91de71[Docs] Add xdebug testing page (#2840)5c6a849[CLI] Make messaging clearer for errors and Xdebug IDE integration (#2869)11fb6b1Refresh SQLite integration plugin7a93a68Refresh WordPress Nightlycae150a[CLI] Add --wordpress-install-mode flag (#2803)2c0cf55Recompile WordPress major and beta versionsUpdates
@php-wasm/loggerfrom 3.0.19 to 3.0.20Changelog
Sourced from
@php-wasm/logger's changelog.Commits
8fb1044v3.0.209db2812[PHP.wasm] ImageMagick extension (#2834)897f782[PHP.wasm] Major overhaul of URL rewriting and setting $_SERVER variables (#2...347e136Refresh WordPress Nightlyc91de71[Docs] Add xdebug testing page (#2840)5c6a849[CLI] Make messaging clearer for errors and Xdebug IDE integration (#2869)11fb6b1Refresh SQLite integration plugin7a93a68Refresh WordPress Nightlycae150a[CLI] Add --wordpress-install-mode flag (#2803)2c0cf55Recompile WordPress major and beta versionsUpdates
@php-wasm/node-polyfillsfrom 3.0.19 to 3.0.20Changelog
Sourced from
@php-wasm/node-polyfills's changelog.Commits
8fb1044v3.0.209db2812[PHP.wasm] ImageMagick extension (#2834)897f782[PHP.wasm] Major overhaul of URL rewriting and setting $_SERVER variables (#2...347e136Refresh WordPress Nightlyc91de71[Docs] Add xdebug testing page (#2840)5c6a849[CLI] Make messaging clearer for errors and Xdebug IDE integration (#2869)11fb6b1Refresh SQLite integration plugin7a93a68Refresh WordPress Nightlycae150a[CLI] Add --wordpress-install-mode flag (#2803)2c0cf55Recompile WordPress major and beta versionsUpdates
@php-wasm/stream-compressionfrom 3.0.19 to 3.0.20Changelog
Sourced from
@php-wasm/stream-compression's changelog.Commits
8fb1044v3.0.209db2812[PHP.wasm] ImageMagick extension (#2834)897f782[PHP.wasm] Major overhaul of URL rewriting and setting $_SERVER variables (#2...347e136Refresh WordPress Nightlyc91de71[Docs] Add xdebug testing page (#2840)5c6a849[CLI] Make messaging clearer for errors and Xdebug IDE integration (#2869)11fb6b1Refresh SQLite integration plugin7a93a68Refresh WordPress Nightlycae150a[CLI] Add --wordpress-install-mode flag (#2803)2c0cf55Recompile WordPress major and beta versionsUpdates
@php-wasm/progressfrom 3.0.19 to 3.0.20Changelog
Sourced from
@php-wasm/progress's changelog.Commits
8fb1044v3.0.209db2812[PHP.wasm] ImageMagick extension (#2834)897f782[PHP.wasm] Major overhaul of URL rewriting and setting $_SERVER variables (#2...347e136Refresh WordPress Nightlyc91de71[Docs] Add xdebug testing page (#2840)5c6a849[CLI] Make messaging clearer for errors and Xdebug IDE integration (#2869)11fb6b1Refresh SQLite integration plugin7a93a68Refresh WordPress Nightlycae150a[CLI] Add --wordpress-install-mode flag (#2803)2c0cf55Recompile WordPress major and beta versionsUpdates
@php-wasm/utilfrom 3.0.19 to 3.0.20Updates
@php-wasm/webfrom 3.0.19 to 3.0.20Changelog
Sourced from
@php-wasm/web's changelog.Commits
8fb1044v3.0.209db2812[PHP.wasm] ImageMagick extension (#2834)897f782[PHP.wasm] Major overhaul of URL rewriting and setting $_SERVER variables (#2...347e136Refresh WordPress Nightlyc91de71[Docs] Add xdebug testing page (#2840)5c6a849[CLI] Make messaging clearer for errors and Xdebug IDE integration (#2869)11fb6b1Refresh SQLite integration plugin7a93a68Refresh WordPress Nightlycae150a[CLI] Add --wordpress-install-mode flag (#2803)2c0cf55Recompile WordPress major and beta versionsUpdates
@php-wasm/web-service-workerfrom 3.0.19 to 3.0.20Changelog
Sourced from
@php-wasm/web-service-worker's changelog.Commits
8fb1044v3.0.209db2812[PHP.wasm] ImageMagick extension (#2834)897f782[PHP.wasm] Major overhaul of URL rewriting and setting $_SERVER variables (#2...347e136Refresh WordPress Nightlyc91de71[Docs] Add xdebug testing page (#2840)5c6a849[CLI] Make messaging clearer for errors and Xdebug IDE integration (#2869)11fb6b1Refresh SQLite integration plugin7a93a68Refresh WordPress Nightlycae150a[CLI] Add --wordpress-install-mode flag (#2803)2c0cf55Recompile WordPress major and beta versionsUpdates
@php-wasm/xdebug-bridgefrom 3.0.19 to 3.0.20Changelog
Sourced from
@php-wasm/xdebug-bridge's changelog.Commits
8fb1044v3.0.209db2812[PHP.wasm] ImageMagick extension (#2834)897f782[PHP.wasm] Major overhaul of URL rewriting and setting $_SERVER variables (#2...347e136Refresh WordPress Nightlyc91de71[Docs] Add xdebug testing page (#2840)5c6a849[CLI] Make messaging clearer for errors and Xdebug IDE integration (#2869)11fb6b1Refresh SQLite integration plugin7a93a68Refresh WordPress Nightlycae150a[CLI] Add --wordpress-install-mode flag (#2803)2c0cf55Recompile WordPress major and beta versionsUpdates
@wp-playground/commonfrom 3.0.19 to 3.0.20Commits
Updates
@wp-playground/storagefrom 3.0.19 to 3.0.20Changelog
Sourced from
@wp-playground/storage's changelog.Commits
8fb1044v3.0.209db2812[PHP.wasm] ImageMagick extension (#2834)897f782[PHP.wasm] Major overhaul of URL rewriting and setting $_SERVER variables (#2...347e136Refresh WordPress Nightlyc91de71[Docs] Add xdebug testing page (#2840)5c6a849[CLI] Make messaging clearer for errors and Xdebug IDE integration (#2869)11fb6b1Refresh SQLite integration plugin7a93a68Refresh WordPress Nightlycae150a[CLI] Add --wordpress-install-mode flag (#2803)2c0cf55Recompile WordPress major and beta versionsDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot mergewill merge this PR after your CI passes on it@dependabot squash and mergewill squash and merge this PR after your CI passes on it@dependabot cancel mergewill cancel a previously requested merge and block automerging@dependabot reopenwill reopen this PR if it is closed@dependabot closewill close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore <dependency name> major versionwill close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)@dependabot ignore <dependency name> minor versionwill close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)@dependabot ignore <dependency name>will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)@dependabot unignore <dependency name>will remove all of the ignore conditions of the specified dependency@dependabot unignore <dependency name> <ignore condition>will remove the ignore condition of the specified dependency and ignore conditions