Version 2.3.4
May 8, 2026
Fixed
- DB dumps no longer leave a copy in
storage/backups/.DbDumperpreviously called Craft's$db->backup(), which always writes tostorage/backups/{sitename}--{date}--{version}.sqlfirst, then renamed the file into staging — leaving an orphan whenever the rename failed silently or the run was interrupted between the two calls. It now calls$db->backupTo($target)to write the dump straight into the staging directory.
Version 2.3.3
May 8, 2026
Fixed
- Archives left behind in
storage/runtime/temp/craft-backup/after every run. The runner removed the per-run staging subdirectory but not the archive file itself, which sits one level up; it's now unlinked in the samefinallyblock. Dry runs still preserve the archive so its path stays inspectable.
Version 2.3.2
May 7, 2026
Fixed
- Suppressed
Attempting to set settings on a plugin that doesn't have settings: backupwarnings logged on every request. Craft auto-mergesconfig/backup.phpinto plugin settings and callssetSettings()during plugin construction; since the plugin loads its config independently viaBackupConfig::load()and defines no settings model,Plugin::setSettings()is now a no-op.
Version 2.3.1
May 7, 2026
Fixed
- Project config now overrides bundled defaults predictably for list-shaped values. Previously
yii\helpers\ArrayHelper::mergeappended numeric-indexed lists, so a projectmonitor_backupsrule was added on top of the bundled default rule (causing duplicate per-target check rows) and projectsource.include/excludepaths inherited the bundled paths alongside their own. Lists now replace wholesale; maps still merge by key.
Version 2.3.0
May 7, 2026
Added
- New
source.split_db_and_filesconfig option. When enabled, each run produces two archives — one containing the database dumps, one containing the included files — instead of a single combined archive. Both archives share a runId in their filenames (e.g.…-a1b2c3d4-db.zipand…-a1b2c3d4-files.zip) and are treated as one logical backup by retention (GFS bucketing, size cap) and health checks (min_number_of_backups).
Changed
BackupResult::$archivePath(single, nullable) replaced byBackupResult::$archivePaths(list). One entry for combined runs, two for split runs.
Version 2.2.0
May 7, 2026
Added
- Craft CMS 4 support. The plugin now installs on Craft 4.4+ and Craft 5, on PHP 8.1+.
Version 2.1.0
May 1, 2026
Added
- Per-row "Download" button on the "Backups by target" card for
localtargets. Clicking streams the backup file to the browser via a CSRF-protected POST. Gated by a newbackup:downloaduser permission (admins pass automatically); the button is hidden for users without the permission and for non-localtargets. - New
downloadconfig block withmax_bytes(default'500MB'),x_send_file, andx_send_file_uri_prefix. Files larger thanmax_bytesrender the download control disabled with a tooltip showing the absolute on-server path so admins can fetch via SCP/SFTP. Settingx_send_fileto'X-Sendfile'(Apache) or'X-Accel-Redirect'(nginx) hands the response off to the web server, bypasses the size cap, and frees the PHP-FPM worker immediately.
Version 2.0.2
April 29, 2026
Changed
- Timestamps in the "Backup health" and "Backups by target" cards now render as a localized relative time (e.g. "2 hours ago") via Carbon's
diffForHumans(), with the previously-shown absolute date surfaced as an instant tooltip on hover.
Version 2.0.1
April 29, 2026
Added
- "Notifications" card on the Backup utility, collapsed by default. Lists each configured channel (mail, Slack) with the events it fires on — recipients per event for mail, enabled/disabled per event for Slack — plus the Slack channel override when set. The card hides itself entirely when no notification channels are configured.
- "Send test notification" link in the Slack row that posts a test message to the configured webhook, ignoring per-event flags. Used to confirm setup or debug silence.
Version 2.0.0
April 29, 2026
⚠️ Breaking change. Notification config has moved out of
logginginto a new top-levelnotificationsblock. Update yourconfig/backup.php:
logging.notify_on_failure→notifications.mail.on_failurelogging.notify_on_success→notifications.mail.on_successlogging.notify_on_low_disk_space→notifications.mail.on_low_disk_space
Added
- Slack notifications via Incoming Webhooks. Configure under
notifications.slackwithwebhook_url(also overridable viaBACKUP_SLACK_WEBHOOK_URL), optionalchannel/username/icon, and per-eventon_failure/on_success/on_low_disk_spacetoggles. Slack receives the same content as the corresponding mail notification.
Changed
- Notification config moved from
logging.notify_on_*tonotifications.mail.on_*(see breaking-change note above).
Version 1.2.12
April 28, 2026
Added
- "Backups by target" disk usage bar now overlays a darker first segment showing how much of the volume's used space is taken up by the listed backup files, with a matching size in the legend (e.g.
8.42 GB backups).
Version 1.2.11
April 28, 2026
Added
- Optional
retention.delete_oldest_backups_when_using_more_megabytes_than: hard size cap, in megabytes, applied after the GFS rules. If the total size of the kept backups exceeds the cap, the oldest are pruned one by one until the total fits. The newest backup is always retained, even if it alone exceeds the cap. Set tonullto disable.
Version 1.2.10
April 28, 2026
Changed
- Moved the per-target disk usage row to the bottom of the "Backups by target" card, separated from the file table and lock legend by a hairline divider so it reads as card metadata rather than a header.
Version 1.2.9
April 28, 2026
Added
warn_when_disk_space_is_lower_thannow also accepts a percentage of total disk (e.g.'20%','12.5%') in addition to absolute byte counts and shorthand. The "Backups by target" card surfaces the percent next to the resolved bytes in the legend and threshold marker tooltip (e.g.warn below 11.22 GB free (20%)).
Version 1.2.8
April 28, 2026
Added
- Per-target disk usage bar above each tab in the "Backups by target" card, showing used/free space. Optional
warn_when_disk_space_is_lower_thanpermonitor_backupsrule (e.g.'5GB','500MB', or a percentage like'20%') draws a warn marker on the bar and turns it red once free space drops below the threshold. Only thelocaldriver reports disk usage. logging.notify_on_low_disk_space: email recipients alerted after a backup run if any target's free space fell below its configured warn threshold.
Changed
- Renamed the Utilities entry from "Backup" to "Backups".
Version 1.2.7
April 28, 2026
Changed
- Backups-by-target table now also shows a grey open-lock icon for
.zipfiles that are not password protected. On local target tabs the legend explains both lock states; non-local tabs only show the "zip detection is available for local targets only" note, so a missing icon no longer reads as "encryption unknown".
Version 1.2.6
April 28, 2026
Added
- Per-target checks card now expands to reveal each individual check (target reachable, minimum backup count, youngest backup age) with pass/fail/skipped state. Failing targets auto-expand.
- "Show checks" toggle on the Backup health card surfaces high-level signals: monitoring configured, last run recorded, last run succeeded, a successful backup exists, all targets healthy.
- German translations (
src/translations/de/backup.php) covering the full string catalog.
Changed
BackupMonitornow evaluates every configured check independently instead of bailing on first failure, and routes user-facing labels and reasons throughCraft::t('backup', …)so the UI and./craft backup/monitorJSON output respect the active language.- Duration formatting in monitor results uses integer-only composites (
3h 12min,2d 4h) instead of decimal hours/days like2.1h. - Backups-by-target table capped at 6.5 visible rows so the half-cut row hints at scrollability.
- Renamed the table column "Modified" to "Created" — backup files are written once, so the file's mtime is effectively its creation time.
Version 1.2.5
April 27, 2026
Added
- Green lock icon next to password-protected
.zipfiles in the "Backups by target" card, with a legend explaining that detection is available for local targets only.
Version 1.2.4
April 27, 2026
Added
- Optional
date_time_formatconfig value applied to the timestamps shown in the "Backup health" and "Backups by target" cards.
Changed
- Tightened status badge layout in the Backup utility cards so badges no longer hang-indent when wrapping and per-target check badges only take the width they need.
Version 1.2.3
April 26, 2026
Changed
- Deferred per-card data loading on the status page so it now renders immediately with skeleton placeholders and isolates failures to individual cards.
Version 1.2.2
April 26, 2026
Changed
- Renamed plugin to "Backup".
- Updated plugin icon.
- Moved backup health overview from a dedicated control panel section into a utility under Utilities.
- Reworked the status page layout into single cards and adjusted styling.
Version 1.2.1
April 25, 2026
Security
- Pinned
phpseclib/phpseclibto^3.0.51to pick up upstream security fixes.
Version 1.2.0
April 25, 2026
Added
- Control panel status page showing last/next run, recent results, and per-target health.
BackupMonitorhealth checks surfaced in the UI (translations, templates, asset bundle).RunStateStoreto persist run state for the status page.
Version 1.1.1
April 24, 2026
Added
- Health check documentation in the README.
Version 1.1.0
April 24, 2026
Added
backup/monitorconsole command for verifying that recent backups exist and meet freshness/size thresholds, including notifications on failure.
Version 1.0.0
April 24, 2026
Initial release.
Added
- Console commands modelled after
spatie/laravel-backup:backup/runwith--only-db,--only-files,--only-to,--disable-cleanup,--dry-runbackup/listbackup/cleanwith--only-to,--dry-runbackup/publish-configbackup/decrypt
- Target drivers:
localandsftp(vialeague/flysystem-sftp-v3). Multiple targets per run, retention applied per target independently. - Archive containers:
zip(default, optional AES-256 password) andtar.gz(with optional custom AES-256-CBC + HMAC-SHA256 envelope). - Dependency-free
scripts/decrypt.phprecovery script. - Grandfather-Father-Son retention policy with configurable daily/weekly/monthly/yearly buckets.
- Mail notifications on success and failure via Craft's mailer.
- Optional upload throttling via streaming stream filter.
- Env-var overrides for all sensitive config keys (
BACKUP_NAME,BACKUP_ARCHIVE_PASSWORD,BACKUP_ENCRYPTION_ENABLED,BACKUP_ENCRYPTION_KEY,BACKUP_SFTP_*).