Log
What changed each week
A short record of the work on Salvo: what went into the product, what the Lab measured and what was decided.
Updated Oct 18, 2026
Week of Oct 19, 2026
ProductOct 20 · Version 0.4.88, in testing: the migration switchover by Salvo, scheduled from the screen, with the last pass, changing in the zone only what points to the old server and email synced both ways; every step can be undone until the final deletion. It was rehearsed with a fictitious domain; no real account has been switched yet.
ProductOct 20 · Versions 0.4.75 and 0.4.76: the time left for the email migration to finish, at the real pace of the messages; create destinations from the screen (SFTP or a folder on this server), tested before saving; and space shown per disk, with how much is each destination’s and how much is left.
ProductOct 20 · Versions 0.4.69 and 0.4.70: migration followed in real time. An activity center at the top of every screen shows what is running, the step and the last signal, and warns if a server stops responding; the migration screen was redesigned by the server’s role, with each account’s progress.
ProductOct 20 · Version 0.4.66, in testing: account backup and restore on DirectAdmin, the same way as on cPanel; the whole account, a database, a mailbox or individual files. In the cPanel to DirectAdmin migration, mail folders (Sent, Trash) land in the right DirectAdmin folders. On the Roadmap, the DirectAdmin phase moves to in testing.
ProductOct 20 · Version 0.4.47: follow the migration live in Runs, with the step, the ones already done, the duration and the log updating by itself; and administrators get their Gravatar photo, or their initials when there is none.
ProductOct 20 · Version 0.4.46, in testing: named administrators and 2-step verification with an authenticator app, no SMS, as in WHM. Several people use the panel’s root, and now the Audit says who did what, without creating system accounts. On cPanel and DirectAdmin.
ProductOct 20 · Version 0.4.44: Audit. Every action in Salvo is recorded (from the screen, the terminal, the schedule, the alerts and requests from another server during a migration), with who, when, from where and what changed; records are chained, and a change made from outside shows. Under construction: named administrators and 2-step verification.
ProductOct 20 · Version 0.4.41: Salvo updates itself from the screen; an icon next to the version shows when there is a new one and updates with one click, checking the package signature. Also from the command line.
ProductOct 20 · Version 0.4.33, in testing: in a migration, checking an account again takes a few seconds, shows only the latest result and says exactly what blocks the migration.
ProductOct 20 · Version 0.4.32: in a migration, an "Update status" button for the account waiting for release on the source; and clicking the current screen in the menu reloads it.
ProductOct 20 · Version 0.4.31, in testing: in a migration, Salvo brings the list of accounts on the source server, with each one’s size and where its email is stored.
ProductOct 20 · Version 0.4.30, in testing: the migration screen got a "Migrate an account" button, to pick the source and the account, check the requirements and migrate, with the step-by-step release on the source.
ProductOct 20 · Version 0.4.29: the panel stays readable on servers with hundreds of accounts; alongside JetBackup, only backups count, and a restore never counts as a backup.
ProductOct 20 · Version 0.4.28, in testing: migrating accounts from cPanel to DirectAdmin from the screen, on both servers, with site, email, databases, calendars and contacts, checked item by item at the end; afterwards, syncs bring only what changed.
ProductOct 20 · Version 0.4.27, in testing: Salvo recognizes by itself whether the server is cPanel, DirectAdmin or Linux with no panel, and uses the right tools for each; what does not exist yet on a panel shows as "not available yet". On DirectAdmin, it reaches the databases through the panel’s own access, without storing a password. Backup and restore of DirectAdmin accounts are still planned.
ProductOct 20 · Version 0.4.26, in testing: Salvo inside DirectAdmin, in the admin menu, with the same screens as in WHM. It is the first step to migrate accounts from cPanel to DirectAdmin; DirectAdmin backup is still planned.
ProductOct 20 · Versions 0.4.20 to 0.4.25: migration got safer and faster. Files are written as the account’s user; the old server is only read, email included; nothing leaves without the admin’s release, on screen and with a deadline; databases are checked row by row; progress, Cancel and a notice at the end; and each sync carries only the difference.
ProductOct 19 · Version 0.4.19: migrate accounts whose email lives on another cPanel server (mail node): site, databases, email, calendars and contacts arrive together on the new server, with the item-by-item check. Calendars and contacts are now checked in every migration.
ProductOct 19 · Version 0.4.18: webmail arrives the way the customer left it. In a migration, each mailbox also takes its webmail filters, contacts, identities and preferences.
ProductOct 19 · Version 0.4.17: no email is left behind in a migration. Suspended mailboxes sync normally, and email folders left without an account go whole: if the customer asks for the mailbox back, just recreate it with the same name.
ProductOct 19 · Version 0.4.16: before migrating, Salvo checks every requirement (free domains, space, the WordPress sites’ PHP, databases, mailboxes, where the site and email really are, signs of a hack) and shows each one with its check mark; if something blocks it, it does not start. And migrating and syncing again now happen from the screen, with the two servers talking over their own channel.
ProductOct 19 · Version 0.4.14: migrating accounts with databases, with each database’s users and permissions; the check now requests the site on both servers. And a fix: in the fast restore, databases came back with their tables but without the users’ permissions, and the site might not connect. Now they come back complete.
ProductOct 19 · Version 0.4.13: sync an already migrated account again. Did email arrive on the old server, or did a WordPress site’s database change? Salvo brings just that part, and every sync is kept in the account’s history, with the result and the check.
ProductOct 19 · Version 0.4.12: the first account migrated from one cPanel server to another. The skeleton goes first, the panel creates the account, then files, email and databases arrive; at the end, source and destination are compared item by item, before any switch.
ProductOct 19 · Version 0.4.11: migration between servers begins. Each Salvo builds its own server’s profile and reads the others’; on a new screen, the admin sees what the destination has and what it lacks to take the accounts (PHP, database, packages, disk, DNS), both ways, before moving any account.
ProductOct 19 · Version 0.4.10: restore again with one click, from a restore’s details; the reason for each restore from the command line too; command line and logs in English, with the screens in WHM’s language.
ProductOct 19 · Version 0.4.9: before restoring, the screen shows how long it should take, with the likely range, from what Salvo has already measured on the same server. With no history, it does not guess.
ProductOct 19 · Version 0.4.8: a new Restore and download screen. Live steps, where the time goes, who asked, the site checked after restoring, a notice at the end and safety copies with a deadline and a button to go back.
ProductOct 19 · Version 0.4.7: new Runs screen. The next backup and how long it should take, when each job ran, the comparison with the previous run and redoing only the accounts that warned.
ProductOct 19 · Version 0.4.6: the fast restore measured in Labs 21, 23 and 24 became the default. Two tracks, the backup fetched whole first and 8 storage connections, without asking.
ProductOct 19 · Version 0.4.5: new Jobs screen (each job with its latest runs, what it didn’t need to write and the next runs; edit, duplicate, pause and delete without losing the backups) and a Logs screen with everything Salvo did on the server.
ProductOct 19 · Version 0.4.4: restore several accounts at once, in a queue that shows why each one is waiting (3 at a time by default); two-track restore; cancel and redo only the ones that failed; several cPanel packages at once; cancel a running backup; Salvo inside WHM.
LabOct 19 · Restoring WordPress with Salvo faster than with the cPanel package: a 3.2 GB account 36% faster, and Lab 23’s 6 accounts in 250 s, with every message.
LabOct 19 · WordPress backup with email: 6 real sites by Salvo and by JetBackup. Every message back on Salvo; 648 missing on JetBackup, which restored faster.
LabOct 19 · We improved Salvo’s restore: a 10 GB account back in 5 min 45 s at the backup storage’s worst hour (before, almost 30 minutes).
Week of Oct 12, 2026
ProductOct 13 · Salvo specification: Linux first, then cPanel and DirectAdmin; Salvo engine in Go, with SQLite.
ProductOct 13 · First code and first tests on a test server: folder backup, database dump and restore verification.
LabOct 13 · We observed one JetBackup backup night on a cPanel server with about 370 accounts.
ProductOct 14 · Name chosen: Salvo Backup.
LabOct 14 · Per-account cache: 30 MB for 233 thousand files.
PanelOct 14 · Panel screen scope; first prototype.
LabOct 15 · Compression vs deduplication on 12 WordPress accounts.
ProductOct 15 · Decided: the admin chooses, per destination, the repository mode and compression.
ProductOct 15 · Per-account metrics.
LabOct 15 · Storage network vs disk: the disk is not the bottleneck.
LabOct 15 · Cipher vs connections: the limit was the encryption, not the network.
LabOct 15 · Processor per step: compression is the costliest.
LabOct 15 · Engine upload and memory with 4 accounts together.
LabOct 15 · Full cPanel account on a production server.
LabOct 15 · Default exclusions: 35% less read.
LabOct 15 · The whole account restored on another server.
LabOct 16 · Next-day backup, cold: 4 s for 21 thousand files.
LabOct 16 · Salvo and JetBackup on the next-day backup, same 6 accounts.
LabOct 16 · First backup side by side, measured on the storage too.
LabOct 16 · Incremental right after: 152× fewer storage reads.
LabOct 16 · Disaster recovery: 10 whole accounts on another server.
LabOct 17 · Restoring a cPanel backup through Salvo: four times, the same result.
LabOct 17 · The account is gone: back, whole, from the backup.
LabOct 17 · Restore only what you need: five accidents, all back as they were.
LabOct 18 · WordPress: restore only the table that broke, in 3 seconds instead of 2 minutes.
PanelOct 15 · Third prototype of the panel, approved as a concept.
PanelOct 16 · Salvo panel inside WHM: accounts with an up-to-date backup, each run with the result of every item and the cause of every failure, accounts and destinations.
PanelOct 16 · Living alongside JetBackup in the panel: account by account, who has an up-to-date backup and where the two disagree.
PanelOct 16 · Charts in the panel: backup duration day by day, destination space with a forecast of when it fills up, and how much each run wrote.
ProductOct 16 · A log for every backup with four levels, set per server, per job or for a single run; it never records passwords or file contents.
ProductOct 16 · A backup interrupted midway now shows as interrupted, and a database that no longer exists in the account raises a warning, without deleting its old backups.
ProductOct 17 · Schedule and retention per job, editable in the panel, the command line and the API: daily, weekly, monthly or every N hours; the latest backup of each account is never deleted.
ProductOct 17 · Email, webhook and Zabbix alerts: they fire when a problem starts and when it’s resolved, with one reminder a day, instead of repeating every minute.
PanelOct 17 · Server settings screen in the panel, with CPU, memory and disk limits only during backups.
PanelOct 17 · Panel in English and Portuguese, following the WHM language.
LabOct 17 · In progress, Lab 17: a real job with the same schedule on Salvo and JetBackup (daily Monday to Saturday, weekly on Sundays), followed day by day until both start deleting the oldest backup. What does that cycling cost each one?
PanelOct 17 · Restore of a standard cPanel backup through Salvo, in the panel, the command line and the API: followed live, with an item-by-item comparison of what came back and server charts during the restore.
ProductOct 17 · Tested with a real account (about 2 GB, 14 mailboxes and 23 thousand messages) restored four times on another server: the same content all four times, with messages identical byte for byte to the original account.
PanelOct 17 · Create a job and “Run now” from the panel, and restore a whole account straight from the backup on the storage, choosing the day, with the same statistics and item-by-item comparison; also from the command line and the API.
ProductOct 17 · Tested like a real disaster: a backup of a real account, the account deleted from the server, and the whole account back from the backup in just over 2 minutes, with all 23 thousand messages; the same result from the panel and the command line.
PanelOct 17 · See what is in each backup (mailboxes, databases and folders) straight from the storage, without restoring, and restore a single database: to a new database, over the current one with a safety copy, or download the .sql; at the end, table by table, how many rows there were and how many came back.
ProductOct 17 · Tested with a 28 thousand row database: half the orders deleted, one table dropped and another created that shouldn’t be there. In about 2 seconds the database was back identical to the backup, table by table, from the panel and the command line.
PanelOct 17 · Restore just the mailbox that lost messages: bring back only what is missing (what is in the mailbox stays as it is), put the backup in a separate folder that shows up in webmail, or recreate a deleted mailbox with the same quota and password; at the end, folder by folder, how many messages there were and how many came back.
PanelOct 17 · Restore selected files and folders in the backup browser: only what is missing, replace with the backup version (with a copy of each replaced file) or into a separate folder; and download any file, folder or database. Salvo never writes through a symbolic link that could lead outside the account.
ProductOct 17 · Tested by deleting messages, a whole folder and even the mailbox: everything came back exactly as it was, message by message and file by file, from the panel and the command line.
PanelOct 17 · Before restoring, Salvo checks the server and shows what will work, what needs attention and what would block the restore: an account that already exists, a domain owned by another account, not enough disk space, a package or PHP version the server doesn’t have. Anything blocking disables the button.
PanelOct 17 · Three ways to restore a whole account: as new, replacing the current one (with a prior backup, checked by default, and automatic rollback if something goes wrong) or merging, bringing back only the missing files, messages and databases. You can also suspend, change the package or owner and leave paths out.
ProductOct 17 · Tested by deleting a file, a message and a whole database from a live account: the merge brought all three back, identical, without touching the rest. Replacing, with and without the prior backup, gave the same result from the panel and the command line.
PanelOct 17 · Lock the backup that matters, until a date or forever, with a note on why: automatic cleanup skips that backup until it expires, and it shows with a padlock in the list.
PanelOct 17 · Restore only the configuration that was lost, each part on its own: scheduled tasks (cron), DNS zone, SSL certificate, FTP accounts and database users, with the same password and permissions. For cron and DNS, bring back only what is missing or make it exactly as in the backup, with a copy of what was on the server.
ProductOct 17 · Tested by deleting a scheduled task, a DNS record, an FTP account, a database user and a subdomain’s certificate: all five came back identical to the backup, from the panel and the command line. With that, phase 2 of restores is complete.
ProductOct 18 · Several connections to the storage at once: the admin chooses 1 to 32 per storage, in the panel, the command line and the API. With just one, the storage disk spends most of its time waiting for the next request. Changing it doesn’t touch backups already written.
PanelOct 18 · The admin chooses how many files a restore reads and writes at once (faster with a slow storage, with more load on the server while restoring) and how many files the backup reads at once in each account; the backup default, one per core, is still the fastest in our Lab.
ProductOct 18 · Restore by bringing the whole backup first: when restoring a whole account, Salvo can copy the account’s backup to the server in a few large parallel reads and restore from there. It uses temporary space the size of the backup, deleted at the end. The measurement is planned.
ProductOct 18 · Keep each account’s cache, optional: indexes and folder lists stay on the server between backups, so the next-day backup and browsing what to restore no longer wait for the storage. The measurement is planned.
PanelOct 18 · Restore just one table of the WordPress database (the wp_options a plugin broke, the wp_postmeta with WooCommerce products, wp_posts): replace only that table, without touching the rest of the database, or put it in a new database alongside to compare. Salvo keeps a copy of the current database first.
ProductOct 18 · WordPress database stored table by table, optional per job: the same snapshot of the database, taken all at once, split by table, so restoring a table fetches only that table from the storage. It takes the same space on the storage (Lab 22).
PanelOct 18 · A restored email folder that deletes itself: when restoring a mailbox into a separate folder, the admin sets a deadline, and after N days the folder goes away; one click keeps it, if the customer wants it.
PanelOct 18 · A clear message when the backup is no longer on the storage: if someone deleted or moved a backup directly on the storage, the panel says so, instead of a technical error, and Salvo doesn’t create anything in its place.
PanelOct 18 · Links to the Lab in the panel: options whose default came from a measurement link straight to the post that explains the number.
ProductOct 18 · Salvo now has a version: today’s is 0.4.1. Before 1.0, the first production install at a customer, the second number only goes up at a major product milestone; everything else bumps the third.
PanelOct 18 · New dashboard, in version 0.4.2: one small square per account shows at a glance who is up to date, who is late and who has never been in a backup; late accounts are grouped by cause, each group with its own action (“Try again”, “Schedule job”).
PanelOct 18 · Search across the whole panel: part of the name of an account, a domain, a mailbox, a WordPress database or a job takes you straight to it.
ProductOct 18 · Restores that don’t take sites down: by default, a restore runs at low priority, so the server’s sites go first without the restore stalling. The admin sets the default and can change it per job.
PanelOct 18 · Test the connection to the storage step by step, with the cause written out when something fails; pick the WordPress tables to restore from a list (wp_options, wp_posts…); large lists paginated, for servers with hundreds of accounts.
PanelOct 18 · Version 0.4.3. Back up a single account: in the account list, one click backs up just that account (or the selected ones), without running the whole job.
PanelOct 18 · New account list: at a glance, how many are up to date, late, never backed up and with warnings; each card filters the list. Search by name or domain, filter by job and export to a spreadsheet.
PanelOct 18 · Step-by-step restore: each restore shows its steps with the time of each one (fetch from the storage, check, restore, check what came back) and, if it stops, at which step and what was undone.
ProductOct 18 · A backup that recovers on its own: if an account’s backup files are deleted from the storage from outside, the next backup starts over and alerts the admin, instead of failing every night.
PanelOct 18 · Every menu screen in the new design: Dashboard, Alerts, Runs, Accounts, Jobs, Destinations, Restore and download, Settings and Living with JetBackup. And an account’s failure alert now resolves itself after a good backup.