- Add Dashboard as first submenu entry in component manifest
- Add [DEFAULT_DIR] placeholder to PlaceholderResolver for portable profiles
- Add live AJAX directory permission checking on backup_dir field changes
- Add web-accessible warning badge on backup download buttons
- Auto-create .htaccess protection in web-accessible backup dirs on profile save
- Auto-create .htaccess protection at backup time in both engines
- Add checkDir AJAX endpoint for real-time directory validation
- Fix script.php warnMissingLicenseKey running on uninstall
- Browser warns before closing/navigating while backup is in progress
- FolderPickerField shows info status for paths with [placeholders]
instead of "Directory not found"
- Dashboard health check skips filesystem check when backup_dir uses
placeholders (resolved at backup time by PlaceholderResolver)
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add URL-based backup trigger for external cron services:
index.php?mokojoombackup_cron=SECRET&profile_id=1
- System plugin intercepts onAfterInitialise (before auth)
- Secret word, enable toggle, and IP whitelist in component config
- Timing-safe secret comparison with hash_equals
- Returns JSON response with success/failure and timestamp
Also fix: INSERT IGNORE for default profile to prevent duplicate key
error when updating an existing installation.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The mokobackup→mokojoombackup rename created double-nested directories
(e.g. com_mokojoombackup/com_mokojoombackup/). Joomla installer could
not find files at the expected paths. Flattened all packages.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>