Changelog for Disembark

The following is automatically fetched from github.com/DisembarkHost/disembark/blob/main/changelog.md. Feel free to make suggestions or report any issues on Github: github.com/DisembarkHost/disembark/issues.

Looking for the CLI changelog?

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.

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.

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.

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.
  • Fix: Database listings for new .sql.txt extension
  • 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.
  • 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.
  • Plugin Merger: "Disembark Connector" and "Disembark Interface" have been combined into this single plugin.
  • New Integrated UI: A full backup interface is now available directly in the WordPress admin under Tools > Disembark.
  • New File Explorer: You can now browse your site's file structure, preview code and images, and download individual files from within the plugin.
  • New Granular Exclusions: Added a visual interface to exclude specific files, folders, and database tables from your backup.
  • New Dark Mode: Added a dark mode theme with a toggle that saves your preference.
  • Enhanced Large Site Support: The file scanning process was rebuilt to use a multi-step, chunked approach to prevent timeouts on very large sites.
  • Improved Workflow: The UI has been redesigned for a clearer state-driven process: Analyze, then Configure, then Backup.
  • Better Progress Feedback: The interface now provides more detailed feedback during the site scan and backup.
  • Easy Access to Connection Info: Your site's connection token and CLI commands are now easily accessible from a menu in the plugin's UI.
  • Upgrade Path: Users of the "Disembark Connector" can upgrade directly to this plugin and should deactivate the old Connector plugin.
  • Fixed bug with file section introduced with v1.2.0
  • Changed directory scan limit from 25 to 75
  • Changed file chuck limit from 100mb to 150mb
  • Refactored the file scanning and manifest generation into a step-by-step process that uses significantly less memory, improving support for very large websites.
  • Added PclZip as a fallback for creating zip archives, increasing compatibility with hosting environments where the ZipArchive PHP extension is not enabled.
  • Introduced a new REST endpoint for securely streaming individual files directly from the server.
  • Added the ability to exclude files and folders from file backups.
  • Added a new REST endpoint to retrieve a complete file manifest without generating manifest files.
  • Refactored and expanded the default list of excluded files and backup directories.
  • Fallback for view details link on bad response
  • WordPress version bump
  • Exclude WP Engine protected file wp-content/mysql.sql.
  • New WP-CLI commands: wp disembark backup-url, wp disembark cli-info and wp disembark token [--generate]
  • Tweaked plugin updater priority
  • WordPress version bump
  • If updater check fails use local plugin manifest
  • Exclude Disembark directory and others from backup zip
  • Zip large database tables individually
  • New advanced options. Ability to backup only files or database. Ability to include certain database tables or certain files or paths.
  • New instructions for Disembark CLI
  • Analyze site when pasting site URL and token
  • Improve backup progress
  • Split large database tables into smaller exports
  • Fix endpoints cleanup and download to only respond with plain text
  • Cleanup unused backup code
  • Improved database exports for Local
  • Cleanup endpoint to purge uploads/disembark folder after successful download.
  • One click connection string to Disembark
  • Initial release of Disembark. Allows for full site WordPress backups to be made from Disembark.host