config.xml:
- Defaults fieldset: archive format, MokoRestore mode, sanitization
defaults (passwords, emails, sessions), log retention days
- Global ntfy fieldset: server, topic, token (fallback for profiles)
access.xml:
- mokosuitebackup.backup.purge — bulk delete old backups
- mokosuitebackup.backup.compare — compare two backups
- mokosuitebackup.backup.browse — browse archive file listings
30+ new language strings for all fields and ACL actions.
Partial #137 (ACL enforcement audit in separate commit)
Add content snapshot system for lightweight article/category/module
versioning independent of full backups. Snapshots store as JSON files
with replace or merge restore modes, wrapped in DB transactions.
- SnapshotEngine: dumps articles, categories, modules + related tables
(workflow_associations, tag maps, frontpage) to JSON
- SnapshotRestoreEngine: replace (clean slate) or merge (upsert) mode
- Full MVC: controller, models, view, template with create/restore modals
- New ACL permission: mokosuitebackup.snapshot.manage
- Submenu entry with camera icon, upgrade SQL for snapshots table
Improve full-site restore UI with confirmation modal offering options
for files, database, preserve config, and encryption password.
Config improvements:
- WebcronSecretField: CSPRNG generator, strength meter, rejects weak
patterns (password, admin, secret), enforces min 16 chars
- IpWhitelistField: table-based management, current IP detection with
one-click "Add my IP" button
- Default profile shows "Title (#ID)" format
- Default backup dir uses [DEFAULT_DIR] placeholder
- Install script generates random 32-char webcron secret
- Dashboard quick actions: full-width dropdown with button below
Add access.xml with standard Joomla core actions (admin, options,
manage, create, delete, edit, edit.state) plus three custom actions
for backup-specific operations:
- mokosuitebackup.backup.run — trigger backup operations
- mokosuitebackup.backup.download — download archive files (contains
full database and site files)
- mokosuitebackup.backup.restore — restore from backup (destructive)
Also includes: remaining review fixes for enqueueMessage consistency
in ensureSubmenuItems, syncMenuIcons, warnMissingLicenseKey catch
blocks, and index.html write check in createBackupDirectory.