Improved admin notice and post-backup review prompt messages for clarity
2.1.8
Security: Backup ZIP filenames now include a random suffix — site slug + timestamp alone could be brute-forced, and the ZIP contains wp-config.php plus the full database
Security: Installer state and log files now use unguessable names derived from the backup archive name (DB credentials were stored in a fixed-name state file during migration)
Security: Backup directory .htaccess now denies ALL direct HTTP access (downloads always go through authenticated admin-ajax); existing installs upgraded automatically
Security: Admin warning when leftover installer/migration files (installer, SQL dump, state files, backup ZIP) are detected in the site root, with one-click safe deletion
Security: Installer CSRF token no longer stored in a web-accessible file
Improvement: Installer ZIP extraction is now chunked (~400 files / ~80 MB per request) with progress display — no more proxy timeouts on multi-GB sites
Fix: Site Changes bar “WordPress updated” detection never worked — the wp_version column was missing from the backups table; added with automatic migration
Fix: Site Changes bar counted deleted backups as the last backup — a deleted backup is not a restore point
Fix: Leftover-files security notice could stay hidden for hours after a migration due to caching — now scans fresh on every admin page load
Fix: History page “Register” button for orphan backups did nothing — its script was attached before the script handle was registered, so WordPress silently dropped it
2.1.7
New: Real-time activity log panel during backup — shows DB export, file list, ZIP progress and completion in a terminal-style display
Fix: Plugin Check warnings for non-sanitized JSON POST inputs (selected_paths, selected_tables) — sanitization happens correctly after json_decode
2.1.6
New: Selective backup — Database Only and Files Only modes are now free (with table/folder picker)
Fix: Checkbox visually not showing as checked in Settings > Exclusions
Fix: Plugin language files now load correctly (load_textdomain with direct path)
2.1.5
Fix: Backup log entries now show their real timestamps instead of all showing the finalize/cleanup time
2.1.4
New: Review notice — admin banner shown 14 days after activation (plugin pages only) with remind/dismiss options
New: Backup success review prompt — appears after each successful backup with one-click dismiss
2.1.3
New: Settings > Exclusions — “Skip .ini files in WordPress root” option (default on); prevents php.ini / .user.ini from being included in backups and causing issues after migration
New: Settings > Exclusions — Staging tab added with PRO badge
Fix: Installer URL replace infinite loop on tables with non-UTF-8 primary keys (e.g. wp_wffilemods); cursor now base64-encoded in state
Fix: Installer state save failure on non-UTF-8 database content (JSON_INVALID_UTF8_SUBSTITUTE)
Fix: Installer MySQL error 1293 — TIMESTAMP multi-default incompatibility with MySQL 5.5 now auto-corrected
Fix: Installer progress bar resetting on every replace chunk
Fix: AJAX permission/nonce error showed generic “DB init failed.” instead of actual message
2.1.2
New: Site Changes Bar — shows what changed since the last backup (WordPress update, plugin/theme changes, new uploads) in the main backup card
2.1.1
New: Activity Logs system — wpbn_logs DB table stores per-backup log entries (info/warning/error) for debugging and audit
New: Logs admin page — backup rows are collapsible, showing timestamps and level badges; system-level logs shown separately
New: Log retention setting — keep logs for last N backups (default 20), configurable from the Logs page
2.1.0
New: Backup Encryption (AES-256) is now a free feature — password stored securely using WordPress secret keys
New: Remove Encryption button in Settings to clear saved encryption password
Fix: pollBackupStatus() now has a max retry limit (20) to prevent infinite polling on stale state
Fix: ZIP close() failure recovery now rolls back offset to prevent double-processing files
Cleanup: Removed dead and premium-only code from free plugin (restore engine stubs, cloud handlers, duplicate JS functions)
2.0.9
New: French (fr_FR) translation added
2.0.8
New: Cache directory exclusions moved to Settings — checkboxes for W3TC, WP Super Cache, WP Rocket, Divi, WP-Optimize, Breeze cache folders
Improvement: Cache exclusion paths no longer hardcoded — stored in database, configurable per site
2.0.7
Fix: Backup directory moved to uploads folder (wp-content/uploads/nota-backup-restore) per wp.org guidelines
Fix: Removed PclZip fallback and global PCLZIP_TEMPORARY_DIR constant — ZipArchive is required
2.0.6
Fix: Orphaned backup state (PHP killed mid-backup) now creates a failed record automatically via hourly cron — no longer requires opening the admin panel
2.0.5
Fix: Removed non-functional notification code (email settings, test email handler) that was included but had no effect in the free version
New: Backup type selector replaced with visual cards (Full, Database Only, Files Only)
Improvement: File sizes in GB now display two decimal places (e.g. 1.34 GB)
Improvement: ZIP chunk size is now auto-calculated based on available server memory
Improvement: Files per chunk automatically scales with chunk size, with optional manual override in Settings
2.0.4
Improvement: Smart chunk size auto-calculation based on server memory
Improvement: Files per chunk auto-derived from chunk size (chunk MB × 40)
2.0.3
Fix: Removed scheduled backup cron hook and callback — scheduled backups are a Pro feature and must not exist as locked code in the free version (Guideline 5)
Fix: Removed wpbn_run_cron_now AJAX action that returned a premium-only error
Fix: Removed cron schedule interval definitions (wpbn_daily, wpbn_weekly, etc.) which were only used for scheduled backups
Fix: Removed assets/icon-128×128.png from plugin ZIP — plugin assets must be uploaded separately via SVN
2.0.2
Fix: Estimated backup size now works — wpbn_size_estimate AJAX handler was missing and has been added
Fix: DB health check and test email AJAX handlers were missing and have been added
Security: installer-template.php removed from plugin; backup ZIPs no longer contain installer.php — the installer is now generated on demand and downloaded separately from the admin panel as a .php file, never written to the server filesystem
2.0.1
Fix: Removed bundled-but-locked feature stubs to comply with WordPress.org Guideline 5 (Trialware)
New: Standalone installer is now downloaded separately alongside the backup ZIP — upload both to the new server, open installer.php, and it extracts the ZIP and migrates the database automatically
2.0.0
New: Free version released on WordPress.org as “Nota Backup & Restore”
Removed: Freemius SDK — no longer required in the free version
Removed: Cloud storage code — available in Pro version only
Removed: Restore engine — available in Pro version only
Removed: Emergency Recovery — available in Pro version only
1.9.7
New: “Files Per Chunk” setting — configures how many files are processed per ZIP request
Fix: ZIP Chunk Size (MB) setting now correctly limits bytes per request during ZIP creation
1.9.6
Fix: Plugin deactivation now clears scheduled cron events to prevent orphaned tasks
Fix: Critical file write operations now return proper errors on failure instead of silently corrupting the backup
1.9.5
Improvement: Database export now streams directly to disk in 500-row batches — prevents out-of-memory errors on large databases
1.4.3
Fix: Bootstrap CSS now bundled locally instead of loaded from CDN