=== 83blue Backup ===
Contributors: 83blue
Tags: backup, encrypted, offsite, database, wp-content
Requires at least: 5.0
Requires PHP: 7.2
Stable tag: 1.6.2
License: GPLv2 or later

Free, zero-knowledge WordPress backups. No account, no login, no fees to back up.

== What it does ==

* Weekly automatic backup of your database + wp-content + wp-config.php.
* Compressed (zip) and ENCRYPTED on your own server with a key only you hold.
* Stored offsite at upload.83blue.com. We only ever receive ciphertext; we cannot read your data.
* We keep your last 3 backups. Backing up is free, forever.
* Skips caches and the output folders of other backup plugins (UpdraftPlus, etc.).

== Zero-knowledge: your key ==

On activation the plugin generates a unique encryption key and shows you a one-time
RECOVERY CODE on the "83blue Backup" admin page. SAVE IT (copy the text or download the
recovery file). It is the only way to decrypt your backups, and we never receive it.
Lose it and your backups cannot be restored.

== Install ==

1. Plugins > Add New > Upload Plugin > choose 83blue-backup.zip > Install > Activate.
2. Open "83blue Backup" in the admin menu and SAVE your recovery code.
3. That's it. A backup runs weekly automatically; use "Back up now" to run one immediately.

== Reliable scheduling (recommended) ==

WordPress cron only fires when your site gets traffic, so the weekly backup and the
call-home can drift on quiet sites. For exact timing, disable WP pseudo-cron and add a
real server cron. In wp-config.php:

    define('DISABLE_WP_CRON', true);

Then a server cron (every 5 minutes is plenty):

    */5 * * * * wget -q -O /dev/null "https://YOURSITE/wp-cron.php?doing_wp_cron"

== Requirements ==

PHP 7.2+ with the sodium and zip extensions (both standard on modern hosts).

== Restore ==

Open the restore portal at https://upload.83blue.com/restore and paste your recovery
key. Your backup is decrypted in your browser (the key never leaves your device) and you
get back the original .zip. Unzip it, import database.sql and restore wp-content.

Offline alternative: decrypt a downloaded .enc with the command-line tool included in
this plugin (tools/83blue-decrypt.php) using your recovery key.

== Updates ==

Updates are delivered automatically from upload.83blue.com: when a new version is
available WordPress shows it on the Plugins screen like any other plugin, with a
one-click update. No account needed.

== Changelog ==

= 1.6.2 =
* Backups now run themselves to completion in the background, with no server cron and without keeping a page open. An active backup drives its own next step, and a watchdog restarts it if it ever stalls, so large sites finish reliably even when WordPress cron is disabled.
* A backup left half-finished by an interruption or an older version is picked up and continued automatically.
* On hosts that block background requests and have cron disabled, the plugin now tells you clearly that a backup only runs while the page is open, and how to add an optional server cron if you want it hands-off.
* A build that genuinely cannot make progress now stops with a clear message instead of appearing to hang forever.

= 1.6.1 =
* Live progress: the backup now counts every file up front and shows a real "x of y files" readout that ticks along as it works, with a far more accurate overall percentage and an estimated time remaining. The same live state is shown whether the backup was started by hand or ran automatically, so you can open the progress page at any time and see exactly where it is.
* New "Counting" ring for the preparation phase (dumping the database and counting files), alongside the existing content and offsite rings.
* Added a "Stop backup" button to the progress page and the dashboard, which halts the backup and clears away anything it had uploaded so far.
* "Back up now" is now labelled "Manually backup now", and the plugin's own screens now fill the page in dark rather than sitting on the admin's white background.

= 1.6.0 =
* Very large sites now back up reliably, with no size limit. The backup is built as a series of encrypted volumes: each volume is packed, encrypted, uploaded and then removed before the next begins, so the temporary space used stays small and every step finishes well inside your server's time limit. Nothing is left out of the backup.
* Removed the old single-archive 4 GB ceiling (ZIP64 support), so individual files and archives larger than 4 GB are handled correctly.
* The restore screen and the browser restore portal understand multi-volume backups and reassemble them automatically.
* The backup engine's own working state is no longer stored inside the backup, so restoring a backup can never kick off a stray backup on the restored site.

= 1.5.1 =
* Your site now registers with the vault the moment the plugin is activated, and again whenever you open the admin, so it appears right away even if WP-Cron is disabled.
* Tidied the backup progress screen: the percentage sits correctly inside the ring.

= 1.5.0 =
* Large sites no longer hang on a blank page. "Back up now" now opens a progress page and builds the backup in small steps that survive server timeouts, so big sites back up reliably. The weekly backup uses the same resumable engine.
* The progress page shows a circular ring for each part of the backup: database, plugins, themes, uploads and the offsite upload.
* Much smaller backups: stock WordPress themes and the translations folder are no longer stored (they are re-downloaded automatically on restore), and the database dump is now compressed. A plain install can drop from tens of megabytes to a few hundred kilobytes.
* Restore re-fetches the active stock theme from wordpress.org so the restored site still looks right.
* Redesigned the main "83blue Backup" screen and the restore portal to match, with a clearer recovery-key panel.
* Each stored backup now has separate "Restore" and "Download" buttons.

= 1.4.0 =
* New restore screen: a full-screen progress display with a single circular progress ring and live percentage, instead of the old flat bar.
* The progress ring now tracks real work (bytes downloaded, database imported, files restored), so it moves smoothly rather than jumping between stages.
* Backups no longer include the 83blue Backup plugin itself. This is smaller and, crucially, means restoring never downgrades your installed plugin: your settings and key live in the database, which is always restored.

= 1.3.2 =
* Restore now clears out any abandoned previous restore folders automatically, so they cannot pile up.

= 1.3.1 =
* Fixed: clicking Restore could land on a blank admin page (the redirect ran too late); restore now starts reliably.
* Redesigned the Restore screen: one recovery-key field, a single selectable list of backups, and one clear confirm, instead of a confirm box on every row.

= 1.3.0 =
* Built-in restore: a "Restore" page in the plugin. Paste your recovery code, pick a backup, confirm, and the site is rebuilt (database + files). The restore runs on its own, outside WordPress, so it never logs you out and never gets stuck overwriting itself; if your host times out it continues automatically from where it stopped, then cleans up after itself.
* Restore to a different domain: URLs are rewritten safely across the database, including PHP-serialised data.

= 1.2.0 =
* Resumable uploads: a backup upload that is cut short by a PHP timeout now continues from exactly where it stopped on the next run (every minute), instead of starting over. Large sites upload reliably over several runs. Per-chunk retries and a progress indicator added.

= 1.1.1 =
* Clearer restore: each stored backup now has a "Restore / decrypt" button that opens the restore portal; the raw encrypted download is demoted to an advanced option.

= 1.1.0 =
* Browser restore portal at upload.83blue.com/restore: paste your recovery key, decrypt in-browser, download the .zip.
* Automatic plugin updates from upload.83blue.com (shown on the Plugins screen).

= 1.0.0 =
* First release: weekly zero-knowledge backup of database + wp-content + wp-config.
