gitea-actions[bot]
ce99cebf80
chore(version): auto-bump patch 01.25.03-dev [skip ci]
2026-06-21 22:36:12 +00:00
Jonathan Miller
0a4f896f31
Merge remote-tracking branch 'origin/feature/47-backup-status-helper' into feature/47-backup-status-helper
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
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 6s
Universal: PR Check / Secret Scan (pull_request) Successful in 6s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 9s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 12s
RC Revert / Rename rc/ back to dev/ (pull_request) Has been skipped
Branch Cleanup / Delete merged branch (pull_request) Failing after 2s
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 3s
Universal: Auto Version Bump / Version Bump (push) Successful in 8s
Universal: Build & Release / Promote to RC (pull_request) Has been skipped
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 15s
2026-06-21 17:32:53 -05:00
Jonathan Miller
8d67dfbc42
Merge remote-tracking branch 'origin/main' into feature/47-backup-status-helper
...
# Conflicts:
# .mokogitea/workflows/issue-branch.yml
# .mokogitea/workflows/pr-check.yml
# README.md
# mokosuitebackup.xml
# 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-21 17:29:58 -05:00
gitea-actions[bot]
c2a88a898d
chore(version): auto-bump patch 01.25.02-dev [skip ci]
2026-06-21 22:22:40 +00:00
Jonathan Miller
d5421738b7
fix: address PR review findings — error handling and safety
...
Generic: Project CI / Tests (pull_request) Blocked by required conditions
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 / Release Readiness Check (pull_request) Failing after 4s
Universal: Secret Scanning / Gitleaks Secret Scan (pull_request) Successful in 9s
Universal: PR Check / Validate PR (pull_request) Failing after 6s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Generic: Repo Health / Access control (pull_request) Successful in 2s
Universal: Auto Version Bump / Version Bump (push) Successful in 14s
Generic: Project CI / Lint & Validate (pull_request) Successful in 44s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 49s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 51s
Fixes from code review and silent failure audit:
- SnapshotRestoreEngine: catch only duplicate key errors (MySQL 1062)
in merge mode, re-throw all other exceptions instead of swallowing
- SnapshotRestoreEngine: add json_last_error() check for better error
messages on corrupt snapshot files
- SnapshotRestoreEngine: log warnings when set_time_limit/ini_set fail
- SnapshotEngine: use strlen($json) instead of filesize() to avoid
race conditions; catch \Exception instead of \Throwable
- SnapshotsController: remove @unlink suppression, add try-catch
around delete loop with partial failure reporting
- script.php: add user-facing warning when webcron secret generation
fails (was silently swallowed, inconsistent with other catch blocks)
2026-06-21 17:21:55 -05:00
jmiller
1962e39032
chore: sync auto-release.yml from Template-Generic [skip ci]
2026-06-21 22:03:24 +00:00
Jonathan Miller
658ed77090
Merge remote-tracking branch 'origin/feature/47-backup-status-helper' into feature/47-backup-status-helper
2026-06-21 16:59:54 -05:00
Jonathan Miller
3bd103f0af
chore: normalize CRLF in workflow files
2026-06-21 16:59:54 -05:00
Jonathan Miller
854383a899
fix: scope module DELETE to snapshot IDs in replace mode
...
The truncateFiltered() method ran unfiltered DELETE FROM #__modules
in replace mode, which would wipe ALL site modules (admin toolbar,
login, menus) — not just the ones in the snapshot. Now scoped to
only delete modules whose IDs exist in the snapshot data.
Also scopes #__modules_menu delete to snapshot module IDs, and adds
defense-in-depth validation of restore_mode in the controller.
2026-06-21 15:50:41 -05:00
gitea-actions[bot]
43c73d20e8
chore(version): auto-bump patch 01.25.01-dev [skip ci]
2026-06-21 20:30:09 +00:00
Jonathan Miller
ef31713029
feat: content snapshots, restore UI, and config hardening (v01.25.00)
...
Universal: Auto Version Bump / Version Bump (push) Successful in 10s
Add content snapshot system for lightweight article/category/module
versioning independent of full backups. Snapshots store as JSON files
with replace or merge restore modes, wrapped in DB transactions.
- SnapshotEngine: dumps articles, categories, modules + related tables
(workflow_associations, tag maps, frontpage) to JSON
- SnapshotRestoreEngine: replace (clean slate) or merge (upsert) mode
- Full MVC: controller, models, view, template with create/restore modals
- New ACL permission: mokosuitebackup.snapshot.manage
- Submenu entry with camera icon, upgrade SQL for snapshots table
Improve full-site restore UI with confirmation modal offering options
for files, database, preserve config, and encryption password.
Config improvements:
- WebcronSecretField: CSPRNG generator, strength meter, rejects weak
patterns (password, admin, secret), enforces min 16 chars
- IpWhitelistField: table-based management, current IP detection with
one-click "Add my IP" button
- Default profile shows "Title (#ID)" format
- Default backup dir uses [DEFAULT_DIR] placeholder
- Install script generates random 32-char webcron secret
- Dashboard quick actions: full-width dropdown with button below
2026-06-21 15:25:53 -05:00
jmiller
4c1615e337
chore: sync pre-release.yml from Template-Generic [skip ci]
2026-06-21 16:06:03 +00:00
jmiller
26a13ef692
chore: sync composer-publish.yml from Template-Generic [skip ci]
2026-06-21 06:35:25 +00:00
jmiller
f55836df0d
chore: sync workflow-sync-trigger.yml from Template-Generic [skip ci]
2026-06-21 01:29:19 +00:00
jmiller
680e242465
chore: sync auto-release.yml from Template-Generic [skip ci]
2026-06-21 01:29:18 +00:00
jmiller
e2b12ef313
ci: sync rc-revert.yml from Template-Joomla [skip ci]
2026-06-21 00:15:06 +00:00
jmiller
d1ca1d8e48
ci: sync issue-branch.yml from Template-Joomla [skip ci]
2026-06-21 00:14:37 +00:00
jmiller
b2f8ae8b1f
ci: sync ci-joomla.yml from Template-Joomla [skip ci]
2026-06-21 00:14:13 +00:00
jmiller
3d84e8079f
chore: sync repo-health.yml from Template-Generic [skip ci]
2026-06-20 23:47:05 +00:00
jmiller
cb68071155
chore: sync pr-check.yml from Template-Generic [skip ci]
2026-06-20 23:47:04 +00:00
jmiller
eeba315a0d
chore: sync issue-branch.yml from Template-Generic [skip ci]
2026-06-20 23:47:04 +00:00
jmiller
91bc675ea7
chore: sync gitleaks.yml from Template-Generic [skip ci]
2026-06-20 23:47:03 +00:00
jmiller
1b042311fb
chore: sync ci-generic.yml from Template-Generic [skip ci]
2026-06-20 23:47:02 +00:00
jmiller
b4927163a6
chore: sync auto-bump.yml from Template-Generic [skip ci]
2026-06-20 23:47:01 +00:00
gitea-actions[bot]
571c0a7143
chore: promote changelog [Unreleased] → [01.25.00]
Universal: Auto Version Bump / Version Bump (push) Successful in 8s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Failing after 8s
2026-06-20 23:31:25 +00:00
gitea-actions[bot]
2d7359cefd
chore(release): build 01.25.00 [skip ci]
2026-06-20 23:31:22 +00:00
jmiller
c828c46a4b
Merge pull request 'feat: add BackupStatusHelper for bridge integration' ( #53 ) from feature/47-backup-status-helper into main
2026-06-20 23:31:11 +00:00
gitea-actions[bot]
38a98e5ea3
chore(version): auto-bump patch 01.24.01-dev [skip ci]
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 2s
Universal: Workflow Sync Trigger / Sync workflows to live repos (pull_request) Failing after 4s
Universal: Build & Release / Build & Release Pipeline (pull_request) Successful in 14s
2026-06-20 23:31:10 +00:00
Jonathan Miller
a5a2f48e7c
feat: add BackupStatusHelper for bridge integration ( #47 )
...
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 1s
Generic: Repo Health / Site Health (pull_request) Has been skipped
Universal: Secret Scanning / Gitleaks Secret Scan (pull_request) Successful in 9s
Universal: PR Check / Validate PR (pull_request) Failing after 6s
Universal: Auto Version Bump / Version Bump (push) Successful in 15s
Joomla: Metadata Validation / Validate Joomla Metadata (pull_request) Successful in 13s
Generic: Project CI / Lint & Validate (pull_request) Successful in 32s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 35s
Generic: Project CI / Tests (pull_request) Has been cancelled
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
Static helper class for external consumers (bridge plugins, MCP servers)
to query backup status without bootstrapping the full component.
Methods:
- isInstalled(): check if MokoSuiteBackup is installed and enabled
- getLatestRecord(): get the most recent completed/failed backup
- getStatusSummary(): full heartbeat payload with latest status,
all-time/7-day totals, and consecutive success streak
2026-06-20 18:30:54 -05:00
jmiller
70f25f6e79
chore: sync repo-health.yml from Template-Generic [skip ci]
2026-06-20 22:30:30 +00:00
jmiller
26dd5cf5c2
chore: sync rc-revert.yml from Template-Generic [skip ci]
2026-06-20 22:30:29 +00:00
jmiller
b754542254
chore: sync pr-check.yml from Template-Generic [skip ci]
2026-06-20 22:30:28 +00:00
jmiller
3942fa4661
chore: sync cleanup.yml from Template-Generic [skip ci]
2026-06-20 22:30:28 +00:00
jmiller
0764697086
ci: sync security-audit.yml from Template-Joomla [skip ci]
2026-06-20 22:26:32 +00:00
jmiller
f7767b76dd
ci: sync repo-health.yml from Template-Joomla [skip ci]
2026-06-20 22:26:04 +00:00
jmiller
37c003a97a
ci: sync rc-revert.yml from Template-Joomla [skip ci]
2026-06-20 22:25:54 +00:00
jmiller
3c5460559b
ci: sync pr-check.yml from Template-Joomla [skip ci]
2026-06-20 22:24:48 +00:00
jmiller
e433314e42
ci: sync issue-branch.yml from Template-Joomla [skip ci]
2026-06-20 22:22:22 +00:00
jmiller
db3beae7d3
ci: sync cleanup.yml from Template-Joomla [skip ci]
2026-06-20 22:15:38 +00:00
jmiller
734a5326e5
chore: sync ci-generic.yml from Template-Generic [skip ci]
2026-06-20 21:35:49 +00:00
jmiller
6c48a6a777
ci: sync ci-generic.yml from Template-Joomla [skip ci]
2026-06-20 21:34:03 +00:00
jmiller
4e4e608f89
ci: sync cascade-dev.yml from Template-Joomla [skip ci]
2026-06-20 21:31:35 +00:00
jmiller
2c17b07835
ci: sync branch-cleanup.yml from Template-Joomla [skip ci]
2026-06-20 21:28:11 +00:00
jmiller
ea17d81e5e
ci: sync auto-release.yml from Template-Joomla [skip ci]
2026-06-20 21:26:58 +00:00
jmiller
58080a5ad7
chore: sync workflow-sync-trigger.yml from Template-Generic [skip ci]
2026-06-20 20:54:09 +00:00
jmiller
e8f054ddae
chore: sync issue-branch.yml from Template-Generic [skip ci]
2026-06-20 20:54:08 +00:00
jmiller
21bcf479cc
ci: sync ci-generic.yml from Template-Joomla [skip ci]
2026-06-20 20:35:06 +00:00
jmiller
695b9e0be5
ci: sync cascade-dev.yml from Template-Joomla [skip ci]
2026-06-20 20:32:53 +00:00
jmiller
8fc7616d4d
ci: sync branch-cleanup.yml from Template-Joomla [skip ci]
2026-06-20 20:31:55 +00:00
jmiller
afe766302a
ci: sync auto-release.yml from Template-Joomla [skip ci]
2026-06-20 20:31:01 +00:00