Commit Graph

855 Commits

Author SHA1 Message Date
gitea-actions[bot] cd15dddc3f chore: update release-candidate channel 02.01.39 [skip ci] 2026-05-23 20:45:16 +00:00
gitea-actions[bot] b98c2e0b6e chore(version): bump to 02.01.39 [skip ci] 2026-05-23 20:45:15 +00:00
jmiller 14a96eeb60 fix: sync manifest to 02.01.38 [skip ci] 2026-05-23 20:44:31 +00:00
gitea-actions[bot] 177f233edb chore: update release-candidate channel 02.01.38 [skip ci] 2026-05-23 20:27:27 +00:00
gitea-actions[bot] e01ed29bad chore(version): bump to 02.01.38 [skip ci] 2026-05-23 20:27:26 +00:00
jmiller 448592440a fix: sync manifest version to 02.01.37 [skip ci] 2026-05-23 20:26:28 +00:00
jmiller 474430ebba fix: sync version to 02.01.37 [skip ci] 2026-05-23 20:26:28 +00:00
gitea-actions[bot] 28faea267c chore: update release-candidate channel 02.01.36 [skip ci] 2026-05-23 20:24:28 +00:00
gitea-actions[bot] 46d5bd0841 chore(version): bump to 02.01.36 [skip ci] 2026-05-23 20:24:27 +00:00
jmiller 1553289af1 chore: update stable channel 02.01.37 [skip ci] 2026-05-23 19:56:11 +00:00
jmiller 5164edaf7f Merge pull request 'feat: health endpoint with 16 diagnostic checks (#54)' (#23) from dev into main
Universal: Cascade Main → Dev / Cascade main → branches (push) Successful in 2s
2026-05-23 19:49:39 +00:00
jmiller 665582b913 fix(ci): add branch output to auto-release [skip ci] 2026-05-23 19:47:53 +00:00
Jonathan Miller f2e1dfe114 docs: update CHANGELOG and README for 02.01.37 release
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
Joomla: Extension CI / Release Readiness Check (pull_request) Failing after 3s
Joomla: Extension CI / Lint & Validate (pull_request) Failing after 3s
Universal: PR Check / Validate PR (pull_request) Failing after 4s
Universal: Secret Scanning / Gitleaks Secret Scan (pull_request) Successful in 4s
Universal: PR Check / Changelog Updated (pull_request) Successful in 4s
Joomla: Extension CI / Tests (PHP 8.2) (pull_request) Has been skipped
Joomla: Extension CI / Tests (PHP 8.3) (pull_request) Has been skipped
Joomla: Extension CI / PHPStan Analysis (pull_request) Has been skipped
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-23 02:09:01 -05:00
jmiller 0357364908 Merge pull request 'chore: cascade main → dev (e7de6e4) [skip ci]' (#22) from main into dev
chore: cascade main → dev [skip ci]
2026-05-23 05:09:28 +00:00
Jonathan Miller e7de6e4c9a Revert "Merge remote-tracking branch 'origin/dev'"
Universal: Cascade Main → Dev / Cascade main → branches (push) Successful in 3s
This reverts commit b27ef3aee3, reversing
changes made to c4d8381828.
2026-05-23 00:09:22 -05:00
jmiller c08efa81fe chore: sync updates.xml 02.01.37 from main [skip ci] 2026-05-23 05:02:16 +00:00
gitea-actions[bot] ea16fd92d7 chore: update release-candidate channel 02.01.37 [skip ci] 2026-05-23 05:02:15 +00:00
gitea-actions[bot] 0f446709b8 chore(version): bump to 02.01.37 [skip ci] 2026-05-23 05:02:15 +00:00
jmiller 3817d7ed13 Merge pull request 'chore: cascade main → dev (b27ef3a) [skip ci]' (#21) from main into dev
chore: cascade main → dev [skip ci]
2026-05-23 04:57:00 +00:00
Jonathan Miller b27ef3aee3 Merge remote-tracking branch 'origin/dev'
Universal: Cascade Main → Dev / Cascade main → branches (push) Successful in 2s
2026-05-22 23:56:45 -05:00
gitea-actions[bot] 030423a16d chore: update development channel 02.01.36 [skip ci] 2026-05-23 04:42:48 +00:00
jmiller c4d8381828 chore: sync updates.xml 02.01.36 from dev [skip ci] 2026-05-23 04:42:48 +00:00
gitea-actions[bot] 590e1eb385 chore(version): bump to 02.01.36 [skip ci] 2026-05-23 04:42:46 +00:00
Jonathan Miller f1f2785f0f feat: add 10 new health checks — SSL, cron, errors, DB size, content, users, mail, SEO, template, config
New checks:
- ssl: certificate expiry, days left, issuer
- cron: scheduled tasks, failed count, last run
- errors: PHP error log size, recent errors
- db_size: total MB, table count, largest tables
- content: articles, categories, menu items, modules
- users: total, active sessions, failed logins, last login
- mail: mailer type, from address, queue count
- seo: robots.txt, sitemap, htaccess, SEF
- template: site/admin template, override count
- config: debug mode, error reporting, force SSL, caching

Degraded reasons for SSL expiry, failed cron tasks, config drift.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 23:23:19 -05:00
Jonathan Miller 138af226d1 feat: add site size and total disk to filesystem health check
Reports total_disk_mb and site_size_mb (images, media, tmp, cache, logs).
Shows in Infrastructure table on Grafana dashboard.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 23:13:20 -05:00
Jonathan Miller 17eaaf2347 feat: add Akeeba Backup and Admin Tools checks to health endpoint
New health checks:
- backup: last backup date/status/size, days since, total count, 7d count
- security: Admin Tools WAF status, blocked requests 24h/7d

Degraded reasons:
- No backups found
- Last backup older than 7 days
- Last backup failed/incomplete

Dashboard updated with Backup and Security rows.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 22:43:41 -05:00
Jonathan Miller 21020027d0 feat: add human-readable reason field to health endpoint
Status 'degraded' now includes reason like '3 extension updates available'
or 'Low disk space: 45 MB free'. Shows in dashboard Site Info table.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 22:00:33 -05:00
jmiller fa4622c0ca Merge pull request 'chore: cascade main → dev (a45a6cb) [skip ci]' (#20) from main into dev
chore: cascade main → dev [skip ci]
2026-05-23 01:15:04 +00:00
Jonathan Miller 0d280717f1 Revert "Merge pull request 'chore: merge dev to main' (#19) from dev into main"
Universal: Cascade Main → Dev / Cascade main → branches (push) Successful in 1s
This reverts commit a45a6cb59c, reversing
changes made to 018b197147.
2026-05-22 20:12:46 -05:00
jmiller a45a6cb59c Merge pull request 'chore: merge dev to main' (#19) from dev into main
Universal: Cascade Main → Dev / Cascade main → branches (push) Successful in 2s
2026-05-23 01:10:42 +00:00
gitea-actions[bot] 8edced75d3 chore: update development channel 02.01.39 [skip ci]
Universal: Build & Release / Build & Release Pipeline (pull_request) Failing after 25s
2026-05-23 01:08:12 +00:00
jmiller 018b197147 chore: sync updates.xml 02.01.39 from dev [skip ci] 2026-05-23 01:08:12 +00:00
gitea-actions[bot] 142ee2387e chore(version): bump to 02.01.39 [skip ci] 2026-05-23 01:08:10 +00:00
Jonathan Miller ea66ad4b4a security: hide MokoWaaS from plugin list for non-master users
Injects JS on com_plugins that removes the MokoWaaS row from the
plugin table. Combined with the edit/save block, non-master users
cannot see, edit, or save the plugin settings.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 05:53:14 -05:00
Jonathan Miller 48cb040505 security: restrict plugin settings to master user + rename Gitea to MokoGitea
- Non-master users blocked from editing MokoWaaS plugin config
- isOurPlugin() helper checks extension_id against our plugin
- Blocks both edit view and save task for non-master users
- Renamed bare 'Gitea' references to 'MokoGitea' in docs

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 05:51:20 -05:00
jmiller 8df006876b chore: sync updates.xml 02.01.38 from dev [skip ci] 2026-05-22 09:57:19 +00:00
gitea-actions[bot] aec849c9ae chore: update development channel 02.01.38 [skip ci] 2026-05-22 09:57:19 +00:00
gitea-actions[bot] d3281066dc chore(version): bump to 02.01.38 [skip ci] 2026-05-22 09:57:18 +00:00
Jonathan Miller b17b36e02e security: make plugin hard to disable + block uninstall
- enforceLocked() runs every page load — re-enables, re-locks, re-protects
  if someone tampers with the database flags
- preflight() blocks uninstall attempts with error message
- Logs tampering attempts to mokowaas log category

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 04:56:48 -05:00
jmiller cb6d19ece8 chore: sync updates.xml 02.01.37 from dev [skip ci] 2026-05-22 09:41:25 +00:00
gitea-actions[bot] 5020b58da1 chore: update development channel 02.01.37 [skip ci] 2026-05-22 09:41:24 +00:00
gitea-actions[bot] c97432495b chore(version): bump to 02.01.37 [skip ci] 2026-05-22 09:41:23 +00:00
Jonathan Miller b22842f302 refactor: replace Grafana API with heartbeat receiver provisioning
Remove all Grafana API code (630 lines), obfuscated tokens, SA tokens,
ensureGrafanaPlugin, provisionGrafanaDatasource, buildDashboardModel.

Replace with simple HTTP POST to heartbeat receiver on bench server.
Receiver writes Grafana provisioning YAML and restarts Grafana container.
No API tokens or RBAC permissions needed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 04:40:51 -05:00
jmiller 6a186ed365 chore: sync updates.xml 02.01.36 from dev [skip ci] 2026-05-22 04:02:26 +00:00
gitea-actions[bot] 42d530bfbf chore: update development channel 02.01.36 [skip ci] 2026-05-22 04:02:26 +00:00
gitea-actions[bot] 307dc37d47 chore(version): bump to 02.01.36 [skip ci] 2026-05-22 04:02:25 +00:00
Jonathan Miller 2e4fdcb07e fix: new Grafana SA token with datasource:create + visible heartbeat errors
- New service account token with correct RBAC permissions
- script.php postflight now shows success/failure messages to admin
- Logs all heartbeat attempts with HTTP code and cURL errors

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-21 23:01:33 -05:00
Jonathan Miller 0ec18b9868 Merge remote-tracking branch 'origin/dev'
Universal: Cascade Main → Dev / Cascade main → branches (push) Successful in 3s
2026-05-21 22:52:14 -05:00
Jonathan Miller e3f4890e5d docs: update CHANGELOG for production release 02.01.35 [skip ci]
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-21 22:51:13 -05:00
jmiller 6e81585177 chore: sync updates.xml 02.01.35 from dev [skip ci] 2026-05-22 03:49:22 +00:00