StageBridge Changelog
=======================

1.6.28
------
* Escaped remaining dashboard output values that were safe but not scanner-friendly.
* Replaced direct unserialize warning suppression with a small guarded unserialize helper.

1.6.27
------
* Replaced generated-asset warmup requests with wp_safe_remote_get(), safe URL sanitization, and default SSL verification.

1.6.26
------
* Removed the custom server-root fallback and kept site-root detection on WordPress-native get_home_path().
* Converted uninstall cleanup and custom table creation to validated/prepared SQL identifiers.
* Fixed a staging diagnostic query to use a prepared table identifier.

1.6.25
------
* Removed remaining raw local file read fallback from StageBridge helpers.
* Replaced the remaining raw directory removal path with WordPress filesystem API removal.
* Centralized local file writes through the WordPress filesystem API.

1.6.24
------
* Removed uploads-derived site-root guessing and routed root detection through WordPress-native helpers.
* Loaded the WordPress filesystem API from the detected site root.

1.6.23
------
* Replaced uploads-path root inference with WordPress-native root detection.
* Routed file copy/timestamp preservation through the WordPress filesystem API with destination-root guards.
* Converted dynamic SQL identifiers to wpdb::prepare() %i placeholders and raised the minimum WordPress version to 6.2.

1.6.22
------
* Fixed the Backups page variable mismatch that could make existing backups appear as empty.

1.6.21
------
* Fixed completed operation modals sometimes showing a partially-filled main progress bar despite reporting 100%.

1.6.20
------
* Reduced phase pill text to 9px.
* Changed phase pill progress fills to green.

1.6.19
------
* Reduced progress modal text sizes for a cleaner, denser layout.
* Removed the visible focus rectangle from the live log toggle.

1.6.18
------
* Moved the main operation progress bar above the phase pills.
* Added the current step subtitle to the progress modal header.
* Tightened phase pill sizing and made the main percentage reflect overall phase completion.

1.6.17
------
* Refined operation progress modals with compact filled phase pills.
* Collapsed live activity logs by default while keeping log lines available on demand.

1.6.16
------
* Added a final generated-file safety pass to sync, warming production/staging once and copying only missing included files after staging config is written.
* Updated the sync progress checklist to show the generated-file check and metadata steps clearly.

1.6.15
------
* Added a final generated-file check after staging config is written, copying only missing files so staging config/runtime files are not overwritten.
* Warmed production and staging front pages once during clone finalization so generated frontend assets can be created before the final missing-file copy.

1.6.14
------
* Corrected the clone progress checklist count after adding the file reconciliation step.

1.6.13
------
* Added a final clone file reconciliation pass to copy included files that appear or change after the initial clone scan, preventing late-generated frontend assets from being missed.

1.6.12
------
* Added authenticated staging file diagnostics for tracing source/staging file existence, exclusion status, baseline presence, and missing-file examples.
* Removed the broad missing-file repair attempt so diagnostics can reveal the actual cause instead of hiding the symptom.

1.6.11
------
* Reverted before release in favor of diagnostic tracing.

1.6.10
------
* Added an initial generated frontend asset repair pass for sync. Superseded by diagnostic tracing.

1.6.9
-----
* Added default-enabled safety backup checkboxes to sync and push flows so users can skip pre-operation backups for small repeat operations.
* Clarified sync and push logs when a pre-operation safety backup is skipped by user choice.

1.6.8
-----
* Moved push file-baseline manifests out of the database option row and into protected files under wp-content/uploads/stagebridge/baselines.
* Kept only compact baseline metadata in the WordPress option to avoid large database payloads on sites with many files.

1.6.7
-----
* Removed PHP timeout adjustments and aligned the minimum WordPress version with the WordPress APIs used by StageBridge.
* Tightened autologin request sanitization for Plugin Check compatibility.

1.6.6
-----
* Made URL/path replacement idempotent when the replacement contains the search value, preventing staging paths from being repeatedly expanded during clone.

1.6.5
-----
* Fixed staging diagnostic setup so the endpoint uses the configured staging path before reading debug information.

1.6.4
-----
* Fixed remaining StageBridge bootstrap references after renaming the main plugin instance function.
* Removed the old autologin token compatibility alias so public hooks and request parameters consistently use the StageBridge prefix.
* Re-verified unique StageBridge-prefixed functions, classes, constants, options, hooks, and AJAX actions.

1.6.3
-----
* Reworked runtime path handling to use StageBridge helpers built on WordPress path and uploads directory APIs.
* Replaced legacy .htpasswd SHA-1 staging password hashes with bcrypt hashes.
* Removed dynamic WordPress role option writes during staging auto-login repair.
* Replaced remaining direct local file reads with StageBridge local file helpers or wp_json_file_decode().
* Removed fopen/fwrite/fclose from SQL backup export.
* Centralized local file writes through StageBridge helper functions.
* Added strict SQL identifier validation and quoting for dynamic WordPress table and column queries used by clone, sync, push, backup, and restore.
* Removed private-build migration and data-repair compatibility routines that are not needed before public release.

1.6.2
-----
* Moved backup archives and manifests to wp-content/uploads/stagebridge/backups instead of storing runtime backup data in the plugin directory.
* Removed the automatic admin_init plugin-code sync routine that copied StageBridge code into the staging plugin folder.
* Confirmed remaining STAGEBRIDGE_PLUGIN_DIR usage is limited to loading static plugin files and admin views.

1.6.1
-----
* Clone URL replacement now shows the current table name in the progress modal instead of only the table number.
* Clone URL replacement now skips known high-volume operational log, traffic, and security scan tables that do not need staging URL conversion.
* Existing in-progress clone jobs remap their URL replacement table index safely when operational tables are filtered out.

1.6.0
-----
* Optimized URL and path replacement to select only rows that contain the old URL or path before loading and updating data.
* Sync now limits URL and path replacement to database tables that were actually cloned from production.
* Push now limits URL and path replacement to non-content tables that were safely swapped into production.

1.5.0
-----
* Added baseline-first smart file planning for push and sync. When a file baseline exists, StageBridge uses size and modified time to find changed files before copying.
* Changed new file baselines to store cheap size/mtime signatures instead of hashing every file during baseline refresh.
* Push now copies only planned changed files when a reliable baseline exists, while still detecting and skipping production file conflicts.
* Sync now copies only planned changed files when a reliable baseline exists and removes stale staging files from the same baseline.
* Smart push now narrows WordPress content-object checks to posts/pages/custom post types changed since the baseline, plus deleted content IDs.
* Custom database tables with a primary key and timestamp column now use candidate row detection before falling back to exact row-signature comparison.

1.4.4
-----
* Added individual mini progress bars for each checklist step in clone, backup, sync, and push modals.
* Kept the main operation progress bar as the overall progress indicator while each active step now has its own local progress.
* Unified pre-sync and pre-push safety backups with the main StageBridge backup directory so they appear in the backup list.
* Hardened backup-store exclusions so file compare/copy operations skip both current and legacy backup paths.

1.4.3
-----
* Renamed push and sync file phases to clarify that StageBridge compares files first and only copies changed files.
* Renamed push database phases to reflect smart row/content application rather than whole-table-only pushing.
* Improved push activity reports with checked-file counts, changed-file counts, preserved content, conflicts, and untracked-table skips.

1.4.2
-----
* Removed optional author website metadata because the previous URL returned a 404 during review.
* Changed author display name to Daniel Emunot.
* Moved clone and backup file-list job payloads out of transients and into protected temporary files under uploads/stagebridge/jobs.

1.4.1
-----
* Added object-level smart push for WordPress content so pages, posts, and custom post types are compared independently instead of only at table level.
* Content-object push now evaluates each post together with its post meta and term relationships, preserving unrelated production edits while allowing non-conflicting staging edits through.
* Revision and auto-draft rows are ignored during object-level push to avoid noisy conflicts from WordPress autosaves and edit history.
* New row/object conflict baselines are created during clone, sync, and push baseline refreshes. Run a fresh sync after updating to create the new object-level baseline before relying on this protection.

1.3.88
------
* Replaced the generated autologin bridge file with a WordPress admin-post endpoint.
* Moved StageBridge backup and autologin storage under the uploads directory.
* Removed filesystem memory-limit overrides and normalized root path handling in flagged file-operation paths.

1.3.87
------
* Reset temporary server error retry counters after successful recovered requests across clone, sync, push, backup, restore, and delete operations.

1.3.86
------
* Added dynamic root-level exclusions so backups, clone, sync, push, previews, and baselines skip unrelated folders inside the WordPress root.
* Excluded common archive/export files such as ZIP, TAR, GZ, SQL, and WPress files by default.
* Updated file selection summaries to use the same automatic exclusions as operations.

1.3.85
------
* Hid the staging folder field when creating a subdomain staging environment.
* Reused the subdomain prefix as the staging document-root folder name internally.

1.3.84
------
* Fixed the Create Staging dashboard button so it opens the modal reliably.

1.3.83
------
* Replaced the inline first-time staging form with a centered create-staging modal.
* Added a segmented Subfolder/Subdomain toggle for staging creation.

1.3.82
------
* Added support for creating staging environments as either a subfolder or a subdomain.
* Added staging URL type and subdomain settings, locked after staging is created.
* Updated clone, sync, push, backups, autologin, and staging metadata handling for subdomain staging URLs.

1.3.81
------
* Completed StageBridge slug, function, action, option, class, and asset-prefix refactor.
* Removed optional wp-config repair and debug-writing routines.
* Improved plugin and autologin path resolution.

1.3.80
------
* Renamed the public plugin identity to StageBridge.
* Moved staging toolbar CSS to WordPress enqueue APIs.
* Removed inline settings-page JavaScript.
* Sanitized decoded JSON request arrays recursively.

1.3.79
------
* Fixed boolean request parsing so unchecked force overwrite stays disabled during push.

1.3.78
------
* Removed optional plugin website metadata to satisfy WordPress.org submission requirements.

1.3.77
------
* Updated public plugin naming and WordPress.org compatibility metadata.

1.3.76
------
* Added WordPress.org submission metadata, including Requires at least, Requires PHP, Tested up to, FAQ, screenshots, privacy, and upgrade notice sections.

1.3.75
------
* Clarified push confirmation copy so users know push is safe by default unless force overwrite is selected.

1.3.74
------
* Store file backups in a compressed ZIP archive to reduce inode usage.
* Restore supports both newer compressed backups and older loose-file backup folders.

1.3.73
------
* Replaced inline push confirmation with a centered confirmation modal.
* Replaced final dashboard notices with user-dismissed completion modals.

1.3.72
------
* Added force overwrite push option for deliberately replacing production changes with staging.

1.3.57
------
* Replace destructive whole-table push imports with safer same-database table swaps so production tables remain intact if a push request times out mid-copy.

1.3.56
------
* Prevent production from redirecting to staging if a push times out after importing the options table by normalizing production URLs earlier and on frontend loads.

1.3.55
------
* Normalize malformed Elementor dynamic tag settings after clone, sync, and push so Elementor does not fatal when dynamic tag settings contain percent placeholders.

1.3.54
------
* Store file backups as chunked directory copies instead of appending to one growing ZIP, preventing late-stage hangs on very large sites.

1.3.53
------
* Make full/file backups gentler on large sites by storing backup ZIP entries without compression.

1.3.52
------
* Normalize legacy oversized file batch settings to the safer current default on upgrade.

1.3.51
------
* Protect plugin, theme, and mu-plugin source folders from basename-only wildcard exclusions such as *backup*.
* Clean additional legacy backup wildcard variants from saved exclusion settings.

1.3.50
------
* Fixed overly broad default exclusions that could omit plugin source files with "backup" in the filename.
* Existing unsafe archive/backup wildcard exclusions are cleaned from saved defaults on admin load.
* Clone now keeps active plugins intact and runs URL/path replacement across all cloned tables for a fuller staging copy.
* Auto-sync now repairs incomplete StageBridge code on staging even when the version number already matches.

1.3.41 - 1.3.49
---------------
* Improved large-site clone and URL replacement reliability.
* Added staging diagnostics for difficult hosts.
* Hardened staging runtime handling for cache, firewall, backup, analytics, redirect, and telemetry plugins.
* Made clone finishing resumable and safer on long-running operations.

1.3.31 - 1.3.40
---------------
* Added retry settings, large-site pacing controls, clone checklist progress, clearer preview wording, and safer URL normalization.
* Locked staging folder setting once a staging environment exists.
* Improved default backup/archive exclusions and stale-file cleanup protection.

1.3.21 - 1.3.30
---------------
* Improved sync/push completion UX, dashboard naming, environment switch links, and staging/prod URL repair.
* Kept completion notices visible until the user dismisses them.
* Added compact checklist-style operation progress.

1.3.11 - 1.3.20
---------------
* Added row-level content push preservation for common WordPress content tables.
* Stored push baselines for safer file and database conflict detection.
* Improved staging auto-login administrator role repair.
* Added detailed sync/push activity reports.

1.3.0 - 1.3.10
--------------
* Added Push/Sync Preview.
* Added full pre-sync and pre-push safety backups.
* Added automatic StageBridge plugin-code sync from production to staging.
* Added production locking during push.
* Made environment switch links open in the same tab.

1.2.0 - 1.2.9
--------------
* Added incremental sync and push comparisons for files and database tables.
* Added persistent operation logs, source-size summaries, and improved staging auto-login.

1.1.0 - 1.1.9
--------------
* Improved initial file transfer reliability, scheduled backups, database import parsing, staging support files, and production admin preservation.

1.0.0
-----
* Initial release.
