Changelog
What changed in the worker plugin, per stable version. Newest first.
Every version listed here was published as a stable release; a version appears once, on the day it was published, with each change as the plugin's own changelog states it. What you read on a site's View details screen for the plugin is the same list.
2.4.0 – 20-09-2026
- Added – settings: The plugin's admin screens are rebuilt on one design, with a card per feature area, tabs, and a save bar that stays in view
- Added – modules: Analytics, the activity log, the mail log, the error log, email delivery and security are each switched on or off from one place, and a switch set before this version keeps its value
- Added – email delivery: Email sending has its own settings with a sender and a choice of transport, and a delivery check reports whether the sender domain is set up to be trusted by receiving mail servers
- Added – support: A support tab shows the connection to WP Octo, the environment the site runs on and where to get help
- Added – connection: The plugin tells WP Octo which features it supports, so a new capability is recognised by WP Octo as soon as the plugin that carries it is installed
- Added – connection: The plugin is told which workspace and package the site belongs to and what the package includes, and shows it under General settings
- Added – settings: WP Octo can read the site's settings as the screens define them, so they can be shown and later managed centrally; a password or key never leaves the site, only whether it is set
- Improved – post duplicator: A duplicated post stays a draft for a user who may not publish that kind of content, and each copy is confirmed for the post it was asked for
- Improved – themes: The theme list reports each theme's author and website, as the plugin list already did
- Improved – mail log: The dashboard and the mail log show the same delivery check result as the email settings screen
- Security – settings: Sending a test email and testing the connection are limited to administrators and protected against forged requests
- Security – email delivery: A stored mail password is never shown again in the settings form, and leaving the field empty keeps the stored one
- Fixed – backups: Two backup passes can no longer run at the same time on a busy site, which left a backup part larger than its record expected and failed the backup
- Fixed – backups: A backup whose scheduled continuation was lost is picked up again exactly once instead of twice
2.3.1 – 15-09-2026
- Fixed – backups: A plugin table named like the WordPress options table is backed up and restored whole instead of failing every backup of the site
- Fixed – commands: A task that ends in an error, or runs out of time or memory, is reported to WP Octo as failed instead of being lost, so WP Octo no longer waits on it for hours or starts it over
- Fixed – credential: A credential WP Octo refuses once is offered again after a growing pause instead of being dropped for good, and the site reports the refusal so WP Octo can hand over a new one
- Fixed – credential: When WP Octo hands over a credential, the site confirms what it actually stored and reports a store that did not persist instead of confirming a credential it does not hold
2.3.0 – 08-09-2026
- Added – sync: The site reports its plugins, themes, users, core, health and backups to WP Octo on its own schedule, so a firewall that blocks WP Octo no longer leaves stale data
- Added – commands: WP Octo hands the site signed, single-use instructions it carries out on its own clock, including a backup, an upload to storage, a release of its copy, a restore and its own update
- Added – credential: Each site holds a credential of its own for talking to WP Octo, issued once and replaced on request
- Added – auth: WP Octo's credential can travel in a header of its own, so a plugin that owns the Authorization header no longer stands in the way
- Improved – updates: A last-resort WP Octo address is used when the remembered one has failed for a day
- Fixed – restore: A restore keeps the site's connection to WP Octo and the work in flight instead of rolling them back to the backup's day
- Fixed – backups: A scheduled backup that fails while continuing on cron is reported instead of stopping silently
- Security – backups: The site's credentials toward WP Octo are never written into a backup
2.2.3 – 07-09-2026
- Fixed – backup: a forced restart whose cleanup fails unexpectedly no longer leaves the site locked for other operations
2.2.2 – 07-09-2026
- Fixed – backup: a forced restart clears the previous run even when its manifest is missing or unreadable
- Fixed – backup: a forced restart that cannot remove the previous files is refused instead of starting a new backup on top of them
2.2.1 – 07-09-2026
- Fixed – backup: a forced restart of a backup the site already knows clears the previous run before starting over
- Fixed – restore: a backup that never completed, or whose manifest lists no files, is refused instead of restored from whatever is in its folder
- Fixed – backup: downloading a backup chunk no longer hangs on sites where another plugin keeps an output buffer open
2.2.0 – 07-09-2026
- Added – Backups: Brings a backup that only exists in external storage back onto the site before restoring it
- Fixed – Restore: Refuses to restore a backup whose files are not on the site instead of restoring what happens to be there
- Improved – Backups: Reports whether a backup's files are actually on the site
- Fixed – Backups: Keeps a backup listed after its local copy is released
- Fixed – Backups: Starting a backup twice no longer restarts one that is still running
- Fixed – Backups: Sends large backup files whole instead of an empty response
2.1.9 – 06-09-2026
- Fixed – Updates: Keeps the site available while WP Octo updates itself
- Fixed – Updates: Refuses to start on an incomplete installation instead of breaking the site
- Fixed – WordPress updates: Reports a successful WordPress core update as successful instead of failed
- Fixed – WordPress updates: Reads the WordPress version and the available update reliably
2.1.8 – 06-09-2026
- Fixed – Maintenance mode: Stops holding a site after four hours when an update round cannot finish
- Security – Maintenance mode: Lets only the WP Octo REST routes through and no longer trusts a spoofable request header
- Improved – Maintenance mode: Stages, verifies and atomically replaces the maintenance flag, and refuses unsafe filesystem transports
- Fixed – Health check: Recognises active, expired, legacy and unknown maintenance files
2.1.7 – 05-09-2026
- Security – REST API: Prevents WordPress page caches from serving an authenticated response to anyone
2.1.6 – 05-09-2026
- Security – REST API: Prevents shared caches from exposing authenticated WP Octo responses
2.1.5 – 04-09-2026
- Fixed – recovery-enrollment: Safely pairs MU recovery credentials between WP Octo and the worker
2.1.4 – 04-09-2026
- Fixed – delete-plugin: Prevents WP Octo from deleting itself through the worker API
2.1.3 – 04-09-2026
- Added – Recovery: Restores WP Octo from the platform when the plugin itself cannot load
- Added – Recovery: Starts and verifies a rollback while the plugin is unavailable
- Security – Recovery: Closes out-of-band enrolment so only the paired platform can recover a site
2.1.2 – 04-09-2026
- Fixed – Restore: Restores a partial backup instead of refusing incomplete component sets
- Fixed – Update rollback: Runs the rollback that previously never executed
- Fixed – Plugin backup: Authenticates plugin backup over the REST API
- Fixed – Maintenance mode: Authenticates maintenance mode over the REST API
2.1.1 – 23-08-2026
- Improved – Release build: Produces an identical zip and checksum from the same source
2.1.0 – 23-08-2026
- Added – Self-update: Installs a release when WP Octo says so, not on the next admin page load
- Added – Self-update: Keeps a rollback copy outside the plugin directory before every update
- Added – Safe mode: Restores the previous version without loading the plugin
- Added – Self-update: Verifies the SHA-256 of a package before unpacking it
- Added – Self-update: Reports what is installing, what failed and whether a rollback is available
- Improved – Update check: Reports that an update exists without installing it
- Improved – Self-update: Asks WP Octo what this site may install instead of reading one shared file
- Improved – Self-update: Learns the platform address from the platform's own authenticated calls
- Improved – Self-update: Installs through the WordPress upgrader so hosts without direct file access work
- Fixed – Self-update: Restores the previous copy when an update fails instead of leaving no plugin directory
- Fixed – Self-update: Keeps file permissions across a rollback
- Security – Self-update: Refuses any update not confirmed by WP Octo for this site at that moment
- Security – Self-update: Accepts packages only over https and never from inside the site's own network
2.0.0 – 23-08-2026
- Added – Analytics: Reports visitors first-party and cookieless, with no cookie banner needed
- Added – Activity log: Records what happened on the site, grouped per request, with export and notifications
- Added – Error log: Separates broken links on your own pages from bad inbound links and scanner traffic
- Added – Error log: Creates a redirect straight from a failing request
- Added – Email log: Shows what happened to each message, with delivery diagnostics and retention limits
- Added – Email log: Checks whether the sending domain is set up to be believed
- Added – Login attempts: Lists which usernames were tried, whether they exist, and their role and two-factor state
- Added – Login attempts: Allows, blocks and exports attempts, individually or in bulk
- Added – Danger Zone: Resets settings or removes WP Octo data, taking a recovery snapshot first
- Added – Security settings: Locks out repeated failed logins and sets how long a session lasts
- Added – Security settings: Checks file integrity and offers a read-only mode that closes the front end
- Added – Update control: Holds individual plugins and themes back from updates
- Added – Overview: Shows what needs doing, recent activity and trends on one screen
- Added – Notes: Records a note against a plugin or a theme
- Added – Backups: Backs up a single plugin, a single theme, or core on its own
- Added – Safe mode: Provides standalone entry points that keep working when the site is broken
- Added – Translations: Ships in English and fully translated into Dutch
- Improved – Authentication: Accepts the workspace token as a Bearer credential and nothing else
- Improved – Magic login: Uses a one-time ticket valid for sixty seconds instead of a credential in the address
- Improved – Backups: Stores backups in a directory whose name carries a secret
- Improved – Backups: Clears an update only when the backup actually covers what is about to change
- Improved – Email log: Moves the log out of the options table
- Improved – Update machinery: Stops loading on every front-end page view
- Improved – Backups: Opens the file tree one folder at a time instead of the whole backup at once
- Improved – Backups: Moves backup history into the activity log
- Fixed – Restore: Keeps the workspace token, which a restore used to wipe and leave the site unreachable
- Fixed – Plugin update: Deactivates a plugin whose update failed instead of deleting it
- Fixed – Restore: Cancels a restore without a fatal error
- Fixed – Safe mode: Repairs every safe mode entry point, all of which were dead
- Fixed – Backups: Stops recording a busy worker as a failed backup or restore
- Fixed – Restore: Completes across foreign keys and removes its temporary tables
- Fixed – Restore: Runs on hosts without the zip extension
- Fixed – Backups: Stops reporting an incomplete backup as complete
- Fixed – Translations: Loads the translations, which were never loaded
- Fixed – Email log: Stops autoloading the log on every request, front end included
- Fixed – Email log: Caps a stored message body at 256 KB
- Fixed – Deactivation: Removes the seven scheduled tasks that were left behind
- Fixed – Retention: Ages records out against the correct clock
- Fixed – Assets: Restores cache busting, which the version stripper disabled
- Security – Plugin API: Closes an endpoint that accepted a self-chosen token without authentication
- Security – File handling: Closes an unauthenticated entry point that could write a file anywhere on the site
- Security – Email log: Requires a login to read the log
- Security – Backups: Requires authorisation to download a backup
- Security – Authentication: Compares tokens once, in constant time, instead of four times side by side
- Security – Validation: Rejects a trailing newline that could carry past an identifier check
- Security – Settings: Filters a client-supplied value before displaying it
- Security – Codebase: Removes eval() and a page that loaded code from a CDN
- Removed – Authentication: Removes the Octo-Token header and the octo-token query parameter
- Removed – Configuration: Removes the per-site token in config.php, which every update deleted
- Removed – Codebase: Removes ConfigService, TokenService and the API client that fetched the token
- Removed – Codebase: Removes tempauthfix5.json, which handed the site token to anyone who asked