gitea-actions[bot]
821c4bae11
chore(version): pre-release bump to 01.42.01-dev [skip ci]
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Successful in 1s
2026-06-23 23:05:52 +00:00
Jonathan Miller
e86c104276
Merge remote-tracking branch 'origin/main' into chore/sync-main-to-dev
Universal: PR Check / Build RC Package (pull_request) Blocked by required conditions
Universal: PR Check / Report Issues (pull_request) Blocked by required conditions
Universal: PR Check / Branch Policy (pull_request) Successful in 2s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 16s
Universal: PR Check / Validate PR (pull_request) Failing after 6s
Universal: PR Check / Secret Scan (pull_request) Successful in 7s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 41s
2026-06-23 18:05:20 -05:00
gitea-actions[bot]
af2a1a2dae
chore: promote changelog [Unreleased] → [01.42.00]
Universal: PR Check / Build RC Package (pull_request) Blocked by required conditions
Universal: PR Check / Report Issues (pull_request) Blocked by required conditions
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Universal: PR Check / Validate PR (pull_request) Failing after 4s
Universal: PR Check / Secret Scan (pull_request) Successful in 7s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 36s
Branch Cleanup / Delete merged branch (pull_request) Has been skipped
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
2026-06-23 23:00:23 +00:00
gitea-actions[bot]
c88b163de0
chore(release): build 01.42.00 [skip ci]
2026-06-23 23:00:20 +00:00
jmiller
358a7eb68a
Merge pull request 'docs: Comprehensive CHANGELOG consolidation + wiki update + testing parameters' ( #140 ) from chore/changelog-wiki-testing into main
2026-06-23 23:00:08 +00:00
Jonathan Miller
898520d1db
chore: sync auto-release.yml from Template-Generic [skip ci]
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Successful in 2s
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 3s
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 18s
2026-06-23 17:58:49 -05:00
gitea-actions[bot]
e633d0cc0a
chore(version): pre-release bump to 01.41.03-dev [skip ci]
2026-06-23 22:20:21 +00:00
Jonathan Miller
ff7418721d
fix: review findings — key desc, missing changelog, [HOST] domain resolution
...
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Blocked by required conditions
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Blocked by required conditions
Joomla: Extension CI / PHPStan Analysis (pull_request) Blocked by required conditions
Joomla: Extension CI / Build RC Pre-Release (pull_request) Blocked by required conditions
Universal: PR Check / Build RC Package (pull_request) Blocked by required conditions
Universal: PR Check / Report Issues (pull_request) Blocked by required conditions
Generic: Repo Health / Scripts governance (pull_request) Blocked by required conditions
Generic: Repo Health / Repository health (pull_request) Blocked by required conditions
Generic: Repo Health / Report Issues (pull_request) Blocked by required conditions
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Generic: Repo Health / Access control (pull_request) Successful in 2s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 4s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 7s
Universal: PR Check / Validate PR (pull_request) Failing after 6s
Universal: PR Check / Secret Scan (pull_request) Successful in 8s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 11s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 14s
- Language: "encrypted" → "base64-encoded" for SSH key description
- CHANGELOG: added 3 missing bug fix entries (fields_values scope, CSRF
token on Run Backup, SFTP showon/required)
- [HOST] placeholder: resolve domain from Joomla live_site config when
HTTP_HOST is unavailable (CLI), instead of falling back to system
hostname (joomla.invalid). Applied to both PlaceholderResolver and
FolderPickerField.
2026-06-23 17:20:05 -05:00
gitea-actions[bot]
0b2b885163
chore(version): pre-release bump to 01.41.02-dev [skip ci]
2026-06-23 22:10:35 +00:00
Jonathan Miller
6c47838b30
fix: clean up wordy field descriptions — shorter, punchier text
...
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Blocked by required conditions
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Blocked by required conditions
Joomla: Extension CI / PHPStan Analysis (pull_request) Blocked by required conditions
Joomla: Extension CI / Build RC Pre-Release (pull_request) Blocked by required conditions
Universal: PR Check / Build RC Package (pull_request) Blocked by required conditions
Universal: PR Check / Report Issues (pull_request) Blocked by required conditions
Generic: Repo Health / Scripts governance (pull_request) Blocked by required conditions
Generic: Repo Health / Repository health (pull_request) Blocked by required conditions
Generic: Repo Health / Report Issues (pull_request) Blocked by required conditions
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 5s
Universal: PR Check / Branch Policy (pull_request) Successful in 2s
Universal: PR Check / Secret Scan (pull_request) Successful in 7s
Universal: PR Check / Validate PR (pull_request) Failing after 4s
Generic: Repo Health / Access control (pull_request) Successful in 1s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 13s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 18s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 48s
Backup dir, archive name, MokoRestore, SFTP key, sanitization,
encryption descriptions all shortened. Removed redundant placeholder
lists (now handled by clickable pills and help modal).
2026-06-23 17:09:59 -05:00
gitea-actions[bot]
0f95cb6e9f
chore(version): pre-release bump to 01.41.01-dev [skip ci]
2026-06-23 22:01:24 +00:00
Jonathan Miller
1da2fdb856
docs: comprehensive CHANGELOG consolidation for v01.41.00
...
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 12s
Consolidated all fragmented changelog entries from the session into
a single clean v01.41.00 release entry organized by feature area.
Covers: multi-remote, snapshots, SFTP, MokoRestore, sanitization,
engine improvements, admin UI, CLI/API, notifications, security.
2026-06-23 17:01:11 -05:00
gitea-actions[bot]
4bafaa519a
chore: promote changelog [Unreleased] → [01.41.00]
2026-06-23 21:54:11 +00:00
gitea-actions[bot]
3c32bd93e9
chore(release): build 01.41.00 [skip ci]
2026-06-23 21:54:07 +00:00
jmiller
ef17873448
Merge pull request 'feat: Multi-remote storage — multiple destinations per profile ( #97 )' ( #139 ) from feat/multi-remote-storage into main
2026-06-23 21:53:51 +00:00
Jonathan Miller
dae30161ae
feat: multi-remote storage — multiple destinations per profile ( #97 )
...
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Blocked by required conditions
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Blocked by required conditions
Joomla: Extension CI / PHPStan Analysis (pull_request) Blocked by required conditions
Joomla: Extension CI / Build RC Pre-Release (pull_request) Blocked by required conditions
Universal: PR Check / Build RC Package (pull_request) Blocked by required conditions
Universal: PR Check / Report Issues (pull_request) Blocked by required conditions
Generic: Repo Health / Scripts governance (pull_request) Blocked by required conditions
Generic: Repo Health / Repository health (pull_request) Blocked by required conditions
Generic: Repo Health / Report Issues (pull_request) Blocked by required conditions
Universal: PR Check / Branch Policy (pull_request) Failing after 2s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 8s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 5s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Generic: Repo Health / Access control (pull_request) Successful in 1s
Universal: PR Check / Validate PR (pull_request) Failing after 7s
Universal: PR Check / Secret Scan (pull_request) Successful in 8s
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Successful in 2s
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 5s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 41s
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 22s
New #__mokosuitebackup_remotes table stores remote destinations with
JSON params per type (SFTP/S3/GDrive/FTP). Each profile can have
multiple enabled destinations — the engine uploads to all of them.
Database:
- New table with profile_id FK, type, enabled, params JSON, ordering
- Migration auto-converts existing profile remote columns to new table
- RemoteTable, RemoteModel, RemotesModel classes
Engine:
- BackupEngine: loadRemoteDestinations() + createUploaderFromParams()
iterates all enabled remotes, falls back to legacy columns
- SteppedBackupEngine: one upload step per remote destination, persisted
via session.remoteDestinations + remoteIndex
- Local copy only deleted when ALL uploads succeed
UI:
- Profile edit: "Remote Destinations" linked table with AJAX CRUD
- Add/edit modal with type selector showing dynamic fields
- Toggle enabled/disabled, delete with confirmation
- Legacy fields hidden when remotes configured, shown as fallback
- Secrets masked in responses, merged from DB on save
Closes #97
2026-06-23 16:53:08 -05:00
jmiller
8e70bfb723
chore: sync repo-health.yml from Template-Generic [skip ci]
2026-06-23 21:52:37 +00:00
jmiller
dcd772018e
chore: sync pr-check.yml from Template-Generic [skip ci]
2026-06-23 21:52:36 +00:00
jmiller
26d765b74e
chore: sync issue-branch.yml from Template-Generic [skip ci]
2026-06-23 21:52:35 +00:00
jmiller
78b68d2647
chore: sync auto-bump.yml from Template-Generic [skip ci]
2026-06-23 21:52:34 +00:00
gitea-actions[bot]
50a879155d
chore: promote changelog [Unreleased] → [01.40.00]
2026-06-23 19:18:42 +00:00
gitea-actions[bot]
b4fb674566
chore(release): build 01.40.00 [skip ci]
2026-06-23 19:18:28 +00:00
jmiller
1b93d2ac21
Merge pull request 'feat: Complete config.xml, access.xml + ACL enforcement audit ( #137 )' ( #138 ) from feat/config-acl-audit into main
2026-06-23 19:17:48 +00:00
Jonathan Miller
8e5913d706
fix: enforce correct ACL permissions across all controllers ( #137 )
...
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Blocked by required conditions
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Blocked by required conditions
Joomla: Extension CI / PHPStan Analysis (pull_request) Blocked by required conditions
Joomla: Extension CI / Build RC Pre-Release (pull_request) Blocked by required conditions
Universal: PR Check / Build RC Package (pull_request) Blocked by required conditions
Universal: PR Check / Report Issues (pull_request) Blocked by required conditions
Generic: Repo Health / Scripts governance (pull_request) Blocked by required conditions
Generic: Repo Health / Repository health (pull_request) Blocked by required conditions
Generic: Repo Health / Report Issues (pull_request) Blocked by required conditions
Universal: PR Check / Branch Policy (pull_request) Failing after 1s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 7s
Universal: PR Check / Validate PR (pull_request) Failing after 7s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 11s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Generic: Repo Health / Access control (pull_request) Successful in 2s
Universal: PR Check / Secret Scan (pull_request) Successful in 10s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Successful in 2s
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 33s
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 5s
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 54s
13 ACL fixes across 5 files:
- BackupsController: purge() uses backup.purge (was core.delete)
- SnapshotsController: delete() uses snapshot.manage (was core.delete)
- AjaxController: restoreInit/Step use backup.restore (was backup.run),
browseArchive uses backup.browse (was core.manage),
countPurge uses backup.purge (was core.delete),
compareBackups uses backup.compare (was core.manage)
- API SnapshotsController: displayList/download use snapshot.manage
(was core.manage)
- HtmlView: verify gated by core.manage, compare by backup.compare,
purge separated from delete with backup.purge
Closes #137
2026-06-23 14:16:54 -05:00
Jonathan Miller
1f7def05c1
feat: complete config.xml and access.xml ( #137 )
...
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)
2026-06-23 14:04:12 -05:00
gitea-actions[bot]
95317fb707
chore: promote changelog [Unreleased] → [01.39.01]
2026-06-23 18:37:04 +00:00
gitea-actions[bot]
cb5ff2843d
chore(release): build 01.39.01 [skip ci]
2026-06-23 18:36:54 +00:00
jmiller
4e6369094b
Merge pull request 'fix: Resolve merge conflict markers in script.php' ( #136 ) from fix/script-merge-conflicts into main
2026-06-23 18:32:45 +00:00
Jonathan Miller
0fbcc861d9
fix: resolve merge conflict markers in script.php
...
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Failing after 10s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 44s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 9s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 7s
Universal: PR Check / Branch Policy (pull_request) Failing after 3s
Universal: PR Check / Secret Scan (pull_request) Successful in 10s
Universal: PR Check / Validate PR (pull_request) Failing after 5s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 12s
Generic: Repo Health / Access control (pull_request) Successful in 1s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Successful in 1s
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 3m49s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
12 conflict markers from a stale stash pop were accidentally
committed to main in PR #135 . Resolved all by keeping the
"Updated upstream" blocks which include both error_log() and
user-facing enqueueMessage() calls.
2026-06-23 13:32:03 -05:00
jmiller
8cea58d1f6
chore: remove security-audit.yml -- handled by MokoGitea
2026-06-23 18:27:10 +00:00
jmiller
84511b08d2
Merge pull request 'feat: Purge, CPanel module, 7z format, SFTP browser ( #119 , #105 , #122 , #98 )' ( #135 ) from feat/final-batch into main
2026-06-23 18:06:23 +00:00
Jonathan Miller
899a33bc58
feat: purge, CPanel module, 7z format, SFTP browser ( #119 , #105 , #122 , #98 )
...
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Universal: Build & Release / Build & Release Pipeline (pull_request) Failing after 10s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 3s
Universal: PR Check / Branch Policy (pull_request) Failing after 1s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 4s
Universal: PR Check / Validate PR (pull_request) Failing after 3s
Universal: PR Check / Secret Scan (pull_request) Successful in 5s
Generic: Repo Health / Access control (pull_request) Successful in 2s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Successful in 2s
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 13s
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 4m50s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
#119 : Manual purge — toolbar button opens modal with date picker,
AJAX count preview, confirmation before bulk delete.
#105 : CPanel admin dashboard module (mod_mokosuitebackup_cpanel) —
backup status, quick action buttons per profile, next scheduled,
stats, and quick links. Registered in package manifest.
#122 : 7z archive format via system 7za/7z CLI binary with optional
password encryption. New SevenZipArchiver engine class.
#98 : SFTP remote file browser — custom SftpPathField with "Browse
Remote" button, modal directory listing via SSH ls, click to navigate,
double-click to select.
Also: CHANGELOG updated, wiki Home updated, #121 verified (encryption
field already visible in Archive Settings tab).
Closes #119 , closes #105 , closes #122 , closes #98 , closes #121
2026-06-23 13:05:42 -05:00
jmiller
7970597fb8
chore: sync repo-health.yml from Template-Generic [skip ci]
2026-06-23 17:51:32 +00:00
jmiller
13f1c1db5e
chore: sync pr-check.yml from Template-Generic [skip ci]
2026-06-23 17:51:30 +00:00
jmiller
7ea30aa146
chore: sync issue-branch.yml from Template-Generic [skip ci]
2026-06-23 17:51:30 +00:00
jmiller
d96f3e7760
chore: sync deploy-manual.yml from Template-Generic [skip ci]
2026-06-23 17:51:29 +00:00
jmiller
10b31fea84
chore: sync auto-bump.yml from Template-Generic [skip ci]
2026-06-23 17:51:28 +00:00
jmiller
997924a107
Merge pull request 'fix: MokoRestore review findings + README rewrite' ( #134 ) from fix/mokorestore-review-findings into main
2026-06-23 17:49:49 +00:00
gitea-actions[bot]
9319abec41
chore(version): pre-release bump to 01.39.01-dev [skip ci]
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Successful in 3s
Universal: Build & Release / Build & Release Pipeline (pull_request) Failing after 8s
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 4m25s
2026-06-23 17:49:32 +00:00
Jonathan Miller
7e404b0246
fix: MokoRestore review findings + update README
...
Universal: PR Check / Branch Policy (pull_request) Failing after 2s
Generic: Repo Health / Access control (pull_request) Successful in 1s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 5s
Universal: PR Check / Validate PR (pull_request) Failing after 4s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 13s
Universal: PR Check / Secret Scan (pull_request) Successful in 10s
Universal: Build & Release / Promote to RC (pull_request) Failing after 10s
Universal: Build & Release / Build & Release Pipeline (pull_request) Has been skipped
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 42s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 50s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
Review fixes:
- data-only mode uses REPLACE INTO (was INSERT INTO, broke on dupes)
- temporary password is random 16-char hex (was hardcoded "changeme")
README rewritten with all features: snapshots, SFTP, MokoRestore
wizard, sanitization, dashboard, CLI, API.
2026-06-23 12:49:17 -05:00
jmiller
6638577cf5
Merge pull request 'feat: MokoRestore post-restore resets + per-table conflict resolution' ( #133 ) from feat/mokorestore-enhancements into main
2026-06-23 17:37:49 +00:00
Jonathan Miller
114995242d
chore: merge main, resolve conflicts, remove stale files
Universal: PR Check / Branch Policy (pull_request) Failing after 2s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 5s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 8s
Generic: Repo Health / Access control (pull_request) Successful in 2s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Universal: PR Check / Validate PR (pull_request) Failing after 6s
Universal: PR Check / Secret Scan (pull_request) Successful in 7s
Branch Cleanup / Delete merged branch (pull_request) Failing after 2s
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 7s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 58s
Universal: Build & Release / Build & Release Pipeline (pull_request) Failing after 5s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
2026-06-23 12:37:29 -05:00
jmiller
3d6c0974fa
chore: remove deprecated .mokogitea/workflows/composer-publish.yml [skip ci]
2026-06-23 17:36:30 +00:00
jmiller
8aefc1d702
chore: remove deprecated .mokogitea/workflows/deploy-manual.yml [skip ci]
2026-06-23 17:36:27 +00:00
Jonathan Miller
da52a9d2f9
Merge remote-tracking branch 'origin/main' into feat/mokorestore-enhancements
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 6s
Universal: PR Check / Branch Policy (pull_request) Failing after 3s
Universal: PR Check / Validate PR (pull_request) Failing after 6s
Universal: PR Check / Secret Scan (pull_request) Successful in 10s
Generic: Repo Health / Access control (pull_request) Successful in 2s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 17s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 51s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
2026-06-23 12:33:59 -05:00
Jonathan Miller
0dc0eb1bef
feat: MokoRestore post-restore resets + per-table conflict resolution ( #131 , #132 )
...
Universal: PR Check / Branch Policy (pull_request) Failing after 1s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 5s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Generic: Repo Health / Access control (pull_request) Successful in 1s
Universal: PR Check / Secret Scan (pull_request) Successful in 6s
Universal: PR Check / Validate PR (pull_request) Failing after 7s
Universal: Build & Release / Promote to RC (pull_request) Failing after 13s
Universal: Build & Release / Build & Release Pipeline (pull_request) Has been skipped
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 53s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 1m0s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
#131 : Post-restore actions step in MokoRestore wizard:
- Reset all passwords to temporary "changeme" with requireReset flag
- Reset article hit counters to zero
- Clear content versions (#__history)
- Clear sessions (#__session)
- Clear cache tables and filesystem cache
- Auto-detect sanitized password hashes and prompt for reset
#132 : Per-table conflict resolution during database import:
- New "Tables" step shows all tables from database.sql
- Per-table dropdown: Replace / Skip / Merge / Data Only
- Preset buttons: All Replace, All Skip, Everything except users
- Skip mode skips all statements for that table
- Merge mode uses INSERT IGNORE instead of INSERT INTO
- Data Only skips DROP/CREATE, inserts data only
Wizard now has 9 steps: Pre-check → Extract → Tables → Database →
Config → Admin → Post-Restore → Provisioning → Complete
Closes #131 , closes #132
2026-06-23 12:33:18 -05:00
jmiller
1def73df19
chore: sync repo-health.yml from Template-Generic [skip ci]
2026-06-23 17:11:33 +00:00
jmiller
48f132ecf9
chore: sync pr-check.yml from Template-Generic [skip ci]
2026-06-23 17:11:32 +00:00
jmiller
c17349277d
chore: sync issue-branch.yml from Template-Generic [skip ci]
2026-06-23 17:11:31 +00:00
jmiller
5a6ad02b53
chore: sync auto-bump.yml from Template-Generic [skip ci]
2026-06-23 17:11:29 +00:00
gitea-actions[bot]
29da9776cd
chore: promote changelog [Unreleased] → [01.39.00]
2026-06-23 17:08:24 +00:00
gitea-actions[bot]
09bac755a9
chore(release): build 01.39.00 [skip ci]
Publish to Composer / Publish Package (release) Failing after 7s
2026-06-23 17:08:16 +00:00
jmiller
f830dc2ddf
Merge pull request 'feat: Data sanitization — passwords, emails, sessions ( #129 )' ( #130 ) from feat/sanitize-user-passwords into main
2026-06-23 17:06:47 +00:00
Jonathan Miller
5698c074da
feat: data sanitization — passwords, emails, sessions ( #129 )
...
Universal: PR Check / Branch Policy (pull_request) Failing after 1s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 5s
Universal: PR Check / Validate PR (pull_request) Failing after 7s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Universal: PR Check / Secret Scan (pull_request) Successful in 7s
Generic: Repo Health / Access control (pull_request) Successful in 2s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 9s
Branch Cleanup / Delete merged branch (pull_request) Successful in 3s
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 6s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 54s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 33s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
New "Data Sanitization" fieldset on profile form with four options:
- Sanitize User Passwords: replaces all bcrypt hashes with invalid sentinel
- Preserve Super Admin: keeps Super Users group passwords intact
- Sanitize User Emails: replaces with user123@sanitized.example.com
- Clear Session Data: excludes #__session table data (default: on)
DatabaseDumper sanitizes rows inline during dump — both in-memory
and file-streaming paths. Super admin detection uses group_id=8
from #__user_usergroup_map with static caching.
Use cases: sharing backups, creating demo/staging sites, GDPR compliance.
Partial #129 (Part 2 — restore script password reset — tracked separately)
2026-06-23 12:06:19 -05:00
gitea-actions[bot]
aaf189b87a
chore: promote changelog [Unreleased] → [01.38.05]
2026-06-23 16:59:10 +00:00
gitea-actions[bot]
61023821e6
chore(release): build 01.38.05 [skip ci]
Publish to Composer / Publish Package (release) Failing after 34s
2026-06-23 16:59:02 +00:00
jmiller
02a6e30db1
Merge pull request 'feat: Comprehensive help modal for backup directory + fix help button' ( #128 ) from fix/folder-picker-tooltip into main
2026-06-23 16:58:45 +00:00
gitea-actions[bot]
5a0cd51df6
chore(version): pre-release bump to 01.38.05-dev [skip ci]
Publish to Composer / Publish Package (release) Failing after 4s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Successful in 3s
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 5s
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 33s
2026-06-23 16:58:33 +00:00
Jonathan Miller
12c832d7fe
feat: comprehensive help modal for backup directory field
...
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 3s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 11s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 5s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Universal: PR Check / Branch Policy (pull_request) Failing after 2s
Generic: Repo Health / Access control (pull_request) Successful in 1s
Universal: PR Check / Validate PR (pull_request) Failing after 4s
Universal: PR Check / Secret Scan (pull_request) Successful in 4s
Universal: Build & Release / Promote to RC (pull_request) Failing after 8s
Universal: Build & Release / Build & Release Pipeline (pull_request) Has been skipped
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 43s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
Expanded the help modal with:
- Absolute paths: starts with / or drive letter, used as-is
- Relative paths: ./backups, ../backups, ../../backups with table
showing URL-style conventions and resolved examples
- Placeholder paths: detailed descriptions of each placeholder
with current server values
- Recommended configurations table: single site, multi-site,
date-organized, per-profile, shared hosting
- Security warnings for web-root-accessible paths
- Help button uses JS click handler with Bootstrap 5 fallback
(fixes non-working tooltip icon)
2026-06-23 11:58:20 -05:00
gitea-actions[bot]
65c8820db4
chore: promote changelog [Unreleased] → [01.38.04]
2026-06-23 16:53:45 +00:00
gitea-actions[bot]
0f914c3061
chore(release): build 01.38.04 [skip ci]
Publish to Composer / Publish Package (release) Failing after 42s
2026-06-23 16:53:42 +00:00
jmiller
4191f44c1b
Merge pull request 'feat: Uppercase all placeholders + EXAMPLE prefix in display' ( #127 ) from fix/uppercase-placeholders into main
2026-06-23 16:53:28 +00:00
gitea-actions[bot]
fb99afbeba
chore(version): pre-release bump to 01.38.04-dev [skip ci]
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Failing after 1s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 3s
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 17s
Publish to Composer / Publish Package (release) Failing after 33s
2026-06-23 16:53:16 +00:00
Jonathan Miller
de632e9c5c
feat: uppercase all placeholders + EXAMPLE prefix in resolution display
...
Universal: PR Check / Branch Policy (pull_request) Failing after 2s
Generic: Repo Health / Access control (pull_request) Successful in 2s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 20s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 10s
Universal: PR Check / Validate PR (pull_request) Failing after 11s
Universal: PR Check / Secret Scan (pull_request) Successful in 12s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 14s
Universal: Build & Release / Promote to RC (pull_request) Failing after 10s
Universal: Build & Release / Build & Release Pipeline (pull_request) Has been skipped
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 47s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
All placeholders changed from lowercase to UPPERCASE:
[host] → [HOST], [site_name] → [SITE_NAME], [date] → [DATE],
[datetime] → [DATETIME], [profile_id] → [PROFILE_ID], etc.
[HOME] and [DEFAULT_DIR] were already uppercase — now consistent.
SQL migration 01.39.01 updates existing profile data in the database.
Resolution display prefixed with "EXAMPLE:" to clarify these are
example values resolved at backup time.
13 files updated across engines, fields, forms, templates, and SQL.
2026-06-23 11:52:52 -05:00
gitea-actions[bot]
53ff99148c
chore: promote changelog [Unreleased] → [01.38.03]
2026-06-23 16:50:30 +00:00
gitea-actions[bot]
c2ff3b272a
chore(release): build 01.38.03 [skip ci]
Publish to Composer / Publish Package (release) Failing after 4s
2026-06-23 16:50:27 +00:00
jmiller
747b68c179
Merge pull request 'fix: Resolve [site_name] and all placeholders in checkDir AJAX' ( #126 ) from fix/site-name-resolution into main
2026-06-23 16:50:07 +00:00
gitea-actions[bot]
cbff40d04c
chore(version): pre-release bump to 01.38.03-dev [skip ci]
Publish to Composer / Publish Package (release) Failing after 7s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Successful in 2s
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 6s
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 21s
2026-06-23 16:49:45 +00:00
Jonathan Miller
e415e701cd
fix: resolve [site_name] and other placeholders in checkDir AJAX
...
Universal: PR Check / Branch Policy (pull_request) Failing after 2s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 5s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Generic: Repo Health / Access control (pull_request) Successful in 3s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 15s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 8s
Universal: PR Check / Validate PR (pull_request) Failing after 7s
Universal: PR Check / Secret Scan (pull_request) Successful in 9s
Universal: Build & Release / Promote to RC (pull_request) Failing after 15s
Universal: Build & Release / Build & Release Pipeline (pull_request) Has been skipped
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 46s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
BackupDirectory::resolve() only handles [HOME] and [DEFAULT_DIR].
The checkDir AJAX endpoint now uses PlaceholderResolver to also
resolve [site_name], [host], [profile_id], [date], etc. before
checking if the directory exists. This makes the "Resolves to"
display accurate for all placeholder types.
2026-06-23 11:49:21 -05:00
jmiller
d184ed9de0
chore: sync repo-health.yml from Template-Generic [skip ci]
2026-06-23 16:38:26 +00:00
jmiller
297f27c807
chore: sync pr-check.yml from Template-Generic [skip ci]
2026-06-23 16:38:26 +00:00
jmiller
30e8d7baa9
chore: sync issue-branch.yml from Template-Generic [skip ci]
2026-06-23 16:38:25 +00:00
jmiller
efc5754bef
chore: sync auto-bump.yml from Template-Generic [skip ci]
2026-06-23 16:38:23 +00:00
gitea-actions[bot]
e3e422d29e
chore: promote changelog [Unreleased] → [01.38.02]
2026-06-23 16:37:12 +00:00
gitea-actions[bot]
9f5c8c0b5e
chore(release): build 01.38.02 [skip ci]
Publish to Composer / Publish Package (release) Failing after 7s
2026-06-23 16:37:04 +00:00
jmiller
044e57adf3
Merge pull request 'fix: Placeholder resolution display + CSRF token on Run Backup button' ( #125 ) from fix/placeholder-resolution-display into main
2026-06-23 16:36:45 +00:00
gitea-actions[bot]
e7f165ac96
chore(version): pre-release bump to 01.38.02-dev [skip ci]
Universal: PR Check / Branch Policy (pull_request) Failing after 2s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 7s
Generic: Repo Health / Access control (pull_request) Successful in 3s
Universal: PR Check / Validate PR (pull_request) Failing after 8s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 13s
Universal: PR Check / Secret Scan (pull_request) Successful in 12s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Successful in 2s
Publish to Composer / Publish Package (release) Failing after 45s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 48s
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 31s
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 3m46s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
2026-06-23 16:36:09 +00:00
Jonathan Miller
fc41e1801a
fix: placeholder resolution display + CSRF token on Run Backup button
...
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 26s
FolderPickerField: shows resolved placeholder values below input as
badges (e.g. [HOME]=/home/user, [host]=example.com), plus full
resolved path. Updates live as user types.
BackupsController::start(): accept CSRF token from both GET and POST
so the "Run Backup Now" link button on profile edit works without
triggering "security token did not match" error.
2026-06-23 11:35:48 -05:00
gitea-actions[bot]
1aa35dd041
chore: promote changelog [Unreleased] → [01.38.01]
2026-06-23 16:28:19 +00:00
gitea-actions[bot]
6a1f4a8797
chore(release): build 01.38.01 [skip ci]
Publish to Composer / Publish Package (release) Failing after 6s
2026-06-23 16:28:13 +00:00
jmiller
6f6a6c705b
Merge pull request 'fix: include_mokorestore column type — TINYINT cannot store 'standalone'' ( #124 ) from fix/mokorestore-column-type into main
2026-06-23 16:27:48 +00:00
gitea-actions[bot]
e8d7d1d421
chore(version): pre-release bump to 01.38.01-dev [skip ci]
Publish to Composer / Publish Package (release) Failing after 4s
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Successful in 3s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 7s
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 29s
2026-06-23 16:27:27 +00:00
Jonathan Miller
cd31617e21
fix: change include_mokorestore column from TINYINT to VARCHAR(20)
...
Universal: PR Check / Branch Policy (pull_request) Failing after 1s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 12s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 4s
Universal: PR Check / Validate PR (pull_request) Failing after 5s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Generic: Repo Health / Access control (pull_request) Successful in 2s
Universal: PR Check / Secret Scan (pull_request) Successful in 7s
Universal: Build & Release / Promote to RC (pull_request) Failing after 10s
Universal: Build & Release / Build & Release Pipeline (pull_request) Has been skipped
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 45s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 50s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
The column was TINYINT(1) which can only store 0/1. The new
'standalone' mode value causes MySQL to truncate the string to 0,
breaking profile save. Changed to VARCHAR(20) to support all three
modes: '0' (none), '1' (wrapped), 'standalone'.
2026-06-23 11:27:04 -05:00
jmiller
6d9d96d7cd
chore: sync repo-health.yml from Template-Generic [skip ci]
2026-06-23 16:23:22 +00:00
jmiller
df7c07bec4
chore: sync pr-check.yml from Template-Generic [skip ci]
2026-06-23 16:23:21 +00:00
jmiller
5b4717bf6f
chore: sync issue-branch.yml from Template-Generic [skip ci]
2026-06-23 16:23:20 +00:00
jmiller
65d30613b2
chore: sync auto-bump.yml from Template-Generic [skip ci]
2026-06-23 16:23:18 +00:00
gitea-actions[bot]
d5bbab7e72
chore: promote changelog [Unreleased] → [01.38.00]
2026-06-23 16:22:00 +00:00
gitea-actions[bot]
18b65d30ac
chore(release): build 01.38.00 [skip ci]
Publish to Composer / Publish Package (release) Failing after 34s
2026-06-23 16:21:52 +00:00
jmiller
f55b032cc9
Merge pull request 'feat: Standalone restore script — separate file that scans for ZIPs ( #107 )' ( #123 ) from feat/standalone-restore-script into main
2026-06-23 16:21:33 +00:00
Jonathan Miller
e62dba8f40
feat: standalone restore script — separate file that scans for ZIPs ( #107 )
...
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 7s
Universal: PR Check / Branch Policy (pull_request) Failing after 3s
Universal: PR Check / Secret Scan (pull_request) Successful in 9s
Universal: PR Check / Validate PR (pull_request) Failing after 7s
Generic: Repo Health / Access control (pull_request) Successful in 3s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 16s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Successful in 2s
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 53s
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 31s
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 8m41s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
New MokoRestore mode: 'standalone' generates restore.php as a separate
file that scans its directory for ZIP backup archives and lets the user
choose which one to restore. Unlike 'wrapped' mode which bundles
restore.php inside the backup ZIP, standalone mode keeps both files
separate — ideal for remote servers where you SCP the backup.
Changes:
- MokoRestore::generateStandalone() — writes restore.php with ZIP scanner
- Profile form: include_mokorestore now a dropdown (none/wrapped/standalone)
- BackupEngine: standalone mode writes restore.php + uploads to remote
- Restore script uses safe DOM methods (no innerHTML with user data)
Closes #107
2026-06-23 11:20:23 -05:00
jmiller
0619825f38
chore: sync issue-branch.yml from Template-Generic [skip ci]
2026-06-23 16:05:30 +00:00
gitea-actions[bot]
70d7da34b3
chore: promote changelog [Unreleased] → [01.37.00]
2026-06-23 16:04:44 +00:00
gitea-actions[bot]
13c251196b
chore(release): build 01.37.00 [skip ci]
Publish to Composer / Publish Package (release) Failing after 4s
2026-06-23 16:04:41 +00:00
jmiller
4841f24eab
Merge pull request 'feat: Profiles UI, snapshot detail, progress warning, action logs' ( #120 ) from feat/batch-ui-fixes into main
2026-06-23 16:03:42 +00:00
Jonathan Miller
64ffbb9d61
feat: profiles UI, snapshot detail, progress warning, action logs ( #100 , #104 , #108 , #110 )
...
Universal: PR Check / Branch Policy (pull_request) Failing after 1s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 4s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Universal: PR Check / Validate PR (pull_request) Failing after 4s
Generic: Repo Health / Access control (pull_request) Successful in 2s
Universal: PR Check / Secret Scan (pull_request) Successful in 6s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 10s
Branch Cleanup / Delete merged branch (pull_request) Successful in 1s
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 39s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 18s
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 4m10s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
#100 : Run Backup button on profiles list (per-row) and edit toolbar,
backup count badge linking to filtered backups view, View Backups
toolbar button on profile edit.
#101 : Profile → filtered backup list link (included in #100 ).
#104 : Snapshot browse modal now shows tabbed view (Articles,
Categories, Modules) with item counts. AjaxController returns
all content types. Categories show indented hierarchy.
#108 : "Do not navigate away or close this window" warning banner
added to both backup and restore progress modals.
#110 : Joomla Action Logs integration — RestoreEngine, SnapshotEngine,
and SnapshotRestoreEngine now dispatch events that the actionlog
plugin logs to #__action_logs.
Closes #100 , closes #101 , closes #104 , closes #108 , closes #110
2026-06-23 11:03:13 -05:00
jmiller
83e91c6fa6
chore: sync repo-health.yml from Template-Generic [skip ci]
2026-06-23 15:50:28 +00:00
jmiller
b1833825e7
chore: sync pr-check.yml from Template-Generic [skip ci]
2026-06-23 15:50:27 +00:00
jmiller
bde20e82ad
chore: sync issue-branch.yml from Template-Generic [skip ci]
2026-06-23 15:50:26 +00:00
jmiller
8348d23fe4
chore: sync auto-bump.yml from Template-Generic [skip ci]
2026-06-23 15:50:25 +00:00
gitea-actions[bot]
d9557489d5
chore: promote changelog [Unreleased] → [01.36.00]
2026-06-23 15:48:58 +00:00
gitea-actions[bot]
089ec69595
chore(release): build 01.36.00 [skip ci]
Publish to Composer / Publish Package (release) Failing after 7s
2026-06-23 15:48:50 +00:00
jmiller
7427cbb043
Merge pull request 'feat: Clickable placeholder pills for backup dir and archive name' ( #102 ) from feat/clickable-placeholders into main
2026-06-23 15:48:34 +00:00
Jonathan Miller
456e744d81
feat: clickable placeholder pills for backup dir and archive name fields
...
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 6s
Universal: PR Check / Branch Policy (pull_request) Failing after 4s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 12s
Generic: Repo Health / Access control (pull_request) Successful in 2s
Universal: PR Check / Validate PR (pull_request) Failing after 7s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Universal: PR Check / Secret Scan (pull_request) Successful in 10s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 14s
Branch Cleanup / Delete merged branch (pull_request) Successful in 2s
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 26s
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 9m59s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
Both Backup Directory and Archive Name Format fields now show clickable
placeholder tags below the input. Clicking a tag inserts the placeholder
at the current cursor position using selectionStart/End.
- FolderPickerField: pills for [HOME], [DEFAULT_DIR], [host], [site_name],
[date], [profile_id], [profile_name], [type]
- PlaceholderTextField: new custom field type used by archive_name_format,
configurable placeholders via XML attribute
- Cursor position preserved after insert, input event dispatched for
live status updates
2026-06-23 10:47:45 -05:00
gitea-actions[bot]
6d5ef50727
chore: promote changelog [Unreleased] → [01.35.04]
2026-06-23 15:41:32 +00:00
gitea-actions[bot]
00e7963988
chore(release): build 01.35.04 [skip ci]
Publish to Composer / Publish Package (release) Failing after 4s
2026-06-23 15:41:29 +00:00
jmiller
bc06657317
Merge pull request 'fix: SFTP fields not showing when SFTP selected' ( #99 ) from fix/sftp-key-upload into main
2026-06-23 15:40:43 +00:00
Jonathan Miller
bda4b0a23d
Merge branch 'fix/sftp-key-upload' of https://git.mokoconsulting.tech/MokoConsulting/MokoSuiteBackup into fix/sftp-key-upload
...
Universal: PR Check / Branch Policy (pull_request) Failing after 1s
Generic: Repo Health / Access control (pull_request) Successful in 2s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 5s
Universal: PR Check / Validate PR (pull_request) Failing after 4s
Universal: PR Check / Secret Scan (pull_request) Successful in 5s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 9s
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Successful in 2s
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 5s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 38s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 44s
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 21s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
# Conflicts:
# .mokogitea/workflows/issue-branch.yml
# README.md
# source/packages/com_mokosuitebackup/mokosuitebackup.xml
# source/packages/plg_actionlog_mokosuitebackup/mokosuitebackup.xml
# source/packages/plg_console_mokosuitebackup/mokosuitebackup.xml
# source/packages/plg_content_mokosuitebackup/mokosuitebackup.xml
# source/packages/plg_quickicon_mokosuitebackup/mokosuitebackup.xml
# source/packages/plg_system_mokosuitebackup/mokosuitebackup.xml
# source/packages/plg_task_mokosuitebackup/mokosuitebackup.xml
# source/packages/plg_webservices_mokosuitebackup/mokosuitebackup.xml
# source/pkg_mokosuitebackup.xml
2026-06-23 10:40:27 -05:00
Jonathan Miller
e327f9cf5c
chore: normalize workflows
2026-06-23 10:40:16 -05:00
Jonathan Miller
5b9351e5f0
Merge remote-tracking branch 'origin/main' into fix/sftp-key-upload
2026-06-23 10:38:26 -05:00
gitea-actions[bot]
5785e9fd1e
chore(version): pre-release bump to 01.35.04-dev [skip ci]
Publish to Composer / Publish Package (release) Failing after 32s
2026-06-23 15:37:59 +00:00
Jonathan Miller
1e9c8d54f4
fix: remove required attr from SFTP showon fields — blocks save when not SFTP
...
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 22s
Joomla validates required fields server-side regardless of showon
visibility. SFTP fields with required="true" block saving when
remote_storage is set to None or S3/GDrive because the hidden
fields submit empty values. Validation should be done in
ProfileTable::check() conditionally instead.
2026-06-23 10:37:38 -05:00
jmiller
7515274712
chore: sync repo-health.yml from Template-Generic [skip ci]
2026-06-23 13:54:34 +00:00
jmiller
0be459fe34
chore: sync pr-check.yml from Template-Generic [skip ci]
2026-06-23 13:54:33 +00:00
jmiller
11ccdbfde4
chore: sync issue-branch.yml from Template-Generic [skip ci]
2026-06-23 13:54:32 +00:00
jmiller
fd517c16f3
chore: sync auto-bump.yml from Template-Generic [skip ci]
2026-06-23 13:54:31 +00:00
gitea-actions[bot]
fe76f81b47
chore: promote changelog [Unreleased] → [01.35.03]
2026-06-23 13:53:26 +00:00
gitea-actions[bot]
18127454b5
chore(release): build 01.35.03 [skip ci]
Publish to Composer / Publish Package (release) Failing after 5s
2026-06-23 13:53:23 +00:00
jmiller
7826c315b1
Merge pull request 'feat: SFTP key file upload, auth type dropdown, security hardening' ( #96 ) from fix/sftp-key-upload into main
2026-06-23 13:53:03 +00:00
gitea-actions[bot]
e329dbd99b
chore(version): pre-release bump to 01.35.03-dev [skip ci]
Publish to Composer / Publish Package (release) Failing after 7s
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Successful in 3s
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 20s
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 2m33s
2026-06-23 13:52:11 +00:00
Jonathan Miller
d6b3e8cff0
feat: SFTP key file upload, auth type dropdown, security hardening
...
Universal: PR Check / Branch Policy (pull_request) Failing after 2s
Generic: Repo Health / Access control (pull_request) Successful in 2s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 6s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 23s
Universal: PR Check / Validate PR (pull_request) Failing after 7s
Universal: PR Check / Secret Scan (pull_request) Successful in 9s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 13s
Universal: Build & Release / Promote to RC (pull_request) Failing after 11s
Universal: Build & Release / Build & Release Pipeline (pull_request) Has been skipped
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 34s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
SFTP UX improvements:
- SshKeyField: file upload button (FileReader → base64 → hidden field),
key never displayed as readable text, __KEEP_EXISTING__ sentinel
preserves DB value on re-save without re-uploading
- Auth type dropdown: password / key file / key file + passphrase
with conditional field visibility via showon
- Required field markers on host, username, path, password
- Remove insecure FTP option from remote storage dropdown
Security:
- Private key stored base64-encoded in database
- SftpUploader decodes base64 before writing temp file
- ProfileTable::store() handles sentinel to prevent key leakage
- Key content never rendered in HTML form output
2026-06-23 08:51:49 -05:00
gitea-actions[bot]
80c97620a5
chore: promote changelog [Unreleased] → [01.35.01]
2026-06-23 13:33:26 +00:00
gitea-actions[bot]
33d852bacf
chore(release): build 01.35.01 [skip ci]
Publish to Composer / Publish Package (release) Failing after 3s
2026-06-23 13:33:24 +00:00
jmiller
8be0500913
Merge pull request 'fix: SFTP fields not showing when SFTP selected' ( #95 ) from fix/sftp-showon into main
2026-06-23 13:32:53 +00:00
Jonathan Miller
27dded6c62
Merge remote-tracking branch 'origin/main' into fix/sftp-showon
...
Universal: PR Check / Branch Policy (pull_request) Failing after 2s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 6s
Generic: Repo Health / Access control (pull_request) Successful in 2s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Universal: PR Check / Secret Scan (pull_request) Successful in 9s
Universal: PR Check / Validate PR (pull_request) Failing after 7s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 14s
Branch Cleanup / Delete merged branch (pull_request) Successful in 3s
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 7s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 24s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 46s
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 15s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
# Conflicts:
# .mokogitea/workflows/issue-branch.yml
# README.md
# source/packages/com_mokosuitebackup/mokosuitebackup.xml
# source/packages/plg_actionlog_mokosuitebackup/mokosuitebackup.xml
# source/packages/plg_console_mokosuitebackup/mokosuitebackup.xml
# source/packages/plg_content_mokosuitebackup/mokosuitebackup.xml
# source/packages/plg_quickicon_mokosuitebackup/mokosuitebackup.xml
# source/packages/plg_system_mokosuitebackup/mokosuitebackup.xml
# source/packages/plg_task_mokosuitebackup/mokosuitebackup.xml
# source/packages/plg_webservices_mokosuitebackup/mokosuitebackup.xml
# source/pkg_mokosuitebackup.xml
2026-06-23 08:32:28 -05:00
gitea-actions[bot]
e465dfa6ee
chore(version): pre-release bump to 01.35.01-dev [skip ci]
Publish to Composer / Publish Package (release) Failing after 42s
2026-06-23 13:29:25 +00:00
Jonathan Miller
3ac0318ba3
fix: move SFTP fields into remote fieldset for showon to work
...
Universal: PR Check / Branch Policy (pull_request) Failing after 1s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 12s
Generic: Repo Health / Access control (pull_request) Successful in 1s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 4s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 7s
Universal: PR Check / Validate PR (pull_request) Failing after 5s
Universal: PR Check / Secret Scan (pull_request) Successful in 6s
Universal: Build & Release / Promote to RC (pull_request) Failing after 12s
Universal: Build & Release / Build & Release Pipeline (pull_request) Has been skipped
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 49s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
Joomla's showon JS only finds the controlling field (remote_storage)
within the same rendered fieldset/tab. SFTP fields were in a separate
fieldset so they were never shown. Moved into the remote fieldset
alongside the dropdown.
2026-06-23 08:29:12 -05:00
gitea-actions[bot]
17e4625448
chore: promote changelog [Unreleased] → [01.35.00]
2026-06-23 13:22:50 +00:00
gitea-actions[bot]
eb748323f7
chore(release): build 01.35.00 [skip ci]
Publish to Composer / Publish Package (release) Failing after 8s
2026-06-23 13:22:43 +00:00
jmiller
bc3085f74b
Merge pull request 'feat: SFTP remote storage with key file auth + CLI restore options' ( #94 ) from feat/sftp-keyfile into main
2026-06-23 13:22:29 +00:00
Jonathan Miller
f66100f74f
feat: SFTP remote storage with key file auth + CLI restore options
...
Universal: PR Check / Branch Policy (pull_request) Failing after 2s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 7s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 13s
Universal: PR Check / Secret Scan (pull_request) Successful in 9s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Generic: Repo Health / Access control (pull_request) Successful in 2s
Universal: PR Check / Validate PR (pull_request) Failing after 9s
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Failing after 1s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 34s
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 3s
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 27s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
SFTP support:
- SftpUploader uses system scp/ssh binaries with key file auth
- Private key stored as MEDIUMTEXT in profile table (sftp_key_data)
- Key written to temp file (0600) at upload time, deleted after
- Profile form: host, port, username, password, key textarea,
passphrase, remote path — all with showon="remote_storage:sftp"
- SQL migration for 7 new SFTP columns
- Wired into BackupEngine, SteppedBackupEngine, PreflightCheck
- API credential masking includes SFTP fields
CLI restore options:
- --files-only: restore files without touching database
- --db-only: restore database without touching files
- --no-preserve-config: overwrite configuration.php
- --password: decryption password for encrypted archives
2026-06-23 08:21:10 -05:00
jmiller
be8b1f73bf
chore: sync repo-health.yml from Template-Generic [skip ci]
2026-06-23 12:24:35 +00:00
jmiller
0f2c4fc238
chore: sync pr-check.yml from Template-Generic [skip ci]
2026-06-23 12:24:34 +00:00
jmiller
d0fe641d5c
chore: sync issue-branch.yml from Template-Generic [skip ci]
2026-06-23 12:24:32 +00:00
jmiller
4a2520a43b
chore: sync auto-bump.yml from Template-Generic [skip ci]
2026-06-23 12:24:30 +00:00
gitea-actions[bot]
54c3a6e2e9
chore: promote changelog [Unreleased] → [01.34.00]
2026-06-23 12:23:11 +00:00
gitea-actions[bot]
a27ec0f0b9
chore(release): build 01.34.00 [skip ci]
Publish to Composer / Publish Package (release) Failing after 6s
2026-06-23 12:23:05 +00:00
jmiller
a7c30ad67c
Merge pull request 'feat: Dashboard snapshot widget, backup trend, storage breakdown ( #61 )' ( #93 ) from feat/61-dashboard-widgets into main
2026-06-23 12:22:45 +00:00
Jonathan Miller
ee21f7a373
feat: dashboard snapshot widget, backup trend chart, storage breakdown ( #61 )
...
Generic: Repo Health / Site Health (pull_request) Has been skipped
Generic: Repo Health / Access control (pull_request) Successful in 2s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 7s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 15s
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Successful in 1s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 42s
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 25s
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 3m18s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
Add three new dashboard widgets:
- Snapshot widget: latest snapshot info, type badges, item counts,
link to snapshots view, total count
- Backup trend: CSS bar chart showing daily backup sizes over 30 days,
red bars for days with failures, tooltips with details
- Storage breakdown: horizontal bars showing space used per profile
with color coding and backup counts
Closes #61
2026-06-23 07:22:04 -05:00
gitea-actions[bot]
5c0ff72d27
chore: promote changelog [Unreleased] → [01.33.00]
2026-06-23 09:40:07 +00:00
gitea-actions[bot]
50c016d707
chore(release): build 01.33.00 [skip ci]
Publish to Composer / Publish Package (release) Failing after 4s
2026-06-23 09:40:05 +00:00
jmiller
e4de103a00
Merge pull request 'feat: Selective restore, archive browser, backup comparison + install fix ( #58 , #59 , #64 )' ( #92 ) from feat/batch-58-59-64 into main
2026-06-23 09:39:55 +00:00
Jonathan Miller
8c66fd3260
feat: backup comparison — diff two backup records ( #64 )
...
Universal: PR Check / Branch Policy (pull_request) Failing after 3s
Generic: Repo Health / Access control (pull_request) Successful in 3s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 8s
Universal: PR Check / Validate PR (pull_request) Failing after 8s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 13s
Universal: PR Check / Secret Scan (pull_request) Successful in 10s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 16s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Failing after 1s
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 3s
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 14s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
Select two backups and compare side-by-side:
- AjaxController::compareBackups() returns metadata + deltas
- Compare toolbar button (requires 2 checkboxes)
- Modal shows size, files, tables, duration differences
Closes #64
2026-06-23 04:39:00 -05:00
Jonathan Miller
4213def0ad
feat: backup archive browser — view files without extracting ( #59 )
...
AJAX-powered file browser in backups list and detail views:
- AjaxController::browseArchive() reads ZIP/tar.gz entries
- Browse button on each backup row + detail view
- Modal shows file list with names and sizes (first 500 entries)
Closes #59
2026-06-22 22:21:49 -05:00
Jonathan Miller
8a4ebe1bde
feat: selective article restore from snapshot ( #58 )
...
Browse articles inside a snapshot and restore individual items:
- SnapshotRestoreEngine::restoreSelectedArticles() merges by ID
- AjaxController::browseSnapshot() returns article list as JSON
- SnapshotsController::restoreSelected() handles selective restore
- Browse modal with checkboxes + Restore Selected button
Closes #58
2026-06-22 22:18:48 -05:00
Jonathan Miller
8ea09ee0d1
fix: convert single-line comments to block comments in script.php
...
The build pipeline strips newlines from PHP files during packaging.
Single-line comments (//) then eat everything after them on the
concatenated line, causing a FatalError on install. Block comments
(/* */) survive minification.
2026-06-22 19:38:46 -05:00
gitea-actions[bot]
d562e0dc10
chore: promote changelog [Unreleased] → [01.32.00]
2026-06-22 14:28:27 +00:00
gitea-actions[bot]
29c7e974b5
chore(release): build 01.32.00 [skip ci]
Publish to Composer / Publish Package (release) Failing after 22s
2026-06-22 14:28:22 +00:00
jmiller
6d47b70aaf
Merge pull request 'feat: Scheduled snapshots, restore notifications, stepped restore ( #56 , #60 , #62 )' ( #91 ) from feat/batch-56-60-62 into main
2026-06-22 14:28:01 +00:00
Jonathan Miller
01bed8942c
feat: AJAX stepped restore engine for large sites ( #62 )
...
Universal: PR Check / Branch Policy (pull_request) Failing after 1s
Generic: Repo Health / Access control (pull_request) Successful in 2s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 5s
Universal: PR Check / Validate PR (pull_request) Failing after 5s
Universal: PR Check / Secret Scan (pull_request) Successful in 6s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 9s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 32s
Branch Cleanup / Delete merged branch (pull_request) Successful in 3s
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 6s
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 23s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
Break restore into phases (extract, files, database, config, cleanup)
executed via AJAX steps to avoid PHP timeout on shared hosting.
- SteppedRestoreEngine with session persistence
- AjaxController restoreInit/restoreStep endpoints
- Restore modal uses AJAX progress instead of synchronous submit
- Files copied in batches of 200, SQL in batches of 500
Closes #62
2026-06-22 09:27:18 -05:00
Jonathan Miller
391047d8e5
feat: email/ntfy notifications for restore operations ( #60 )
...
Send notifications when site restores and snapshot create/restore
complete. Uses sendRestoreNotification() with type-specific subjects.
All calls wrapped in try-catch to never break the actual operation.
Closes #60
2026-06-22 09:27:16 -05:00
Jonathan Miller
5a672454ad
feat: scheduled task for automated content snapshots ( #56 )
...
Add mokosuitebackup.snapshot task type for com_scheduler with params
for content_types and description_format ([date]/[datetime] placeholders).
Closes #56
2026-06-22 09:27:14 -05:00
jmiller
ed799217bf
chore: sync repo-health.yml from Template-Generic [skip ci]
2026-06-22 00:47:57 +00:00
jmiller
5f0f958aca
chore: sync pr-check.yml from Template-Generic [skip ci]
2026-06-22 00:47:56 +00:00
jmiller
7bf42f1a89
chore: sync issue-branch.yml from Template-Generic [skip ci]
2026-06-22 00:47:56 +00:00
jmiller
a919d52cf7
chore: sync auto-bump.yml from Template-Generic [skip ci]
2026-06-22 00:47:55 +00:00
gitea-actions[bot]
a7e94467ee
chore: promote changelog [Unreleased] → [01.31.00]
2026-06-22 00:47:07 +00:00
gitea-actions[bot]
01335ac70f
chore(release): build 01.31.00 [skip ci]
Publish to Composer / Publish Package (release) Failing after 26s
2026-06-22 00:47:04 +00:00
jmiller
35b7e2a0b8
Merge pull request 'feat: CLI snapshots, auto-verify integrity, snapshot REST API ( #55 , #65 , #54 )' ( #90 ) from feat/batch-55-65-54 into main
2026-06-22 00:46:52 +00:00
Jonathan Miller
c72e950a25
feat: REST API endpoints for content snapshots ( #54 )
...
Universal: PR Check / Branch Policy (pull_request) Failing after 2s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 6s
Universal: PR Check / Validate PR (pull_request) Failing after 6s
Universal: PR Check / Secret Scan (pull_request) Successful in 10s
Generic: Repo Health / Access control (pull_request) Successful in 1s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 15s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Successful in 2s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 39s
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 17s
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 1m49s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
Add five endpoints matching the existing backup API pattern:
- GET /snapshots — list with pagination
- POST /snapshot — create (content_types, description)
- POST /snapshot/:id/restore — restore (mode, content_types)
- DELETE /snapshot/:id — delete record + file
- GET /snapshot/:id/download — stream JSON file
ACL: mokosuitebackup.snapshot.manage for write ops, core.manage for read.
Routes registered in webservices plugin alongside backup routes.
Closes #54
2026-06-21 19:46:07 -05:00
Jonathan Miller
5dcba6d8cb
feat: auto-verify backup integrity after creation ( #65 )
...
After archive is created and checksum computed, automatically verify:
- Archive opens without error
- Contains at least one entry
- database.sql present when backup type includes database
- First entry is readable (spot-check)
Applied to both BackupEngine and SteppedBackupEngine. Throws
RuntimeException on verification failure (backup marked as failed).
Closes #65
2026-06-21 19:45:46 -05:00
Jonathan Miller
0638c2cef6
feat: CLI command for content snapshots ( #55 )
...
Add `mokosuitebackup:snapshot` command with four actions:
- create: --types=articles,categories,modules --description="text"
- restore: --id=N --mode=replace|merge --types=articles
- list: displays table of all snapshots
- delete: --id=N removes file + DB record
Closes #55
2026-06-21 19:45:09 -05:00
jmiller
fc0c1b05a6
chore: sync repo-health.yml from Template-Generic [skip ci]
2026-06-22 00:35:41 +00:00
jmiller
3547667158
chore: sync pr-check.yml from Template-Generic [skip ci]
2026-06-22 00:35:40 +00:00
jmiller
b882e8ba90
chore: sync issue-branch.yml from Template-Generic [skip ci]
2026-06-22 00:35:39 +00:00
jmiller
db2beef189
chore: sync auto-release.yml from Template-Generic [skip ci]
2026-06-22 00:35:37 +00:00
jmiller
b0629f9f30
chore: sync auto-bump.yml from Template-Generic [skip ci]
2026-06-22 00:35:37 +00:00
gitea-actions[bot]
b3d955e1a8
chore: promote changelog [Unreleased] → [01.30.00]
2026-06-22 00:34:05 +00:00
gitea-actions[bot]
f5e8d0fe03
chore(release): build 01.30.00 [skip ci]
Publish to Composer / Publish Package (release) Failing after 34s
2026-06-22 00:34:02 +00:00
jmiller
5815a65a39
Merge pull request 'feat: Snapshot retention, extended snapshots, graceful remote degradation ( #63 , #57 , #66 )' ( #89 ) from feat/batch-63-57-66 into main
2026-06-22 00:33:51 +00:00
Jonathan Miller
ad1c0cf349
fix: scope #__fields_values dump and restore to com_content.article
...
Universal: PR Check / Branch Policy (pull_request) Failing after 1s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 4s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Generic: Repo Health / Access control (pull_request) Successful in 2s
Universal: PR Check / Validate PR (pull_request) Failing after 5s
Universal: PR Check / Secret Scan (pull_request) Successful in 7s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 11s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 28s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Successful in 1s
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 17s
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 2m55s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
The fields_values table is shared across all Joomla extensions.
Previously, dump captured ALL field values and restore deleted ALL
field values, destroying data for contacts, users, and other
extensions. Now scoped via subquery on field_id WHERE context =
'com_content.article'.
2026-06-21 19:32:23 -05:00
Jonathan Miller
8b6e260b28
fix: graceful degradation when remote upload fails ( #66 )
...
Universal: PR Check / Branch Policy (pull_request) Failing after 2s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 5s
Generic: Repo Health / Access control (pull_request) Successful in 2s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Universal: PR Check / Validate PR (pull_request) Failing after 9s
Universal: PR Check / Secret Scan (pull_request) Successful in 11s
Branch Cleanup / Delete merged branch (pull_request) Has been skipped
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Has been skipped
Universal: Auto Version Bump / Version Bump (push) Successful in 11s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 44s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 47s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 17s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Universal: Build & Release / Build & Release Pipeline (pull_request) Has been skipped
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been cancelled
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been cancelled
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been cancelled
Joomla: Extension CI / Build RC Pre-Release (pull_request) Has been cancelled
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
Universal: PR Check / Report Issues (pull_request) Has been cancelled
Generic: Repo Health / Scripts governance (pull_request) Has been cancelled
Generic: Repo Health / Repository health (pull_request) Has been cancelled
Generic: Repo Health / Report Issues (pull_request) Has been cancelled
Remote upload failure (S3/FTP/GDrive) no longer marks the entire
backup as failed. The local archive is preserved with status
'complete' and the upload failure is logged as a warning. Applies
to both BackupEngine and SteppedBackupEngine.
Closes #66
2026-06-21 19:09:20 -05:00
Jonathan Miller
eb7f48d3a2
feat: extend snapshots to include custom fields and tags ( #57 )
...
When articles are included in a snapshot, now also captures:
- #__tags (tag definitions)
- #__fields (custom field definitions for com_content.article)
- #__fields_values (custom field values)
- #__fields_categories (field-to-category mappings)
Restore correctly scopes deletes to avoid touching non-content fields.
Closes #57
2026-06-21 19:08:53 -05:00
Jonathan Miller
974b971340
feat: snapshot retention and automatic cleanup ( #63 )
...
Add retention settings for content snapshots (max count, max age days)
in component options. System plugin runs cleanupOldSnapshots() alongside
existing backup cleanup, deleting JSON files and DB records.
Closes #63
2026-06-21 19:08:27 -05:00