Skip to content

Releases: DisembarkHost/disembark

v2.8.0

Choose a tag to compare

@austinginder austinginder released this 17 Jul 22:54

Disembark 2.8.0 adds restore and migration: bring a backup into any site running Disembark, or migrate one live site directly into another — with a rollback point saved before anything is touched.

Added

  • Restore a Backup (dashboard): restore from an uploaded backup .zip — staged chunked upload, rollback point first, file deploy, database import, URL rewrite, and one-click rollback.
  • Restore from a live site (dashboard): the destination pulls files and database from the source's REST API server-to-server. Paste the source's disembark connect … line into either field to fill both.
  • Restore / Import REST API: preflight, rollback snapshot, chunked upload with server-side extraction, staged database import, serialize-aware search/replace, prefix remap, finalize, and rollback.
  • Cross-prefix migration: table names are remapped during import and prefix-scoped data (usermeta capabilities, user_roles) fixed afterward, so migrated users keep their roles.
  • Serialize-aware search/replace: re-serializes PHP serialized values so length prefixes stay valid through a URL change.

Improved

  • Endpoints authorize administrators first (application password or cookie + nonce) with per-site token fallback. The token is preserved across a database import so a restore stays authenticated end-to-end.
  • The restore page suppresses the "session expired" modal (the import replaces the users table) and finishes with a clean log-in prompt.

Security

  • Pull channel verifies TLS (behavior change): live-site restores verify the source certificate and refuse internal/non-http(s) URLs by default. Opt out for self-signed/local sources with define( 'DISEMBARK_DEV_MODE', true ) or the disembark_pull_sslverify filter.
  • SQL transforms are statement-anchored — post content containing table names or SQL keywords can never be corrupted by a restore.
  • Token disclosure locked down (dashboard shortcode renders only for admins; token-auth REST bypass scoped to Disembark routes).
  • Import paths validated against traversal, zip-slip-safe extraction in both ZipArchive and PclZip paths, wp-config.php protected from the file editor and restores.
  • Quote/comment-aware SQL statement splitting.

Pairs with Disembark CLI v2.8.0 (disembark restore, --rollback).

v2.7.0

Choose a tag to compare

@austinginder austinginder released this 28 Jan 22:44

v2.7.0 - January 28, 2026

Added

  • Database Explorer: A new full-screen database explorer allows you to browse tables, view their structure and data, and export selected tables directly from the UI.
  • Folder Downloads: You can now download entire folders as zip archives directly from the File Explorer.
  • Session Resume: Previous scan sessions are now saved and displayed on the initial screen, allowing you to resume a prior session without re-scanning.
  • CLI Info Command: Added the disembark info command to the CLI panel, which displays connection status, storage usage, and previous sessions.

Improved

  • UI Polish: Refined the settings menu, CLI command panel layout, and dark mode styling for the scan info panel.
  • Clipboard Handling: Improved copy-to-clipboard functionality across the interface.
  • PHP 7 Compatibility: Added polyfills for better compatibility with PHP 7 environments.
  • Endpoint Responses: Cleaned up REST API endpoint responses for consistency.

Fixed

  • HTTPS Behind Proxy: Fixed an issue where backup URLs were generated with http:// instead of https:// on sites running behind a reverse proxy (e.g., load balancers, Cloudflare). The plugin now correctly detects HTTPS from X-Forwarded-Proto and other proxy headers.
  • Dark Mode: Resolved a styling issue affecting the dark mode theme.

v2.6.0

Choose a tag to compare

@austinginder austinginder released this 25 Nov 23:50

v2.6.0 - November 25, 2025

Added

  • Scan History: The settings menu now displays cached statistics from the last file analysis, including the total number of files found, total size, and the time elapsed since the scan.

Improved

  • CLI Info Section: Cleaned up the CLI information area by consolidating installation instructions into a hover menu and refreshing the command block styling.
  • Security: Hardened API authentication by implementing hash_equals for constant-time token comparison, protecting against timing attacks.
  • Concurrency: Changed the naming convention for temporary synchronization zip files to use unique IDs (uniqid) instead of timestamps (time()). This prevents filename collisions when multiple file chunks are requested simultaneously.

v2.5.0

Choose a tag to compare

@austinginder austinginder released this 22 Nov 02:02

v2.5.0 - November 21, 2025

Added

  • NCDU Command Support: Added a new CLI command generator for ncdu (NCurses Disk Usage), allowing users to easily browse remote file system disk usage via the Disembark CLI.
  • Resumable File Streaming: Updated the stream_file REST API endpoint to support offset and length parameters. This allows for chunked or resumable file downloads, improving reliability for large file transfers.
  • Updater Metadata: The custom updater now passes tested (WordPress version) and requires_php fields to the plugin information screen.

Changed

  • Backup Workflow: The "Start Backup" UI flow has been redesigned. Instead of immediately attempting a browser-based backup (which is prone to timeouts), the UI now generates a "Runner" command. This encourages users to run the migration via the terminal using a one-line curl | bash command for higher reliability.
  • CLI Command Generation: The migrateCommand logic now dynamically builds a full runner command that includes all selected file and table exclusions directly in the generated string.
  • CLI Sync Command: Updated the sync command format to include the domain as a second argument (disembark sync <url> "<domain>").
  • Dashboard Redesign: The main dashboard buttons ("Explore Files", "Start Backup") have been reorganized.
  • Tooltips: Added tooltips to the CLI command block for better clarity on what connect, backup, sync, and ncdu commands do.

Fixed

  • Cleanup State: Ensure UI state (backup_ready) is properly reset when running the cleanup routine.

v2.4.1

Choose a tag to compare

@austinginder austinginder released this 11 Nov 11:52

v2.4.1 - November 11, 2025

Changed

  • Analysis Performance: The file analysis process ("Analyze Site") no longer generates MD5 checksums by default. This significantly improves scanning speed on large sites. Checksums are now only generated when explicitly requested by a client, such as for a disembark sync CLI command.

v2.4.0

Choose a tag to compare

@austinginder austinginder released this 11 Nov 00:36

v2.4.0 - November 10, 2025

Added

  • Backup Toggles: Added "Backup Database" and "Backup Files" switches to the main interface, allowing you to easily skip an entire section of the backup.
  • CLI Command Update: The generated CLI commands in the UI now dynamically add the --skip-db and --skip-files flags to match the new UI toggles.
  • UI Validation: Added a check to prevent starting a backup if both the file and database sections are disabled.

Changed

  • Smarter UI File Zipping: The "Start Backup" process now filters the file list based on UI exclusions in the browser and sends batches of files to be zipped. This correctly respects all UI exclusions and is significantly more efficient than the previous method of re-zipping manifest chunks.
  • UI Polish: The file and database exclusion lists are now hidden when their respective "Backup" toggles are switched off.

Fixed

  • Filescan Performance: Optimized the file scanning step by lowering the operation limit when checksums are enabled, preventing potential timeouts on slower hosts during the analysis phase.
  • UI Polish: The database backup progress bar is now correctly hidden during a backup if the "Backup Database" option is disabled.

v2.3.0

Choose a tag to compare

@austinginder austinginder released this 29 Oct 01:26

2.3.0 - October 28, 2025

Added

  • Database Batch Export: Implemented a new batching system for database exports. The plugin now intelligently groups small tables (under 200MB and 1 million rows) into combined .sql.txt files. This dramatically reduces the number of API requests and zip operations, resulting in a much faster database backup.
  • Session ID & Manifest Regeneration: The UI now displays a Backup Session ID after the initial analysis.
    • A new "Regenerate Session" refresh icon allows you to update the file manifest with new exclusions without re-scanning the entire file system.
    • This session ID can be used with the CLI (--session-id=...) to reuse the generated manifest.
  • New sync CLI Command: Added the disembark sync command to the CLI instructions display, which works with the new session ID feature.
  • Database Row Count: The database table list now fetches and displays the row count for each table, helping to identify large tables more easily.

Changed

  • Smarter Backup Start: The "Start Backup" button will now only regenerate the file manifest if you have changed your file/folder exclusions. If no exclusions have changed, it reuses the existing manifest, making the backup start almost instant.
  • UI Reset on Cleanup: Clicking the "Cleanup Temporary Files" button now fully resets the plugin's UI to the initial "Analyze Site" screen. This prevents errors from trying to use a stale session after its files have been deleted.
  • Checksums Enabled by Default: The file scanning process now generates MD5 checksums by default.
  • Improved CLI Copying: The CLI commands in the UI are now on separate lines, making it easier to copy a single command at a time.

v2.2.1

Choose a tag to compare

@austinginder austinginder released this 28 Oct 01:19

v2.2.1 - October 27, 2025

  • Fix: Database listings for new .sql.txt extension

v2.2.0

Choose a tag to compare

@austinginder austinginder released this 26 Oct 20:03

v2.2.0 - October 26, 2025

  • New Feature: Decoupled Filesystem Support (e.g., Flywheel)

    • Reworked the file scanning, zipping, and streaming logic to fully support hosting environments where the WordPress core (ABSPATH) and the web root (dirname(WP_CONTENT_DIR)) are in separate locations.
    • The file scanner now identifies and scans both the web root and core root if they are different, using a seen_files log to prevent duplicates.
    • The zipping process now correctly locates files in either the web root or core root before adding them to the archive.
    • The File Explorer's streaming endpoint has been updated to find and stream files from a separate core directory, ensuring previews and downloads work correctly on decoupled sites.
  • Improvement: Database Export Compatibility

    • Database export files are now saved with a .sql.txt extension instead of .sql.
    • This bypasses security rules on certain managed hosts that block the direct download of .sql files.
  • Improvement: Added Checksum Generation Support

    • The Backup class can now optionally generate and include md5_file checksums in the file manifest during the scan step.
    • The /regenerate-manifest REST endpoint was updated to accept an include_checksums parameter to trigger this behavior, which is useful for external CLI validation.
  • Dev: New API Endpoints & UI Functionality

    • Added a /zip-sync-files endpoint to create a zip archive from an arbitrary list of files sent from a client.
    • Added a /regenerate-token endpoint and a corresponding "Regenerate Token" button in the UI's Tools menu.
    • Added a "Regenerate Session" button in the UI to allow re-running the file manifest generation with the current exclusions without starting a new session.

v2.1.0

Choose a tag to compare

@austinginder austinginder released this 23 Oct 13:52

v2.1.0 - October 23rd 2025

  • New Feature: Added a "CLI Commands" panel to the main interface. The disembark backup command shown in this panel now dynamically updates to include all file (-x "path") and database table (--exclude-tables=...) exclusions selected in the UI.
  • Security/Improvement: Changed the /stream-file REST endpoint from GET to POST. The file path and token are now sent in the request body instead of query parameters, improving security.
  • Improvement: Updated the File Explorer's "Preview" and "Download" features to work with the new POST streaming endpoint. File downloads are now handled via JavaScript to support the new method.
  • UI/UX: Replaced the "Connection Info" menu with a new "Tools" menu. This new menu provides a helper command for installing the Disembark CLI and retains the "Cleanup Temporary Files" functionality.
  • Dev: Added a new delete_backup_file method and a corresponding /cleanup-file REST endpoint to allow for the deletion of individual backup files (e.g., files-1.zip, database.zip) via the API.