# Changelog ## [Unreleased] ## [01.04.00] --- 2026-06-07 ## [01.03.00] --- 2026-06-07 ## [01.02.00] --- 2026-06-07 ### Added - Joomla-styled standalone installer (MokoRestore) with 7-step wizard, admin password reset, and client provisioning - Web cron trigger for shared hosting without crontab — URL-based backup with secret word, IP whitelist - Placeholder support for backup directories and archive filenames ([host], [date], [site_name], [profile_name], etc.) - FolderPicker JS placeholder resolution — resolves [site_name]/[host] when browsing, reverse-replaces on selection for portable profiles - Archive Name Format field on backup profiles with customizable filename templates - Interactive directory tree browser for exclude filters (replaces plain text input) - Backup log viewer modal in backup records list and inline in detail view - Clickable dashboard status tiles linking to backup records, detail views, and scheduled tasks - Table exclusion now supports separate Data and Structure checkboxes (backward compatible) - Tar.gz archive format support - User group notifications for backup events - Folder picker field with live server directory browsing - Default directory dashboard warning when backups are stored inside web root - Backup log files written alongside archives (.log) - Backup detail view with checksum, file path, DB size, and embedded log - Browser beforeunload warning during backup progress ### Changed - Renamed all extension elements from mokobackup to mokojoombackup (pkg, com, all plugins, DB tables, namespaces, language keys) - Renamed source directory from src/ to source/ per MokoStandards convention - Dashboard health check shows actual resolved backup directory path from profiles - Update site post-install notice links to filtered list view (avoids Joomla core bug) - License warning suppressed when download key is already configured - Download key preserved across package updates via preflight/postflight backup ### Fixed - Download ERR_INVALID_RESPONSE — flush output buffers before sending file headers - Backup directory path resolution for absolute paths outside web root - Schema migrations consolidated to version within extension range - PSR-4 class file naming (MokoBackup*.php → MokoJoomBackup*.php) - Nested package directories from rename flattened - INSERT IGNORE for default profile prevents duplicate key on update - ActionlogsHelper::getIp() replaced — method does not exist in Joomla 5 - Console plugin namespace and quickicon translation keys - CLI exit codes and SQL schema defaults - Component Options page (added config.xml) - Placeholder-aware directory checks in FolderPicker and dashboard health ## 01.01 — 2026-06-04 ### Added - Admin dashboard view as default landing page with status cards, quick actions, and system health checklist (#28) - Console plugin (plg_console_mokojoombackup) — CLI commands: run, list, profiles, restore, cleanup (#29) - Content plugin (plg_content_mokojoombackup) — auto-backup before extension install/update (#30) - Actionlog plugin (plg_actionlog_mokojoombackup) — logs backup and profile actions to User Action Logs (#31) - BackupEngine dispatches onMokoJoomBackupAfterRun event for plugin listeners - Update site notice on dashboard and post-install ### Changed - Renamed Kickstart to MokoRestore throughout ### Fixed - SQL update migration and error handling - Removed orphaned scriptfile from component manifest - Consolidated admin files into single files block ## 01.00 — 2026-06-02 ### Added - Initial package structure with component, system plugin, task plugin, and webservices plugin - Joomla Scheduled Tasks integration (plg_task_mokojoombackup) — create multiple tasks, each running a different backup profile on its own schedule - Individual form fields for all profile settings (no raw JSON) - FTP/FTPS uploader with recursive directory creation, passive mode, SSL, and size verification - Google Drive uploader using OAuth2 refresh tokens and resumable upload API - S3-compatible remote storage: AWS S3, Wasabi, Backblaze B2, MinIO (#16) - RemoteUploaderInterface for pluggable storage backends - Remote upload integrated into BackupEngine with option to delete local copy after upload - Restore engine with file restoration and database import - MokoRestore standalone restore script — self-contained site restoration without Joomla - "Include Restore Script" toggle per profile - FileRestorer with protected file handling (preserves configuration.php, .htaccess) - DatabaseImporter with streaming line-by-line SQL execution and error tolerance - Admin dashboard quickicon widget — backup status at a glance with warnings (#18) - Differential backups — only back up files changed since last full backup (#19) - DifferentialScanner with file manifests stored in backup records - JPA archive format import for Akeeba Backup migration (#20) - AES-256 archive encryption with per-profile password (#17) - SHA-256 checksum verification for backup integrity (#15) - Email notifications on backup success/failure via Joomla mailer (#14) - Akeeba Backup Pro importer — profiles, filters, remote storage, and backup history - Auto-disables Akeeba plugins and scheduled tasks after successful import - AJAX step-based backup engine for shared hosting (overcomes max_execution_time) - Progress bar modal in admin UI with real-time phase/percentage updates - Per-profile archive settings: format, compression level, split size, backup directory - Backup engine with database dumper, file scanner, and ZIP archive builder - Backup profiles with independent configurations - Backup record management (list, download, delete) - CLI script for cron/scheduled backups - REST API compatible with MokoJoomBackup MCP server - System plugin for automatic backup cleanup with configurable retention