Release - #534
Merged
Merged
Conversation
…de lifecycle Selecting an existing published page as the maintenance page no longer leaves it private (404 for visitors) after maintenance mode is disabled or the plugin is deactivated. The page's original status and template are now recorded in post meta when the page is selected (or on first enable, for pages selected before this fix) and restored when maintenance mode is disabled and on plugin deactivation. Pages with no recorded state are left untouched instead of being forced private. Fixes #523 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…plate Applying a gallery template while an existing site page was selected overwrote that page's content and forced it private. Templates are now written only to pages the plugin created (marked with _wpmm_generated); when a user-owned page is selected, it is handed back in its original state and the template lands on a newly created maintenance page. Recording a page's original state is now first-write-wins and the record is cleared on restore, so re-selecting a page the plugin already modified can no longer poison the saved original state. Also guards the Otter CSS_Handler call, which fataled on sites without Otter Blocks. Refs #523 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Skip the enable-mode page takeover when the selected page no longer exists (previously wrote orphan post meta), and reject template imports whose slug/category do not resolve to a bundled template instead of creating an empty maintenance page. Template slug and category are sanitized before being used in a filesystem path. Refs #523 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Restoring the selected page's recorded state now leaves trashed pages alone (trashing is always user intent; the plugin never trashes), and enabling maintenance mode with a trashed page selected records nothing, so untrashing the page later cannot snap it back to trash. Refs #523 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Selecting an existing published page via the real AJAX handler, enabling and disabling maintenance mode must leave the page public with its original content and template. Verified to fail against the unfixed code. Refs #523 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The job installed the latest WordPress test suite (currently 7.0.1, which requires PHP 7.4+) on PHP 7.2, so the suite aborted before running any test. The phpunit:7.5.20 tool pin was unused: composer run-script resolves vendor/bin/phpunit from the lockfile. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…mically Addresses the Copilot review on #524: - select_page() restores the previously selected page before switching away from it, so the old page never keeps the maintenance template - restoring a trashed page keeps it in the trash but hands back the template and clears the record, so untrashing brings it back clean - recording claims the record with add_post_meta( ..., true ) so a racing request cannot capture the plugin-modified state as original Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Contributor
…ve-selected-page-state # Conflicts: # .github/workflows/test-php.yml
wp_insert_post() without the wp_error flag returns an int, so the instanceof WP_Error guard was dead code; the page-state helpers also document their void return now. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Addresses the follow-up Copilot review on #524: - the plugin marks the publish it applies to a private page, and restore only reverts the status while the page still carries that plugin-made publish; a draft/private/trash the user chose in the meantime wins - the original state lives in a single first-write-wins meta value, so a racing request can neither poison the record nor observe half of it - a maintenance template carried over from an old release is recorded as no template, so restore removes it instead of making it permanent Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The active-mode constructor used to publish the selected page on every request it found it private, silently undoing a deliberate user change and mislabeling that publish as the original takeover. Publishing is now gated on the recorded original status being private and on the plugin not having published already, so it happens exactly once per takeover. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…mplate The import reused the creation post_arr, whose private status unpublished a generated page maintenance mode had already made public — and since the plugin's publish is one-shot now, nothing ever republished it, leaving visitors on a 404 instead of the maintenance screen. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The Design form posts page_id too, so a plain (non-AJAX) save could switch the selection without restoring the old page or recording the new one. Both writers now share switch_selected_page(). The template import also hands back a trashed selection now, instead of orphaning its record and maintenance template. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Resetting design replaced the whole tab with defaults, dropping page_id without restoring the page — the last selection writer outside the take-over lifecycle. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…state fix: preserve selected page state across the maintenance mode lifecycle
Improved bot avatar and chat layout on mobile
Reset template import status on request failure
Removed trailing comma for PHP 7.1 compatibility
The automated master -> development sync failed with a merge conflict after the themeisle-sdk bump landed on master (PR #533). Resolved by keeping development's composer.lock, taking only the themeisle-sdk entry from master (3.3.56 -> 3.3.58); development's dev-dependency set is unchanged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sync branch: merge master into development
Contributor
|
🎉 This PR is included in version 2.6.23 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
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
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.
Linked issues
This release will close the following issues once merged:
Public changelog