-
Notifications
You must be signed in to change notification settings - Fork 385
[website] Personal Playground: Add Health Check recovery #3157
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
Open
akirk
wants to merge
19
commits into
persistent/enable-persistent-deployment
Choose a base branch
from
persistent/health-check-recovery
base: persistent/enable-persistent-deployment
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
[website] Personal Playground: Add Health Check recovery #3157
akirk
wants to merge
19
commits into
persistent/enable-persistent-deployment
from
persistent/health-check-recovery
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2899417 to
c278f6e
Compare
fcb299c to
5dfd325
Compare
5dfd325 to
de5b08e
Compare
Add infrastructure for persistent WordPress sites that survive browser sessions: - Add virtual:website-defaults Vite plugin for build-time configuration (defaultStorageType, defaultSiteSlug, defaultBlueprintUrl) - Create PersistentBrowserChrome component with separate styling - Create PersistentPlaygroundOverlay with "More Playgrounds" link and "Start over" delete functionality - Add persistent-playground module for blueprint loading - Track lastUrl in SiteMetadata to restore user position on return - Auto-login for persistent sites when returning - Persist site metadata to OPFS on creation - Run both dev servers in parallel (port 5400 standard, 5401 persistent) - Use "default" site slug to keep URLs clean This is a foundational PR for persistent deployment. Multi-tab coordination, pending URL blueprints, and other advanced features will be added in subsequent PRs.
Enable applying blueprints to existing persistent sites via URL params like ?plugin=friends or ?blueprint-url=data:... - Add PendingUrlBlueprint interface and state to slice-sites - Add resolveUrlParamsForExistingSite to detect actionable URL params - Store pending blueprint when returning to existing default site - Merge pending blueprint steps into boot blueprint - Clear pending blueprint and URL params after successful boot
90b5665 to
eeb8f50
Compare
de5b08e to
1baf5fd
Compare
- Rename personal-* folders and components to personalwp-* - Rename variables: defaultSiteSlug -> personalWPSiteSlug, isPersonalMode -> isPersonalWPMode, shouldUsePersonalBlueprint -> shouldUsePersonalWPBlueprint - Rename PendingUrlBlueprint -> BlueprintResolvedFromUrl with siteSlug -> targetSiteSlug for clarity - Apply lastUrl persistence to all sites (not just storage !== none) - Restrict URL param clearing to PersonalWP only and also clear hash
This ensures the PersonalWP components are not included in the playground.wordpress.net bundle, only loaded when needed.
Add BootSiteClientOptions interface with: - clearUrlAfterBlueprintApplied: clears URL params and hash after boot - autoLogin: enables auto-login when WordPress is already installed This removes the implicit dependency on personalWPSiteSlug inside the function and makes the behavior explicit at the call site.
- Mode: personal -> personalwp, personal-development -> personalwp-development - Blueprint: personal-boot.json -> personalwp-boot.json - Cache dir: packages-playground-website-personal -> packages-playground-website-personalwp - Config: personalWebsiteDevServerPort -> personalwpWebsiteDevServerPort
1baf5fd to
9676f6f
Compare
Keep personal-wp as a fully separate package without modifying the original playground-website codebase.
- Remove unused opfsMountDescriptor variable in site-info-panel - Reorder imports to top of file in vite.config.ts
When a plugin breaks the persistent WordPress site, users can now recover by installing the Health Check plugin in troubleshooting mode. - Add health-check-recovery.ts with blueprint that installs Health Check and an MU-plugin to bypass hash verification - Add Recovery section to PersistentPlaygroundOverlay with toggle button - getBlueprintUrl encodes blueprints as base64 data URLs for easy sharing
6192b58 to
30ade19
Compare
2a32bba to
fd63f4c
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Based on #3155.
Motivation for the change, related issues
When a plugin breaks a Personal Playground WordPress site, users need a way to recover. This adds a Health Check recovery option that enables troubleshooting mode, disabling all plugins so users can identify the problematic one.
Screenshots
Implementation details
health-check-recovery.ts: Blueprint that installs Health Check plugin and an MU-plugin to bypass hash verification, enabling troubleshooting modegetBlueprintUrl(): Encodes blueprints as base64 data URLs for easy sharingPersistentPlaygroundOverlaywith expandable "Install Health Check & Troubleshoot" buttonTesting Instructions (or ideally a Blueprint)
npm run devand visit http://127.0.0.1:5401