diff --git a/.mokogitea/CLAUDE.md b/.mokogitea/CLAUDE.md
index f85079e9..6c2ab8b8 100644
--- a/.mokogitea/CLAUDE.md
+++ b/.mokogitea/CLAUDE.md
@@ -7,7 +7,7 @@ Full-site backup and restore for Joomla — database, files, and configuration.
| Field | Value |
|---|---|
| **Package** | `pkg_mokosuitebackup` |
-| **Language** | PHP 8.1+ |
+| **Language** | PHP 8.3+ |
| **Branch** | develop on `dev`, merge to `main` (protected) |
| **Wiki** | [MokoSuiteBackup Wiki](https://git.mokoconsulting.tech/MokoConsulting/MokoSuiteBackup/wiki) |
@@ -29,7 +29,7 @@ Joomla **package** with four sub-extensions:
### com_mokosuitebackup (Component)
- Admin backend for managing backup profiles and records
- Backup engine: `Engine/BackupEngine`, `Engine/DatabaseDumper`, `Engine/FileScanner`, `Engine/Archiver`
-- Joomla 4/5 MVC: Controllers, Models, Views, Tables
+- Joomla 6 MVC: Controllers, Models, Views, Tables
- Namespace: `Joomla\Component\MokoSuiteBackup\Administrator`
- DB tables: `#__mokosuitebackup_profiles`, `#__mokosuitebackup_records`
- CLI: `cli/mokosuitebackup.php` for cron-based backups
@@ -64,8 +64,8 @@ Joomla **package** with four sub-extensions:
## Coding Standards
-- PHP 8.1+ minimum
-- Joomla 4/5 DI container pattern: `services/provider.php` → Extension class
+- PHP 8.3+ minimum (Joomla 6)
+- Joomla 6 DI container pattern: `services/provider.php` → Extension class
- Legacy stub `.php` file required for plugin loader but empty
- `SubscriberInterface` for event subscription (not `on*` method naming)
- `bind() → check() → store()` for Table operations (not `save()`)
diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml
index 8e425f6c..328f0a3e 100644
--- a/.mokogitea/workflows/issue-branch.yml
+++ b/.mokogitea/workflows/issue-branch.yml
@@ -5,7 +5,7 @@
# FILE INFORMATION
# DEFGROUP: MokoGitea.Workflow
# INGROUP: mokocli.Automation
-# VERSION: 02.61.00
+# VERSION: 02.61.06
# BRIEF: Auto-create feature branch when an issue is opened
name: "Universal: Issue Branch"
diff --git a/SECURITY.md b/SECURITY.md
index a8030300..39210640 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -23,7 +23,7 @@ DEFGROUP: Template-Joomla
INGROUP: Template-Joomla.Documentation
REPO: https://git.mokoconsulting.tech/MokoConsulting/Template-Joomla
PATH: /SECURITY.md
-VERSION: 02.61.00
+VERSION: 02.61.06
BRIEF: Security vulnerability reporting and handling policy
-->
diff --git a/composer.json b/composer.json
index bd363ab3..08b68d15 100644
--- a/composer.json
+++ b/composer.json
@@ -12,7 +12,7 @@
}
],
"require": {
- "php": ">=8.1",
+ "php": ">=8.3",
"ext-zip": "*",
"ext-pdo": "*",
"ext-pdo_mysql": "*",
diff --git a/source/packages/MokoSuiteClient b/source/packages/MokoSuiteClient
index 246f7bb1..4097016c 160000
--- a/source/packages/MokoSuiteClient
+++ b/source/packages/MokoSuiteClient
@@ -1 +1 @@
-Subproject commit 246f7bb10c2011ec667468302cff67d5882c4456
+Subproject commit 4097016cac39f3e699b3e5dcd3f0dc68fe9ab2dd
diff --git a/source/packages/com_mokosuitebackup/language/en-GB/com_mokosuitebackup.ini b/source/packages/com_mokosuitebackup/language/en-GB/com_mokosuitebackup.ini
index 191889e2..4d4bb101 100644
--- a/source/packages/com_mokosuitebackup/language/en-GB/com_mokosuitebackup.ini
+++ b/source/packages/com_mokosuitebackup/language/en-GB/com_mokosuitebackup.ini
@@ -349,6 +349,8 @@ COM_MOKOJOOMBACKUP_RUNBACKUP_CONTINUE_ANYWAY="Continue without backup"
COM_MOKOJOOMBACKUP_RUNBACKUP_BACK_TO_DASHBOARD="Back to dashboard"
COM_MOKOJOOMBACKUP_RUNBACKUP_VIEW_RECORD="View backup record"
COM_MOKOJOOMBACKUP_RUNBACKUP_LEAVE_WARNING="A backup is in progress. Leaving now will cancel it."
+COM_MOKOJOOMBACKUP_RUNBACKUP_AUTOCONTINUE="Automatically continue the update when the backup finishes"
+COM_MOKOJOOMBACKUP_RUNBACKUP_CONTINUE_UPDATE="Continue the update"
COM_MOKOJOOMBACKUP_CONFIG_CLEANUP="Cleanup Defaults"
COM_MOKOJOOMBACKUP_CONFIG_MAX_AGE="Max Backup Age (days)"
diff --git a/source/packages/com_mokosuitebackup/language/en-US/com_mokosuitebackup.ini b/source/packages/com_mokosuitebackup/language/en-US/com_mokosuitebackup.ini
index d344d799..7f32636b 100644
--- a/source/packages/com_mokosuitebackup/language/en-US/com_mokosuitebackup.ini
+++ b/source/packages/com_mokosuitebackup/language/en-US/com_mokosuitebackup.ini
@@ -71,6 +71,8 @@ COM_MOKOJOOMBACKUP_RUNBACKUP_CONTINUE_ANYWAY="Continue without backup"
COM_MOKOJOOMBACKUP_RUNBACKUP_BACK_TO_DASHBOARD="Back to dashboard"
COM_MOKOJOOMBACKUP_RUNBACKUP_VIEW_RECORD="View backup record"
COM_MOKOJOOMBACKUP_RUNBACKUP_LEAVE_WARNING="A backup is in progress. Leaving now will cancel it."
+COM_MOKOJOOMBACKUP_RUNBACKUP_AUTOCONTINUE="Automatically continue the update when the backup finishes"
+COM_MOKOJOOMBACKUP_RUNBACKUP_CONTINUE_UPDATE="Continue the update"
COM_MOKOJOOMBACKUP_CONFIG_CLEANUP="Cleanup Defaults"
COM_MOKOJOOMBACKUP_CONFIG_MAX_AGE="Max Backup Age (days)"
diff --git a/source/packages/com_mokosuitebackup/mokosuitebackup.xml b/source/packages/com_mokosuitebackup/mokosuitebackup.xml
index e42aac89..48da2f0a 100644
--- a/source/packages/com_mokosuitebackup/mokosuitebackup.xml
+++ b/source/packages/com_mokosuitebackup/mokosuitebackup.xml
@@ -17,7 +17,7 @@
display label there.
-->
MokoSuiteBackup
- 02.61.00
+ 02.61.06
2026-06-02
Moko Consulting
hello@mokoconsulting.tech
diff --git a/source/packages/com_mokosuitebackup/sql/updates/mysql/02.61.01.sql b/source/packages/com_mokosuitebackup/sql/updates/mysql/02.61.01.sql
new file mode 100644
index 00000000..11f15c12
--- /dev/null
+++ b/source/packages/com_mokosuitebackup/sql/updates/mysql/02.61.01.sql
@@ -0,0 +1 @@
+/* 02.61.01 — no schema changes */
diff --git a/source/packages/com_mokosuitebackup/sql/updates/mysql/02.61.04.sql b/source/packages/com_mokosuitebackup/sql/updates/mysql/02.61.04.sql
new file mode 100644
index 00000000..b5f9fb78
--- /dev/null
+++ b/source/packages/com_mokosuitebackup/sql/updates/mysql/02.61.04.sql
@@ -0,0 +1 @@
+/* 02.61.04 — no schema changes */
diff --git a/source/packages/com_mokosuitebackup/sql/updates/mysql/02.61.05.sql b/source/packages/com_mokosuitebackup/sql/updates/mysql/02.61.05.sql
new file mode 100644
index 00000000..57faeebd
--- /dev/null
+++ b/source/packages/com_mokosuitebackup/sql/updates/mysql/02.61.05.sql
@@ -0,0 +1 @@
+/* 02.61.05 — no schema changes */
diff --git a/source/packages/com_mokosuitebackup/sql/updates/mysql/02.61.06.sql b/source/packages/com_mokosuitebackup/sql/updates/mysql/02.61.06.sql
new file mode 100644
index 00000000..88cad791
--- /dev/null
+++ b/source/packages/com_mokosuitebackup/sql/updates/mysql/02.61.06.sql
@@ -0,0 +1 @@
+/* 02.61.06 — no schema changes */
diff --git a/source/packages/com_mokosuitebackup/src/Engine/MokoRestore.php b/source/packages/com_mokosuitebackup/src/Engine/MokoRestore.php
index 1d06801b..a90c037f 100644
--- a/source/packages/com_mokosuitebackup/src/Engine/MokoRestore.php
+++ b/source/packages/com_mokosuitebackup/src/Engine/MokoRestore.php
@@ -480,8 +480,8 @@ function actionPreflight(): array
$checks[] = [
'label' => 'PHP Version',
'value' => PHP_VERSION,
- 'ok' => version_compare(PHP_VERSION, '8.1', '>='),
- 'hint' => 'Joomla 4/5 requires PHP 8.1+',
+ 'ok' => version_compare(PHP_VERSION, '8.3', '>='),
+ 'hint' => 'Joomla 6 requires PHP 8.3+',
];
$checks[] = [
diff --git a/source/packages/com_mokosuitebackup/src/Model/DashboardModel.php b/source/packages/com_mokosuitebackup/src/Model/DashboardModel.php
index 8ad63dfc..7a965cad 100644
--- a/source/packages/com_mokosuitebackup/src/Model/DashboardModel.php
+++ b/source/packages/com_mokosuitebackup/src/Model/DashboardModel.php
@@ -104,7 +104,7 @@ class DashboardModel extends BaseDatabaseModel
// PHP version
$checks[] = (object) [
'label' => 'PHP Version',
- 'status' => version_compare(PHP_VERSION, '8.1.0', '>='),
+ 'status' => version_compare(PHP_VERSION, '8.3.0', '>='),
'detail' => PHP_VERSION,
];
diff --git a/source/packages/com_mokosuitebackup/tmpl/runbackup/default.php b/source/packages/com_mokosuitebackup/tmpl/runbackup/default.php
index b3c7c9ae..6b2f0a3d 100644
--- a/source/packages/com_mokosuitebackup/tmpl/runbackup/default.php
+++ b/source/packages/com_mokosuitebackup/tmpl/runbackup/default.php
@@ -86,6 +86,7 @@ $config = [
'dashboard' => Text::_('COM_MOKOJOOMBACKUP_RUNBACKUP_BACK_TO_DASHBOARD'),
'viewRecord' => Text::_('COM_MOKOJOOMBACKUP_RUNBACKUP_VIEW_RECORD'),
'leaveWarn' => Text::_('COM_MOKOJOOMBACKUP_RUNBACKUP_LEAVE_WARNING'),
+ 'continueUpdate' => Text::_('COM_MOKOJOOMBACKUP_RUNBACKUP_CONTINUE_UPDATE'),
],
];
@@ -117,7 +118,17 @@ $this->getDocument()->addStyleSheet(Uri::root(true) . '/media/com_mokosuitebacku
-
+
+
+
+
+
+
+
+
+
@@ -153,7 +164,9 @@ $this->getDocument()->addStyleSheet(Uri::root(true) . '/media/com_mokosuitebacku
retry: document.getElementById('msb-rb-retry'),
record: document.getElementById('msb-rb-record'),
continue: document.getElementById('msb-rb-continue'),
- dashboard: document.getElementById('msb-rb-dashboard')
+ dashboard: document.getElementById('msb-rb-dashboard'),
+ autocontinue: document.getElementById('msb-rb-autocontinue'),
+ autocontinueWrap: document.getElementById('msb-rb-autocontinue-wrap')
};
function setBar(pct, striped) {
@@ -199,10 +212,30 @@ $this->getDocument()->addStyleSheet(Uri::root(true) . '/media/com_mokosuitebacku
try { await post({ task: 'ajax.preupdateAck', action: CFG.action || '' }); } catch (e) {}
if (CFG.returnUrl) {
- /* Pre-update / pre-uninstall flow: continue the original action.
- No "view record" button here — we're handing back to Joomla. */
- setStatus(L.continuing || 'Continuing…');
- window.setTimeout(function () { window.location.href = CFG.returnUrl; }, 1200);
+ /* Pre-update / pre-uninstall flow. If "auto-continue" is ticked
+ (default) hand back to Joomla automatically; otherwise stop here
+ and offer a link to the new backup record plus a manual
+ "Continue the update" button. */
+ if (el.autocontinueWrap) { el.autocontinueWrap.classList.add('d-none'); }
+
+ var autoContinue = !el.autocontinue || el.autocontinue.checked;
+
+ if (autoContinue) {
+ setStatus(L.continuing || 'Continuing…');
+ window.setTimeout(function () { window.location.href = CFG.returnUrl; }, 1200);
+ } else {
+ setStatus(L.complete || 'Backup complete');
+ showActions();
+
+ if (lastRecordId > 0 && CFG.recordUrl) {
+ showBtn(el.record, L.viewRecord || 'View backup record',
+ CFG.recordUrl.replace('__MSBID__', String(lastRecordId)));
+ }
+
+ el.continue.classList.remove('btn-warning');
+ el.continue.classList.add('btn-success');
+ showBtn(el.continue, L.continueUpdate || 'Continue the update', CFG.returnUrl);
+ }
} else {
/* Manual "Backup Now": offer to view the record that was just made. */
setStatus(L.complete || 'Backup complete');
diff --git a/source/packages/mod_mokosuitebackup_cpanel/mod_mokosuitebackup_cpanel.xml b/source/packages/mod_mokosuitebackup_cpanel/mod_mokosuitebackup_cpanel.xml
index 589dd842..4c43e5ac 100644
--- a/source/packages/mod_mokosuitebackup_cpanel/mod_mokosuitebackup_cpanel.xml
+++ b/source/packages/mod_mokosuitebackup_cpanel/mod_mokosuitebackup_cpanel.xml
@@ -8,7 +8,7 @@
-->
Module - MokoSuiteBackup - cPanel
- 02.61.00
+ 02.61.06
2026-06-23
Moko Consulting
hello@mokoconsulting.tech
diff --git a/source/packages/plg_actionlog_mokosuitebackup/mokosuitebackup.xml b/source/packages/plg_actionlog_mokosuitebackup/mokosuitebackup.xml
index 4f2d007e..b11e7870 100644
--- a/source/packages/plg_actionlog_mokosuitebackup/mokosuitebackup.xml
+++ b/source/packages/plg_actionlog_mokosuitebackup/mokosuitebackup.xml
@@ -7,7 +7,7 @@
-->
Action Log - MokoSuiteBackup
- 02.61.00
+ 02.61.06
2026-06-04
Moko Consulting
hello@mokoconsulting.tech
diff --git a/source/packages/plg_console_mokosuitebackup/mokosuitebackup.xml b/source/packages/plg_console_mokosuitebackup/mokosuitebackup.xml
index 77dc3ce4..9bd0fc23 100644
--- a/source/packages/plg_console_mokosuitebackup/mokosuitebackup.xml
+++ b/source/packages/plg_console_mokosuitebackup/mokosuitebackup.xml
@@ -7,7 +7,7 @@
-->
Console - MokoSuiteBackup
- 02.61.00
+ 02.61.06
2026-06-04
Moko Consulting
hello@mokoconsulting.tech
diff --git a/source/packages/plg_content_mokosuitebackup/mokosuitebackup.xml b/source/packages/plg_content_mokosuitebackup/mokosuitebackup.xml
index d098134a..a0513ce7 100644
--- a/source/packages/plg_content_mokosuitebackup/mokosuitebackup.xml
+++ b/source/packages/plg_content_mokosuitebackup/mokosuitebackup.xml
@@ -7,7 +7,7 @@
-->
Content - MokoSuiteBackup
- 02.61.00
+ 02.61.06
2026-06-04
Moko Consulting
hello@mokoconsulting.tech
diff --git a/source/packages/plg_quickicon_mokosuitebackup/mokosuitebackup.xml b/source/packages/plg_quickicon_mokosuitebackup/mokosuitebackup.xml
index 73181a3f..3aab7784 100644
--- a/source/packages/plg_quickicon_mokosuitebackup/mokosuitebackup.xml
+++ b/source/packages/plg_quickicon_mokosuitebackup/mokosuitebackup.xml
@@ -1,7 +1,7 @@
Quick Icon - MokoSuiteBackup
- 02.61.00
+ 02.61.06
2026-06-02
Moko Consulting
hello@mokoconsulting.tech
diff --git a/source/packages/plg_system_mokosuitebackup/mokosuitebackup.xml b/source/packages/plg_system_mokosuitebackup/mokosuitebackup.xml
index 62e44df0..05e1e547 100644
--- a/source/packages/plg_system_mokosuitebackup/mokosuitebackup.xml
+++ b/source/packages/plg_system_mokosuitebackup/mokosuitebackup.xml
@@ -7,7 +7,7 @@
-->
System - MokoSuiteBackup
- 02.61.00
+ 02.61.06
2026-06-02
Moko Consulting
hello@mokoconsulting.tech
diff --git a/source/packages/plg_task_mokosuitebackup/mokosuitebackup.xml b/source/packages/plg_task_mokosuitebackup/mokosuitebackup.xml
index 1c923a7a..d9686164 100644
--- a/source/packages/plg_task_mokosuitebackup/mokosuitebackup.xml
+++ b/source/packages/plg_task_mokosuitebackup/mokosuitebackup.xml
@@ -7,7 +7,7 @@
-->
Task - MokoSuiteBackup
- 02.61.00
+ 02.61.06
2026-06-02
Moko Consulting
hello@mokoconsulting.tech
diff --git a/source/packages/plg_webservices_mokosuitebackup/mokosuitebackup.xml b/source/packages/plg_webservices_mokosuitebackup/mokosuitebackup.xml
index 5156c1ac..68ad71ba 100644
--- a/source/packages/plg_webservices_mokosuitebackup/mokosuitebackup.xml
+++ b/source/packages/plg_webservices_mokosuitebackup/mokosuitebackup.xml
@@ -7,7 +7,7 @@
-->
Web Services - MokoSuiteBackup
- 02.61.00
+ 02.61.06
2026-06-02
Moko Consulting
hello@mokoconsulting.tech
diff --git a/source/pkg_mokosuitebackup.xml b/source/pkg_mokosuitebackup.xml
index f1d1faf9..e90c667c 100644
--- a/source/pkg_mokosuitebackup.xml
+++ b/source/pkg_mokosuitebackup.xml
@@ -8,7 +8,7 @@
Package - MokoSuiteBackup
mokosuitebackup
- 02.61.00
+ 02.61.06
2026-06-02
Moko Consulting
hello@mokoconsulting.tech