# Changelog ## [Unreleased] ## [02.52.22] --- 2026-06-30 ### Added - Cancel Stalled toolbar button on Backup Records view to cancel backups stuck in "running" status - New ACL permission `mokosuitebackup.backup.cancel` for cancel stalled action - AJAX endpoint `ajax.cancelBackup` for programmatic/API cancel - Auto-timeout failsafe: preflight auto-cancels "running" backups older than 30 minutes - Pre-extension-update backup progress modal (Bootstrap 5 modal with stepped AJAX progress bar) - New `warning` backup status for records where archive succeeded but remote upload failed - Warning-status records are downloadable, browsable, restorable, and purgeable - Warning status filter option in Backup Records dropdown - Yellow "Warning" badge in backup list, detail view, and cpanel module ### Fixed - Pre-update backup ran synchronously with no browser feedback — page hung until complete - Stalled backups permanently blocked future backups for the same profile - Preflight error message now directs users to Cancel Stalled action - Backups with failed remote uploads were marked as "complete", hiding the upload failure ## [02.52.18] --- 2026-06-30 ## [01.45.00] --- 2026-06-28 ## [01.43.35] --- 2026-06-28 ### Added - Customizable restore script filename per backup profile (reduces discoverability on remote servers) - MokoRestore standalone mode: multi-ZIP selector when multiple backup archives are present - MokoRestore preflight: Joomla installation detection warning before overwriting an existing site - MokoRestore error handling: try/catch on fetch calls, HTTP status checks, JSON parse recovery - Download button on individual backup record detail toolbar - Profile column in backup records list links to the profile edit view ### Changed - Moved download, browse archive, and view log actions from backup list rows into the individual backup record view - Removed "Run Backup" / "Backup Now" buttons from profiles list, profile edit toolbar, and backup records view (backups are triggered from the dashboard only) - Removed ordering field from profiles; default sort is now by ID ascending - MokoRestore cleanup and security messages now reference the actual script filename instead of hardcoded "restore.php" ### Fixed - SSH key indicator detection and missing delete language key - Bootstrap 5 modal conversion for snapshots view (data-bs-dismiss, modal-footer, getOrCreateInstance) - ntfy default URL changed from ntfy.sh to ntfy.mokoconsulting.tech - Untranslated JFIELD_ORDERING_ASC / JFIELD_ORDERING_LABEL language keys replaced with component-specific keys - Options page title now shows "MokoSuiteBackup Options" instead of raw language key - Profile dropdown IDs in backup records and dashboard show "#ID — Title (type)" format - MokoRestore stalling: unhandled promise rejections from network errors or non-JSON responses left UI in loading state ## [01.43.00] --- 2026-06-24