= 0.8.20 =

* Replaces the large signed external directory-index implementation with a direct resumable listing, so Get no longer stops because ordinary source files were added, removed, or changed while it was running; a later Get converges changes that sort before an already-saved cursor.
* Continues Get from its saved checkpoint and review choices when possible, and uses production data for differences that cannot be listed instead of blocking the entire refresh.
* Removes unlimited automatic AJAX retries for Get, import, backup, and export requests. A failed request now returns control to the administrator, while the existing server checkpoint remains available for the next request.
* Removes WordPress database-version-number matching as a blanket PUSH prerequisite and lets production database backups run independently of stale or unrelated staging connection settings.
* Removes unused database APIs and state flags, duplicate connection and pre-lock checks, and heuristic PHP source scanning that could deactivate otherwise valid restored plugins. Custom post types supplied through the existing review filter are no longer discarded.
* Keeps production and staging path containment, symlink rejection, database identity and prefix isolation, foreign-key handling, staging-only file exclusions, managed backups, atomic replacement, and rollback recovery in place.

= 0.8.19 =

* Lowers the minimum required PHP version from 7.4 to 7.0 after the PHP files passed PHP 7.0 syntax and compatibility checks.

= 0.8.18 =

* Fixes an interrupted Get that could repeatedly redirect to review and never finish.
* Keeps multi-request Get progress notices, the plugin's own Live Push license and operation state, and known transient and session-cache prefixes out of the source database snapshot, so large or resource-limited Get operations do not review these runtime updates as external changes or copy them to staging.
* Safely completes or rolls back partial staging database work before starting a new review.
* Preserves existing staging tables and foreign-key relationships unless their pre-Get absence is proven.
* Blocks changed file-copy settings after an interrupted Get may already have modified staging files, with regression coverage for recovery paths.
* Stops PUSH for review if a queued or active production directory changes while stale files are being removed, preventing files added after that directory was queued from being deleted as missing from staging.
* Resumes large file copies and cross-filesystem installation from persisted, bounded exact-comparison checkpoints, and finalizes an already-installed target without requiring the staging source to remain present.
* Authenticates disk-backed PUSH deletion plans and queues, revalidates file and directory identities immediately before removal, bounds malformed record reads, and preserves entries created after planning.
* Stops resumable PUSH for review when production content changes between database requests, before the next table replacement starts.
* Writes production URLs, core settings, production-only active plugins, and protected runtime options into the replacement options table before a resumable PUSH swap, so Live Push can resume in the production context even if PHP stops immediately after the swap.
* Creates and revalidates a rolling per-table release safety backup before production writes, retains the pre-switch production table at each atomic database cutover, and documents the maintenance window required for destructive Full Site PUSH operations.
* Exports large databases with stable-key keyset pagination, using an owned immutable spool for tables without a safe unique key so duplicate and keyless rows resume safely; resumable Get and Push database transfers use the same keyset cursors and spools, old pagination checkpoints restart without retaining partial SQL, and tests cover 100,001 rows, composite keys, duplicate keyless rows, binary NUL, unsigned BIGINT, and interruption/resume.
* Renders all retained array-form Backup History records instead of stopping after 12 entries, keeps actionable entries ahead of historical entries, and excludes corrupt scalar-form values from display, with retention still configurable from 1 to 500 and defaulting to 100.
* Raises Import's default ZIP compression-ratio threshold from 1000 to 1100 so valid zero-filled Deflate streams near 1030:1 are not falsely rejected, while entry-count, expanded-size, per-entry and aggregate compression-ratio, free-space, metadata, duplicate-path, byte-count, and path-traversal checks all remain in force.
* Expands Full Site PUSH protection from orders and subscriptions to implemented booking, appointment, and EDD post types, preserving implemented production stock, rating, review-count, sales, and coupon-usage metadata plus related comments, and widening high-risk matching for WCS, EDD, and booking/appointment/reservation tables.
* Synchronizes the plugin-managed portable .htaccess block on installations where the WordPress core root and public root differ, rewriting the corresponding production RewriteBase without copying an arbitrary complete .htaccess file.
* Before Live PUSH, a signed safety backup captures only plugin-managed portable .htaccess blocks; rollback pins restore-start definitions, restores original order and placement, preserves unambiguous surrounding third-party additions, and stops before writing when concurrent edits are ambiguous.
* Makes the WP-CLI live release refuse --skip-managed-backup, block overlapping core or Live Push extension release operations, resume only an unfinished exact scope, and reauthorize review when required.
* Refreshes the existing core and Live Push extension PO/MO catalogs for 132 WordPress locales with the new 0.8.18 and 0.2.7 strings.

= 0.8.17 =

* Hardens migrations between root, WordPress-subdirectory, and full-subdirectory installations by rewriting URLs and filesystem paths with source-aware boundaries.
* Preserves PHPDoc, CSS comments, and Gutenberg block markup while rewriting root-relative URLs, including escaped, percent-encoded, serialized, base64, and CRLF forms.
* Improves resumable imports and history restores with owner- and context-bound state, cross-operation locking, chunk fingerprints, and reliable cleanup.
* Preserves database charset and emoji data, normalizes Windows-to-POSIX paths, and keeps staging-only files and runtime plugin aliases out of production restores.
* Rejects destructive multisite operations early and expands regression coverage for large archives, interrupted operations, and cross-topology restores.

= 0.8.16 =

* Streamlines production-versus-staging review to one choice per post, page, or taxonomy item, including metadata-only changes such as sticky-post state.
* Keeps GET and PUSH visible but disabled on staging-created sites while migration import/export, backups, and scheduled backups remain available.
* Creates and automatically downloads backup-compatible files from Migration export.
* Hardens long-running operations with request locks, atomic and resumable file handling, stale-state cleanup, and foreign-key-safe database backups.
* Bundles complete translation catalogs for all supported WordPress locales.

= 0.8.15 =

* Reorganized the admin menu into GET, PUSH, Migration, Backup, Advanced Settings, Support, and License sections.
* Split migration import/export workflows from routine backup management.
* Added a neutral WordPress.org review link that asks for an honest rating without offering any benefit.
* Added release guards to keep review-benefit wording out of the WordPress.org package.
* Updated screenshots for the reorganized admin workflow.

= 0.8.14 =

* Splits migration import/export workflows into a separate Migration menu while keeping backup creation, history, restore, and scheduling under Backups.
* Improves automatic permalink refresh reliability after restore and selected-table Push operations.
* Loads WordPress rewrite file writers before scheduled hard permalink flushes.
* Schedules Push permalink refreshes from the final database-push completion path so selected-table Push operations without the options table are covered.

= 0.8.13 =

* Refreshes WordPress permalink rewrite rules automatically after Get, Push, and restore database operations so administrators do not need to manually save Permalink settings.
* Schedules the final rewrite flush after plugins and themes have loaded, while clearing stale restored rewrite rules immediately.

= 0.8.12 =

* Runs the WordPress database upgrade routine inside database and full-site restores when the restored database version differs from the current WordPress core.
* Protects WordPress core files during backup restores so imported full-site files do not replace the running core mid-restore.
* Keeps WordPress database version options out of Get/Refresh target-option preservation so refreshed staging databases receive the copied source schema version normally.

= 0.8.11 =

* Preserved the target WordPress database version options during database and full-site restores so older imported backups do not trigger the core database update screen after restore.
* Fixed restore progress flows that could appear to fail when WordPress redirected to the database update or login screen after a completed restore.

= 0.8.10 =

* Fixed imported full-site restores that could fail with duplicate foreign key constraint names from source-prefixed tables.
* Retargeted imported foreign key constraint names to the current WordPress table prefix and added a restore-time fallback for stale imported metadata.
* Verified full-site restore flows without foreign key errors while keeping wp-admin and the front page accessible.

= 0.8.9 =

* Fixed imported full-site restores from non-current table prefixes so restored administrator roles and capabilities are available under the target WordPress prefix.
* Preserved restored active plugins by default while blocking incompatible legacy `WP_Widget` plugins that can fatal on the next request.
* Verified full-site restore behavior keeps the admin page accessible and preserves front-page media output.

= 0.8.8 =

* Fixed full-site imports with source table prefixes such as wp20210329103028_ so restores target the current WordPress tables instead of reporting success on source-prefixed tables.
* Improved full-site restore safety by validating database targets before replacing files, filtering unavailable active plugins, and leaving imported active plugins inactive until an administrator checks compatibility.
* Improved database restore throughput with larger restore chunks and SQL bulk copy when URL replacements are not needed.

= 0.8.7 =

* Cleared stale PUSH review runtime state after options-table replacement so completed release operations do not leave review state behind.
* Improved runtime cleanup for release file review state after database table operations.

= 0.8.6 =

* Added a file difference review API so production-side file changes, including theme file edits, can be detected before publishing staging.
* Added file metadata fingerprints to reviewed PUSH choices so stale review submissions are rejected before file or database copy begins.

= 0.8.5 =

* Added compatibility protection so outdated release integrations show an actionable update message instead of a fatal PUSH error.
* Improved Japanese runtime translation for staging source metadata messages that were saved before all metadata text was localized.
* Regenerated release packages so the ZIP includes the current resumable backup APIs.

= 0.8.4 =

* Prepared backup exports in small AJAX steps before download to reduce server and proxy timeout failures on larger file, database, and full-site backups.
* Fixed prepared backup export download URLs so nonce checks receive raw query strings instead of HTML-escaped URLs.
* Protected environment-specific config files such as wp-config.php, wp-config-*.php, .env files, php.ini, and web.config during backup import, restore, Get, and Push.

= 0.8.3 =

* Fixed subdirectory WordPress installs where `get_home_path()` points to the public home directory instead of the WordPress core directory.
* Ensured GET copies WordPress runtime files from the core root into the staging core root before generating the public staging entry point.
* Added a release check for home URL/site URL split layouts such as `/` plus `/wordpress`.

= 0.8.2 =

* Stabilized resumable GET file traversal so shared-hosting reruns do not skip WordPress runtime files when the staging directory is created inside the public root.
* Added a final required-file verification before GET can move on to database/config setup.
* Added safer staging public entry files and a public-root robots.txt for subdirectory WordPress installs.
* Added the derived Staging Site URL to the staging manifest for easier diagnosis.

= 0.8.1 =

* Improved GET reliability on shared hosting by keeping the refresh workflow in small AJAX requests instead of a single long admin-post request.
* Added safer resume behavior for large production file copies, including chunked directory traversal and resumable large-file copying.
* Improved resumable database copying so row chunks and final staging setup steps pause before the PHP execution time limit is reached.
* Added cache-busting versions for admin assets so the latest GET workflow script is loaded after an update.

= 0.8.0 =

* Added a pre-operation content difference review for GET and PUSH workflows so changed posts and pages can be checked before overwriting a target.
* Added merge-style choices for reviewed content, including preservation of selected target posts, pages, media items, and custom post types as content items.
* Expanded release validation with a one-shot Top-50 popular-plugin GUI gate covering 2,950 checks and 350 screenshots.
* Hardened fixed-length database URL replacement and made the release metadata check robust across Windows PowerShell, Docker, and WP-CLI.

= 0.7.14 =

* Aligned the submitted package root and Text Domain with the WordPress.org review slug.
* Replaced chunked import AJAX actions with the longer `gami_staging_sync` prefix.
* Removed runtime PHP execution-time limit changes and tightened WordPress path and URL location helpers.

= 0.7.13 =

* Added backup-style progress indicators to Get and PUSH preview forms so browser operations clearly show that work is running.
* Expanded file environment rewriting for theme templates that build include paths from `$_SERVER['DOCUMENT_ROOT']`, `CONTEXT_DOCUMENT_ROOT`, `realpath()`, `rtrim()`, and `DIRECTORY_SEPARATOR`.
* Added E2E coverage for document-root based theme include path rewrites during staging refresh and staging-to-production path replacement.

= 0.7.12 =

* Renamed the submitted plugin display name to `Easy Staging Migration by Gami`.
* Updated plugin headers, screenshots, and release validation paths for the new submission name.
* Kept the WordPress.org core focused on staging creation, development-to-staging migration, backups, restore, and release previews.

= 0.7.11 =

* Added clearer staging-to-production publishing guidance.
* Kept the WordPress.org functionality focused on staging creation, migration, backups, restore, release previews, and confirmed publishing.
* Aligned the submitted package metadata for WordPress.org review.

= 0.7.10 =

* Added Backup Create, Import, History, and Automatic pages.
* Added managed backup restore, delete, download, Keep, import, and scheduled backup workflows.
* Clarified that development/local-to-staging migration is included in the plugin.
* Added Support diagnostics, opt-in automatic error reports, and privacy policy guidance.
* Clarified that dry-run release previews do not write until live publishing is explicitly confirmed.
* Added release checks, commercial install checks, GUI validation, and WordPress.org visual assets.
