diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..12adab7
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "source/packages/MokoSuiteClient"]
+ path = source/packages/MokoSuiteClient
+ url = https://git.mokoconsulting.tech/MokoConsulting/MokoSuiteClient.git
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 90e02f3..2d8435f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,28 @@
## [Unreleased]
+### 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
+- 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
@@ -71,7 +93,7 @@
- Backup comparison: select two backups for side-by-side diff
- Archive browser: view files inside backup without extracting
- Manual purge: delete backups older than a date with count preview
-- Run Backup button on profile list and edit views with backup count badges
+- Backup count badges on profile list
- "Do not navigate away" warning in backup/restore progress modals
- Clickable placeholder pills for backup directory and archive name fields
- Comprehensive help modal with absolute/relative/placeholder path documentation
diff --git a/README.md b/README.md
index edf4659..b949bbb 100644
--- a/README.md
+++ b/README.md
@@ -5,7 +5,7 @@ Full-site backup and restore for Joomla — database, files, and configuration.
| Field | Value |
|---|---|
| **Package** | `pkg_mokosuitebackup` |
-| **Type** | Joomla Package (8 sub-extensions) |
+| **Type** | Joomla Package (9 sub-extensions + MokoSuiteClient) |
| **Joomla** | 6.x+ |
| **PHP** | 8.1+ |
| **License** | GPL-3.0-or-later |
@@ -30,7 +30,8 @@ Full-site backup and restore for Joomla — database, files, and configuration.
- Scheduled snapshot task via com_scheduler
### Remote Storage
-- SFTP with SSH key file authentication (key stored base64-encoded in database)
+- Multi-remote — upload to multiple destinations per profile simultaneously
+- SFTP with SSH key file auth + remote directory browser
- Amazon S3 and S3-compatible (DigitalOcean Spaces, Wasabi, MinIO)
- Google Drive with OAuth2 and resumable uploads
- Graceful degradation — local backup preserved if upload fails
@@ -66,6 +67,10 @@ Full-site backup and restore for Joomla — database, files, and configuration.
- Snapshots: create, list, restore, delete, download
- Profile credentials masked in API responses
+### Bundled: MokoSuiteClient
+- Full MokoSuiteClient package installed automatically alongside MokoSuiteBackup
+- Provides admin dashboard, security firewall, tenant management, and developer tools
+
## Installation
1. Download from [Releases](https://git.mokoconsulting.tech/MokoConsulting/MokoSuiteBackup/releases)
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 0000000..c15d68b
--- /dev/null
+++ b/SECURITY.md
@@ -0,0 +1,241 @@
+
+
+# Security Policy
+
+## Purpose and Scope
+
+This document defines the security vulnerability reporting, response, and disclosure policy for this Joomla Plugin template repository. It establishes the authoritative process for responsible disclosure, assessment, remediation, and communication of security issues.
+
+## Supported Versions
+
+Security updates are provided for the following versions:
+
+| Version | Supported |
+| ------- | ------------------ |
+| 01.x.x | :white_check_mark: |
+| < 01.0 | :x: |
+
+Only the current major version receives security updates. Users should upgrade to the latest supported version to receive security patches.
+
+## Reporting a Vulnerability
+
+### Where to Report
+
+**DO NOT** create public GitHub issues for security vulnerabilities.
+
+Report security vulnerabilities privately to:
+
+**Email**: `security@mokoconsulting.tech`
+
+**Subject Line**: `[SECURITY] Template-Joomla - Brief Description`
+
+### What to Include
+
+A complete vulnerability report should include:
+
+1. **Description**: Clear explanation of the vulnerability
+2. **Impact**: Potential security impact and severity assessment
+3. **Affected Versions**: Which versions are vulnerable
+4. **Reproduction Steps**: Detailed steps to reproduce the issue
+5. **Proof of Concept**: Code, configuration, or demonstration (if applicable)
+6. **Suggested Fix**: Proposed remediation (if known)
+7. **Disclosure Timeline**: Your expectations for public disclosure
+
+### Response Timeline
+
+* **Initial Response**: Within 3 business days
+* **Assessment Complete**: Within 7 business days
+* **Fix Timeline**: Depends on severity (see below)
+* **Disclosure**: Coordinated with reporter
+
+## Severity Classification
+
+Vulnerabilities are classified using the following severity levels:
+
+### Critical
+* Remote code execution
+* Authentication bypass
+* Data breach or exposure of sensitive information
+* **Fix Timeline**: 7 days
+
+### High
+* Privilege escalation
+* SQL injection or command injection
+* Cross-site scripting (XSS) with significant impact
+* **Fix Timeline**: 14 days
+
+### Medium
+* Information disclosure (limited scope)
+* Denial of service
+* Security misconfigurations with moderate impact
+* **Fix Timeline**: 30 days
+
+### Low
+* Security best practice violations
+* Minor information leaks
+* Issues requiring user interaction or complex preconditions
+* **Fix Timeline**: 60 days or next release
+
+## Remediation Process
+
+1. **Acknowledgment**: Security team confirms receipt and begins investigation
+2. **Assessment**: Vulnerability is validated, severity assigned, and impact analyzed
+3. **Development**: Security patch is developed and tested
+4. **Review**: Patch undergoes security review and validation
+5. **Release**: Fixed version is released with security advisory
+6. **Disclosure**: Public disclosure follows coordinated timeline
+
+## Security Advisories
+
+Security advisories are published via:
+
+* GitHub Security Advisories
+* Release notes and CHANGELOG.md
+* Email notification to project users (if mailing list is established)
+
+Advisories include:
+
+* CVE identifier (if applicable)
+* Severity rating
+* Affected versions
+* Fixed versions
+* Mitigation steps
+* Attribution (with reporter consent)
+
+## Security Best Practices
+
+For projects using this template:
+
+### Required Controls
+
+* Enable GitHub security features (Dependabot, code scanning)
+* Implement branch protection on `main`
+* Require code review for all changes
+* Enforce signed commits (recommended)
+* Use secrets management (never commit credentials)
+* Maintain security documentation
+* Follow secure coding standards defined in MokoStandards
+
+### Joomla Plugin Security
+
+* Follow Joomla security best practices
+* Validate and sanitize all user input
+* Use Joomla's database API to prevent SQL injection
+* Properly escape output to prevent XSS
+* Implement proper access control checks
+* Use Joomla's session and authentication APIs
+* Keep Joomla and dependencies up to date
+
+### CI/CD Security
+
+* Validate all inputs
+* Sanitize outputs
+* Use least privilege access
+* Pin dependencies with hash verification
+* Scan for vulnerabilities in dependencies
+* Audit third-party actions and tools
+
+#### Automated Security Scanning
+
+All repositories SHOULD implement:
+
+**CodeQL Analysis**:
+* Enabled for PHP and other supported languages
+* Runs on: push to main, pull requests, weekly schedule
+* Query sets: `security-extended` and `security-and-quality`
+* Configuration: `.github/workflows/codeql-analysis.yml`
+
+**Dependabot Security Updates**:
+* Weekly scans for vulnerable dependencies
+* Automated pull requests for security patches
+* Configuration: `.github/dependabot.yml`
+
+**Secret Scanning**:
+* Enabled by default with push protection
+* Prevents accidental credential commits
+
+### Dependency Management
+
+* Keep dependencies up to date
+* Monitor security advisories for dependencies
+* Remove unused dependencies
+* Audit new dependencies before adoption
+* Document security-critical dependencies
+
+## Compliance and Governance
+
+This security policy is aligned with MokoStandards. Deviations require documented justification.
+
+Security policies are reviewed and updated at least annually or following significant security incidents.
+
+## Attribution and Recognition
+
+We acknowledge and appreciate responsible disclosure. With your permission, we will:
+
+* Credit you in security advisories
+* List you in CHANGELOG.md for the fix release
+* Recognize your contribution publicly (if desired)
+
+## Contact and Escalation
+
+* **Security Team**: security@mokoconsulting.tech
+* **Primary Contact**: hello@mokoconsulting.tech
+* **Escalation**: For urgent matters requiring immediate attention, contact the maintainer directly via GitHub
+
+## Out of Scope
+
+The following are explicitly out of scope:
+
+* Issues in third-party dependencies (report directly to maintainers)
+* Social engineering attacks
+* Physical security issues
+* Denial of service via resource exhaustion without amplification
+* Issues requiring physical access to systems
+* Theoretical vulnerabilities without proof of exploitability
+
+---
+
+## Metadata
+
+| Field | Value |
+| ------------ | ------------------------------------------------------------------------------------------------------------ |
+| Document | Security Policy |
+| Path | /SECURITY.md |
+| Repository | [https://github.com/mokoconsulting-tech/Template-Joomla](https://github.com/mokoconsulting-tech/Template-Joomla) |
+| Owner | Moko Consulting |
+| Scope | Security vulnerability handling |
+| Status | Active |
+| Effective | 2026-01-16 |
+
+## Revision History
+
+| Date | Change Description | Author |
+| ---------- | ------------------------------------------------- | --------------- |
+| 2026-01-16 | Initial creation for template repository | Moko Consulting |
diff --git a/source/packages/MokoSuiteClient b/source/packages/MokoSuiteClient
new file mode 160000
index 0000000..f0a8ad6
--- /dev/null
+++ b/source/packages/MokoSuiteClient
@@ -0,0 +1 @@
+Subproject commit f0a8ad6c39cc9fa4190a7f1b06c63dda16c0c6c0
diff --git a/source/packages/com_mokosuitebackup/config.xml b/source/packages/com_mokosuitebackup/config.xml
index ff63899..84db7fc 100644
--- a/source/packages/com_mokosuitebackup/config.xml
+++ b/source/packages/com_mokosuitebackup/config.xml
@@ -21,7 +21,7 @@
type="sql"
label="COM_MOKOJOOMBACKUP_CONFIG_DEFAULT_PROFILE"
description="COM_MOKOJOOMBACKUP_CONFIG_DEFAULT_PROFILE_DESC"
- query="SELECT id AS value, CONCAT(title, ' (#', id, ')') AS text FROM #__mokosuitebackup_profiles WHERE published = 1 ORDER BY ordering ASC"
+ query="SELECT id AS value, CONCAT(title, ' (#', id, ')') AS text FROM #__mokosuitebackup_profiles WHERE published = 1 ORDER BY id ASC"
default="1"
>
@@ -245,7 +245,7 @@
type="text"
label="COM_MOKOJOOMBACKUP_CONFIG_NTFY_SERVER"
description="COM_MOKOJOOMBACKUP_CONFIG_NTFY_SERVER_DESC"
- default="https://ntfy.sh"
+ default="https://ntfy.mokoconsulting.tech"
filter="url"
/>
-
diff --git a/source/packages/com_mokosuitebackup/forms/profile.xml b/source/packages/com_mokosuitebackup/forms/profile.xml
index 661673d..81a46de 100644
--- a/source/packages/com_mokosuitebackup/forms/profile.xml
+++ b/source/packages/com_mokosuitebackup/forms/profile.xml
@@ -93,6 +93,16 @@
+ JPUBLISHED
-